2015-10-08 45 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> 

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