В моем одном из установщиков MSI я обновляю путь сравнения и сборки ссылки проекта. Все все сборки ссылок внутри папки моего приложения.Какой правильный подход для ссылки на сборку в файле csproj?
Я пытаюсь реализовать как относительный путь, так и абсолютный путь. Оба работают нормально.
Относительный путь
<Reference Include="log4net">
<HintPath>..\..\..\..\log4net.dll</HintPath>
</Reference>
Абсолютный путь
<Reference Include="log4net">
<HintPath>C:\Program files\Myapplication\log4net.dll</HintPath>
</Reference>
Я только видел абсолютную ссылку пути, когда я беру ссылку на сборку из пути ссылки на сборки или GAC файлов.
C:\Program Files (x86)\Reference Assemblies
<Reference Include="System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0\System.Management.Automation.dll</HintPath>
</Reference>
Какой из них правильный подход к обновлению пути в .Csproj
файл?
Похоже, Visual Studio принимает переменную окружения, так что вы можете сказать ' $ (ProgramFiles) \ MyApplication \ log4net.dll ', если вы хотите абсолютный путь. Преимущество состоит в том, что если имя папки локализовано (которое находится в неанглийских версиях Windows) или содержит суффикс '(x86), он все равно должен работать. Тем не менее, я не знаю, поддерживаются ли другие инструменты, кроме Visual Studio, с переменными окружения в пути подсказки. –