Включить неуправляемую DLL из пакета Nuget в пакет веб-развертывания
Вы можете добавить другую цель после цели AfterBuild
в свой пакет NuGet, чтобы динамически включать эти неуправляемые файлы DLL в файл проекта, или просто добавить цель в файл проекта.
Для этого добавьте цель с целевым порядком AfterTargets="AfterBuild"
в свой пакет NuGet:
<Target Name="AddUnmanagedDll" AfterTargets="AfterBuild">
<ItemGroup>
<Content Include="$(OutputPath)\*.dll" />
</ItemGroup>
</Target>
Но эта цель добавит все DLL-файлы, включая управляемые DLL-файлы. Чтобы решить эту проблему, нам нужно изменить предыдущую цель AfterBuild, чтобы добавить еще одну задачу копирования для копирования этих неуправляемых DLL-файлов в отдельную папку:
<Target Name="AfterBuild" DependsOnTargets="CopyFilesToOutputDirectory">
<ItemGroup>
<MyPackageSourceFile Include="$(SolutionDir)packages\somepackage\unmanaged\*.dll" />
</ItemGroup>
<Copy SourceFiles="@(MyPackageSourceFile)" DestinationFolder="$(OutputPath)" />
<Copy SourceFiles="@(MyPackageSourceFile)" DestinationFolder="$(ProjectDir)UnmanagedDll" />
</Target>
После добавьте еще одну задачу копирования <Copy SourceFiles="@(MyPackageSourceFile)" DestinationFolder="$(ProjectDir)UnmanagedDll" />
, чтобы скопировать неуправляемые dll-файлы в отдельную папку $(ProjectDir)UnmanagedDll
.
Затем мы могли бы изменить ItemGroup <Content Include="$(OutputPath)\*.dll" />
в целевом объекте AddUnmanagedDll
на <Content Include="UnmanagedDll\*.dll" />
.
Таким образом, цели в пакете NuGet должны быть:
<Target Name="AfterBuild" DependsOnTargets="CopyFilesToOutputDirectory">
<ItemGroup>
<MyPackageSourceFile Include="$(SolutionDir)packages\app.1.0.0\unmanaged\*.dll" />
</ItemGroup>
<Copy SourceFiles="@(MyPackageSourceFile)" DestinationFolder="$(OutputPath)" />
<Copy SourceFiles="@(MyPackageSourceFile)" DestinationFolder="$(ProjectDir)UnmanagedDll" />
</Target>
<Target Name="AddUnmanagedDll" AfterTargets="AfterBuild">
<ItemGroup>
<Content Include="UnmanagedDll\*.dll" />
</ItemGroup>
</Target>
После публикации проекта неуправляемые включаются в пакет веб-развертывания:
![введите здесь описание изображения](https://i.stack.imgur.com/5EZGh.png)
21.11.2017