指定要添加到 .csproj 文件中的 nuget 包的文件
Specifying files to add to a nuget package in .csproj file
我正在从一些代码创建一个 nuget 包,但还需要使用该包部署一些工具。
在 .nuspec 文件中,我可以使用 <files>
元素执行此操作,并且一切正常。
但是,当使用 .nuspec 文件时,csproj 文件中的 packageReferences
未包含在内,我在手动包含它们(使用 <dependencies>
元素)时发现了一些问题。
创建的包似乎也总是恢复为 .net 框架包,即使它是针对 .net 的,如 this question。
我希望如果我转而使用 .csproj 格式来指定 nuget 包详细信息,那么所有这些问题都会消失,但是 read the docs 我不知道该怎么做。
有谁知道是怎么做到的吗?
如果没有,任何人都可以阐明从 .nuspec 文件创建的 .net 框架/.net 核心 nuget 包,恢复到正确的目标版本并尊重包依赖性吗?
find/discover 并不容易,但 NuGet 的 MSBuild tasks docs page has a section called "including content in a package" 告诉您有关 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 技能不是那么高超,所以我不知道如何通配 ..\MyTool\**\*
,这意味着所有子目录中的所有文件,同时在 PackagePath="???"
元数据中保持正确的目录布局。所以我能建议的最好的是每个目录一个 glob。
我正在从一些代码创建一个 nuget 包,但还需要使用该包部署一些工具。
在 .nuspec 文件中,我可以使用 <files>
元素执行此操作,并且一切正常。
但是,当使用 .nuspec 文件时,csproj 文件中的 packageReferences
未包含在内,我在手动包含它们(使用 <dependencies>
元素)时发现了一些问题。
创建的包似乎也总是恢复为 .net 框架包,即使它是针对 .net 的,如 this question。
我希望如果我转而使用 .csproj 格式来指定 nuget 包详细信息,那么所有这些问题都会消失,但是 read the docs 我不知道该怎么做。
有谁知道是怎么做到的吗?
如果没有,任何人都可以阐明从 .nuspec 文件创建的 .net 框架/.net 核心 nuget 包,恢复到正确的目标版本并尊重包依赖性吗?
find/discover 并不容易,但 NuGet 的 MSBuild tasks docs page has a section called "including content in a package" 告诉您有关 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 技能不是那么高超,所以我不知道如何通配 ..\MyTool\**\*
,这意味着所有子目录中的所有文件,同时在 PackagePath="???"
元数据中保持正确的目录布局。所以我能建议的最好的是每个目录一个 glob。