首页 > 解决方案 > NuGet 包:将 DLL 复制到构建输出中的子目录

问题描述

我想创建一个 NuGet 包,将 DLL 复制到输出目录的子目录中。

这是我的包的文件夹结构:

应将 DLL 复制到输出文件夹中的相应子目录,如下所示:

我已经尝试过 nuspec 文件中的 files 属性:

<files>    
  <file src="lib\net48\amd64\*.dll" target="amd64\" />
  <file src="lib\net48\x86\*.dll" target="x86\" />
</files>

构建包时,我使用的每个 DLL 都会出现以下警告:

警告:NU5100:程序集“amd64\First.dll”不在“lib”文件夹中,因此在将包安装到项目中时不会将其作为参考添加。如果需要引用,请将其移动到“lib”文件夹中。

恢复所有包后,既没有创建子文件夹,也没有将 DLL 复制到输出文件夹中。

如何配置 nuspec 文件以便将 DLL 复制到子文件夹中?我需要 install.ps1 脚本吗?

标签: nuget

解决方案


我正在使用.NET Core(和 .NET 5)项目。并将一个组件与多个项目 DLL 打包在一起。可以通过修改项目文件来做到这一点。

因此,如果您还有 .NET Core 项目,请将以下部分添加到您的.csproj文件(应打包的项目中)以打包 DLL,根据需要更改 DLL 名称和路径

<ItemGroup>
  <_PackageFiles Include="$(OutputPath)\First.dll">
    <BuildAction>None</BuildAction>
    <PackagePath>x64</PackagePath>
  </_PackageFiles>
  <_PackageFiles Include="$(OutputPath)\First.dll">
    <BuildAction>None</BuildAction>
    <PackagePath>x86</PackagePath>
  </_PackageFiles>
</ItemGroup>

推荐阅读