Я изучаю NuGet. Я уверен, что это не редкая задача. У меня есть некоторые родные DLL, которые должны быть добавлены к окончательному выводу. Всего 25 dll, но только 7 из них могут быть добавлены как ссылки напрямую.
В настоящее время у меня есть пакет NuGet, который добавляет 7 ссылок напрямую, используя следующую структуру:
build
x64
reference1.dll
...
reference7.dll
TheOthers1.dll
...
TheOthers20.dll
MyPackage.targets
lib
net472
reference1.dll
reference2.dll
reference3.dll
reference4.dll
reference5.dll
reference6.dll
reference7.dll
Файл моих целей выглядит так:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<NativeLibs Include="$(MSBuildThisFileDirectory)**\*.dll" />
<None Include="@(NativeLibs)">
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
Результат моего проекта выглядит следующим образом:
bin/Debug
Reference1.dll
...
Reference7.dll
x64
reference1.dll
...
reference7.dll
TheOthers1.dll
...
TheOthers20.dll
Когда я запускаю приложение, я получаю:
System.IO.FileNotFoundException: «Не удалось загрузить файл или сборку« reference1.dll »или одну из ее зависимостей. Указанный модуль не найден. '
Если я вручную скопирую DLL из папки x64 в папку bin / Debug, приложение запустится.
Как мне структурировать файл .targets, чтобы скопировать все dll, которые есть в build / x64, в bin / Debug или bin / release?