具有遗留DLL的nuget包

时间:2015-10-08 13:10:31

标签: nuget

我想创建一个nuget包,其中包含.NET程序集“遗留”DLL(非.NET DLL),它们由程序集DLL引用或访问。 我在哪里放这些DLL?使用我的包的用户程序(exe)如何访问这些DLL?

我只能想到用户程序可以通过两种方式访问​​这些DLL:要么将PATH环境变量设置为相应的目录,要么将这些DLL复制到 bin / Release bin / Debug 用户项目的目录。

我如何处理旧版DLL的x86和x64版本?

1 个答案:

答案 0 :(得分:1)

我会考虑在您的NuGet包中添加自定义MSBuild .targets。在这个.targets文件中,您可以定义所需的任何MSBuild任务,这将允许您挂钩到项目的构建。因此,您可以使用MSBuild将非.NET dll复制到输出目录中。

PostSharp NuGet包是在构建期间复制额外文件的一个示例。但是它的MSBuild .targets文件相当复杂。你不需要做那么复杂的事情。可能类似于:

<PropertyGroup>
    <PrepareForRunDependsOn>$(PrepareForRunDependsOn);MyPostBuildTarget</PrepareForRunDependsOn>
</PropertyGroup>
<ItemGroup>
   <ExtraFile Include="dlls\*.dll" />
</ItemGroup>
<Target Name="MyPostBuildTarget">
   <Copy SourceFiles="@(ExtraFile)" DestinationFolder="$(OutputPath)" />
</Target>

以上只是对你能做什么的一个想法。