我需要用命令行中的自定义名称将我的Visual Studio C#库发布到NuGet。
据我所知,只有一种方法可以做到这一点——使用指定了ID
的.nuspec
文件。这是我不想做的,因为每次项目更改时我都必须手动修复文件。我也找不到一个从.cproj
文件生成.nuspec
(带依赖项(的工具。
我一直在寻找nuget
和pack
选项,但只找到了似乎不适合做这项工作的-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.csproj
或nuget pack
(在csproj存在的地方运行此命令(命令。
但据我所知,还有一个已知的问题,即在对使用PackageReference
格式的项目使用此命令时,nuget pack
不会显示依赖项。是的,nuget pack -Properties
不能满足您当前项目类型的需求。所以这不是一个好的选择。
在不使用.nuspec 的情况下为NuGet包设置自定义ID
建议您的原始问题:
由于您不想使用.nuspec文件,因此nuget pack
不适合您的情况。要创建nuget包,nuget.exe
不是您的唯一选择。您也可以考虑dotnet CLI
和MSBuild.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(