nuget - NuGet 包:将 DLL 复制到构建输出中的子目录
问题描述
我想创建一个 NuGet 包,将 DLL 复制到输出目录的子目录中。
这是我的包的文件夹结构:
- 包根
- 库
- 净48
- x64
- 第一.dll
- 第二个.dll
- x86
- 第一.dll
- 第二个.dll
- x64
- 净48
- 库
应将 DLL 复制到输出文件夹中的相应子目录,如下所示:
- 输出目录
- x64
- 第一.dll
- 第二个.dll
- x86
- 第一.dll
- 第二个.dll
- x64
我已经尝试过 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 脚本吗?
解决方案
我正在使用.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>
推荐阅读
- iis - 如何在 IIS 上部署 ASGI?
- blazor-webassembly - Google page Insights, blazor webassebly
- ios - 当用户收到通知横幅时,SpriteKit 帧率下降
- python - 从终端运行命令时收集了 0 个项目
- python - 输入字母替换为数字需要解决方案
- javascript - 正则表达式:如何解析我的自定义语法“a -> b : 1 | c : 2 : 3 | de | f : 2”?
- google-api-js-client - Google 课堂仅显示未完成的任务
- python - Colab IndexError:索引 0 超出轴 0 的范围,大小为 0
- c - 无法在降级的 C 程序上运行 VLC
- javascript - 您如何使用 Javascript 计算计算器的简单算术运算?