Мой проект .NET зависит от набора собственных библиотек dll, которые должны быть скопированы в тот же каталог, что и файл .exe. Файлы Dll добавляются в основной проект в папку «ExternalDependencies» и копируются в выходную папку после пользовательских действий после сборки.
Когда я публикую свое приложение с помощью утилиты ClickOnce, все библиотеки помещаются в ExternalDependencies / относительный путь, а не в тот же каталог, что и exe.
Я не хочу помещать библиотеки в корень проекта, но мне нужно найти способ изменить относительный путь во время установки.
Я не нашел способа сделать это, кроме генерации манифеста вручную: https://msdn.microsoft.com/en-us/library/xc3tc5xx.aspx
Может я что-то упустил? Есть ли более простой способ сделать это?
Ок, разобрался. Этот пост в блоге описывает скрытые возможности файлов проекта, которые позволяют делать то, что я хочу: http://blogs.msdn.com/b/mwade/archive/2008/06/29/how-to-publish-files-which-are-not-in-the-project.aspx
По сути, вы должны добавить элемент в ваш проектный файл для каждого файла, который вы будете развертывать, если вам нужен собственный путь к нему:
<ItemGroup>
<PublishFile Include="ExternalDependencies\DSAPI.dll">
<Visible>False</Visible>
<Group>
</Group>
<TargetPath>DSAPI.dll</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>File</FileType>
</PublishFile>
TargetPath
собственность это то, что я искал. Жаль, что вы не можете изменить его с VS UI!