繁体   English   中英

指定要添加到 .csproj 文件中的 nuget 包的文件

[英]Specifying files to add to a nuget package in .csproj file

我正在从一些代码创建一个 nuget 包,但还需要使用该包部署一些工具。

在 .nuspec 文件中,我可以使用<files>元素执行此操作,并且一切正常。

然而,使用一个.nu​​spec文件的情况下, 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM