[英]Specifying files to add to a nuget package in .csproj file
我正在从一些代码创建一个 nuget 包,但还需要使用该包部署一些工具。
在 .nuspec 文件中,我可以使用<files>
元素执行此操作,并且一切正常。
然而,使用一个.nuspec文件的情况下, packageReferences
从文件的csproj不包括在内,并手动包含它们时(与我看到一些问题<dependencies>
元素)。
创建的包似乎也总是恢复为 .net 框架包,即使它是针对 .net 的,如本问题所示。
我希望如果我改用 .csproj 格式来指定 nuget 包的详细信息,所有这些问题都会消失,但是在阅读了文档后我不知道如何去做。
有谁知道它是如何完成的?
如果没有,任何人都可以了解从 .nuspec 文件创建的 .net 框架/.net 核心 nuget 包,该包恢复到正确的目标版本并尊重包依赖性吗?
查找/发现并不容易,但 NuGet 的MSBuild 任务文档页面有一个名为“ 包括包中的内容”的部分,它告诉您有关 MSBuild 项目的PackagePath
元数据,NuGet 使用它来将文件复制到包中。
所以,在你的 csproj 中,你可以有这样的东西:
<ItemGroup>
<None Include="..\MyTool\Tool.exe" PackagePath="tools" Pack="true" />
</ItemGroup>
然后你的包将包含tools\\Tool.exe
。 我不是 100% 确定需要Pack="true"
,但文档在示例中使用它,所以我把它放在这里,以防万一。
您可以使用 MSBuild 的 globbing 来复制整个目录,如果这更容易的话。 Include="..\\MyTool\\*"
。 我的 MSBuild 技能不是那么高级,所以我不知道如何 glob ..\\MyTool\\**\\*
,这意味着所有子目录中的所有文件,同时在PackagePath="???"
保持正确的目录布局元数据。 所以我能建议的最好的方法是每个目录一个 glob。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.