У меня есть проект WCF с библиотекой служб и консольным приложением для самостоятельного размещения. Для приложения-службы требуются управляемые и неуправляемые библиотеки, которые я включаю, используя NuGet на основе этого ответа SO, Где разместить dll для неуправляемых библиотек?
Это прекрасно работает при независимом тестировании библиотеки - все библиотеки правильно копируются в выходную папку библиотеки служб. Однако при сборке консольного приложения неуправляемая dll не копируется в выходную папку консольного приложения и происходит сбой приложения во время выполнения.
Вопрос : Как я могу получить неуправляемую DLL, которая будет поднята / скопирована в любое приложение, в котором размещена библиотека сервиса? Я знаю, что могу сделать это вручную, но мне бы хотелось автоматизированное решение, так как я, по крайней мере, добавлю хостинг IIS и не хочу рисковать, забывая копировать каждый раз при сборке.
Вот мой файл .nuspec:
<?xml version="1.0"?>
<package>
<metadata>
<id>XyzLibrary</id>
<version>1.0.0</version>
<authors>Authors</authors>
<description>Description</description>
<releaseNotes>Notes</releaseNotes>
</metadata>
<files>
<file src="XyzLibraryNet.dll" target="lib\net461\"/>
<file src="XyzLibrary.dll" target="unmanaged"/>
<file src="build\XyzLibrary.targets" target="build" />
</files>
</package>
А вот и файл .targets:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="CopyMyPackageFiles" AfterTargets="AfterBuild">
<ItemGroup>
<MyPackageFiles Include="$(MSBuildProjectDirectory)..\unmanaged\*.*"/>
</ItemGroup>
<Copy SourceFiles="@(MyPackageFiles)" DestinationFolder="$(OutputPath)">
</Copy>
</Target>
</Project>