Я пытаюсь создать пакет NuGet, который включает в себя собственные библиотеки DLL, которые должны быть помещены в выходную папку, когда проект использует пакет.Я попытался использовать несколько предложений из этого вопроса , но я всегда работаю с одной и той же проблемой.
Моя текущая компоновка пакета NuGet выглядит следующим образом:
\build
packageId.targets
file1.dll
file2.dll
\lib
\netstandard1.4
assembly.dll
Содержимое packageId.targets
:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<NativeLibs Include="$(MSBuildThisFileDirectory)\*.dll"/>
<None Include="@(NativeLibs)" Link="$(RecursiveDir)$(Filename)$(Extension)">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
Это, в соответствии с ответами на другие вопросы, может привести к тому, что мои DLL-библиотеки будут помещены в каталог bin\Debug
проекта с помощью пакета.Однако это не так.Вместо этого они помещаются в bin\Debug\packages\packageId\build
.
Теперь я много экспериментировал и заметил все более и более странное поведение, которое я не могу понять:
- Если япереместите библиотеки DLL в корень пакета NuGet (как предлагает один ответ) и соответственно измените файл
.targets
, они вообще не копируются .Там также нет сообщения об ошибке. - Если я изменю файл
.targets
на только ссылка file1.dll
в обоих Include=
и Link=
, оба файла будут скопированы в любом случае. - Так что мне было интересно, если какая-то политика просто игнорирует файл
.targets
и копирует все, что находится в build
, в этот путь в выходной папке, но когда я удаляю файл .targets
, файлы DLL не получаткопировать больше.
Теперь я еще меньше понимаю, что происходит.
Что мне нужно изменить, чтобы скопировать библиотеки DLL прямо в bin\Debug
?