2015-10-08 47 views
0

我想创建一个nuget包,除了.NET程序集“遗留”DLL(非.NET DLL)之外,它还包含程序集DLL所引用或访问的DLL。 我在哪里放这些DLL?如何使用我的软件包的用户程序(exe)访问这些DLL?带旧DLL的nuget包

我只能想到的两种方式的用户程序可以访问这些DLL:要么有一个PATH环境变量设置为相应的目录或这些DLL文件复制到斌/释放斌/调试目录的用户项目。

我该如何处理传统DLL的x86和x64版本?

回答

1

我会看看添加一个自定义的MSBuild .targets到你的NuGet包。在这个.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> 

以上只是你可以做的一个想法。