带有遗留 DLL 的 nuget 包
nuget package with legacy DLLs
我想创建一个 nuget 包,其中除 .NET 程序集外还包含 "legacy" DLL(非 .NET DLL),它们由程序集 DLL 引用或访问。
我应该把这些 DLL 放在哪里?使用我的包的用户程序 (exe) 如何访问这些 DLL?
我只能想到用户程序访问这些 DLL 的两种方式:将 PATH 环境变量设置为适当的目录,或者将这些 DLL 复制到 bin/Release 和 bin/Debug 用户项目的目录。
我将如何处理旧版 DLL 的 x86 和 x64 版本?
我会考虑将自定义 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>
以上只是您可以做什么的想法。
我想创建一个 nuget 包,其中除 .NET 程序集外还包含 "legacy" DLL(非 .NET DLL),它们由程序集 DLL 引用或访问。 我应该把这些 DLL 放在哪里?使用我的包的用户程序 (exe) 如何访问这些 DLL?
我只能想到用户程序访问这些 DLL 的两种方式:将 PATH 环境变量设置为适当的目录,或者将这些 DLL 复制到 bin/Release 和 bin/Debug 用户项目的目录。
我将如何处理旧版 DLL 的 x86 和 x64 版本?
我会考虑将自定义 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>
以上只是您可以做什么的想法。