在不使用.nuspec的情况下为NuGet包设置自定义ID



我需要用命令行中的自定义名称将我的Visual Studio C#库发布到NuGet。

据我所知,只有一种方法可以做到这一点——使用指定了ID.nuspec文件。这是我不想做的,因为每次项目更改时我都必须手动修复文件。我也找不到一个从.cproj文件生成.nuspec(带依赖项(的工具。

我一直在寻找nugetpack选项,但只找到了似乎不适合做这项工作的-Properties

我也找不到一个生成.nusspec(依赖项(。

据我所知,没有一个简单的工具(nuget spec命令不支持这样做(可以从xx.csproj生成具有包依赖性的.nuspec。由于您的实际问题是Set custom ID for a NuGet package **without** using .nuspec,我在这里不讨论如何生成和修改它。

我一直在寻找和nuget包选项,但只找到-房地产公司似乎没有做好这项工作。

我假设您使用的是使用PackageReference格式的.net framework项目。由于您不愿意使用.nuspec文件,因此必须使用nuget pack xx.csprojnuget pack(在csproj存在的地方运行此命令(命令。

但据我所知,还有一个已知的问题,即在对使用PackageReference格式的项目使用此命令时,nuget pack不会显示依赖项。是的,nuget pack -Properties不能满足您当前项目类型的需求。所以这不是一个好的选择。

在不使用.nuspec 的情况下为NuGet包设置自定义ID

建议您的原始问题:

由于您不想使用.nuspec文件,因此nuget pack不适合您的情况。要创建nuget包,nuget.exe不是您的唯一选择。您也可以考虑dotnet CLIMSBuild.exe

1。您可以选择将项目从non-SDK format更改为new SDK format,然后可以在项目文件(.csproj(中指定ID,您不再需要.nuspec。此外,迁移后,它将支持在命令行中指定ID

因此,您可以使用类似dotnet pack -p:PackageID=TestName的命令在命令行中轻松指定ID(或其他包元数据(。(对于sdk格式,您也可以使用msbuild.exe(

2。如果您不想将当前的项目格式更改为SDK format,可以遵循以下主题:如果您将MSBuild与非SDK样式的项目和PackageReference一起使用,请添加NuGet。建筑任务。将包打包到您的项目中

使用该包,然后使用命令msbuild -t:restore在命令行中恢复nuget包。然后使用类似msbuild -t:pack -p:PackageID=xxx的命令在命令行中指定ID。(或者在xx.csproj中设置该ID(

最新更新