如何将更新推送到 .NET Framework 和 .NET Core 库的 NuGet 源
How to push an update to a NuGet feed for .NET Framework and .NET Core libraries
我在 Azure Artefacts 中有自己的 NuGet 源。目前,提要中有两个包:
- INTLConfiguration.Client [版本 1.0.0]
- INTLConfiguration.NetFramework.Client [版本 1.0.0]
顶部是 .NET Core 库,底部是 .NET Framework 库。
我需要将两个版本的 NuGet 提要更新为 1.0.1 - 但我在执行此操作时遇到了一些问题。我打包 'INTLConfiguration.Client' 并将 .nukpg 从 INTLConfiguration.Client.1.0.0.nupkg
重命名为 INTLConfiguration.Client.1.0.1.nupkg
并尝试将 nuget 推送到我的源提要,但它出错并显示一条冲突消息,指出 v1.0.0
已经存在。
如何将这两个 nuget 包更新到我的源源中?
谢谢。
I packed 'INTLConfiguration.Client' and renamed the .nukpg from
INTLConfiguration.Client.1.0.0.nupkg to
INTLConfiguration.Client.1.0.1.nupkg
看来你的更新只是rename the output xxx.nupkg
。 不是创建更新的 .nupkg 的有效方法。 xx.nupkg
类似于 .zip
。将它从 Name.nupkg
重命名为 Name.zip
然后你可以解压缩它并查看它的内容。打开ProjectName.nuspec可以发现里面定义的版本还是1.0.0
.
我的猜测:
也许您使用的打包方式类似于创建 .net 核心项目和 right-click 输出 ProjectName.1.0.0.nupkg 的打包按钮。
1# 如果是这样,解决它的最简单方法是 right-click 解决方案资源管理器中的项目名称=>属性并在那里更改包版本:
改版本为1.0.1,重新打包
2# 我们也可以使用我们为此选项定义的.nuspec 文件。
- 向项目添加一个文本文件并将其重命名为
xxx.nuspec
。将 property window
中的 build action
更改为 content
.
- Right-click 项目=>卸载项目=>编辑
xxx.csproj
文件。
添加如下脚本:
<PropertyGroup>
<NuspecFile>NuspecName.nuspec</NuspecFile>
</PropertyGroup>
然后reload the project
,每次我们使用Pack选项时,它都会调用NuspecName.nuspec
文件。
To create a nuget package by command-line
, I suggest you use dotnet.exe or nuget.exe.
对于您的 .net 核心项目,您可以使用 dotnet pack command
。有关它的一些详细信息,请参阅 here。
3# 要在不使用 .nuspec 文件的情况下使用 version 1.0.2
创建 .net core
包:
打开 cmd.exe,然后键入命令:cd C:\PathToProjectFolder
以导航到 ProjectDir(存在 xx.csproj 的位置)
然后键入 dotnet pack -p:PackageVersion=1.0.1
之类的命令来创建一个真正版本为 1.0.1 的 nuget 包。 (如果目录中只有一个.csproj)
或者您需要像这样指定 .csproj:dotnet pack ~/projects/app1/project.csproj -p:PackageVersion=1.0.1
4# 要使用 .nuspec 文件创建版本为 1.0.2 的 .net 核心包:
创建一个 .nuspec 文件并修改其内容以满足您的需要(版本、作者姓名...)。
打开 cmd.exe 并使用如下命令:dotnet pack ~/projects/app1/project.csproj /p:NuspecFile=~/projects/app1/project.nuspec /p:NuspecBasePath=~/projects/app1/nuget
如果在 VS 中使用打包选项(Right-click 项目=>打包按钮),请选中 1# 或 2#。
如果使用command-line,可以勾选3#或者4#。希望对您有所帮助:)
更新:
How do I go about updating both of these nuget packages into my source
feed?
您可以勾选this tutorial 来创建一个针对.net 的包framework.And 在打包之前更新.nuspec 中的版本。另外,如果你想获得更新的 nuget 包,我建议你也更新 dll 本身的程序集版本和文件版本。
我在 Azure Artefacts 中有自己的 NuGet 源。目前,提要中有两个包:
- INTLConfiguration.Client [版本 1.0.0]
- INTLConfiguration.NetFramework.Client [版本 1.0.0]
顶部是 .NET Core 库,底部是 .NET Framework 库。
我需要将两个版本的 NuGet 提要更新为 1.0.1 - 但我在执行此操作时遇到了一些问题。我打包 'INTLConfiguration.Client' 并将 .nukpg 从 INTLConfiguration.Client.1.0.0.nupkg
重命名为 INTLConfiguration.Client.1.0.1.nupkg
并尝试将 nuget 推送到我的源提要,但它出错并显示一条冲突消息,指出 v1.0.0
已经存在。
如何将这两个 nuget 包更新到我的源源中?
谢谢。
I packed 'INTLConfiguration.Client' and renamed the .nukpg from INTLConfiguration.Client.1.0.0.nupkg to INTLConfiguration.Client.1.0.1.nupkg
看来你的更新只是rename the output xxx.nupkg
。 不是创建更新的 .nupkg 的有效方法。 xx.nupkg
类似于 .zip
。将它从 Name.nupkg
重命名为 Name.zip
然后你可以解压缩它并查看它的内容。打开ProjectName.nuspec可以发现里面定义的版本还是1.0.0
.
我的猜测:
也许您使用的打包方式类似于创建 .net 核心项目和 right-click 输出 ProjectName.1.0.0.nupkg 的打包按钮。
1# 如果是这样,解决它的最简单方法是 right-click 解决方案资源管理器中的项目名称=>属性并在那里更改包版本:
改版本为1.0.1,重新打包
2# 我们也可以使用我们为此选项定义的.nuspec 文件。
- 向项目添加一个文本文件并将其重命名为
xxx.nuspec
。将property window
中的build action
更改为content
. - Right-click 项目=>卸载项目=>编辑
xxx.csproj
文件。
添加如下脚本:
<PropertyGroup>
<NuspecFile>NuspecName.nuspec</NuspecFile>
</PropertyGroup>
然后reload the project
,每次我们使用Pack选项时,它都会调用NuspecName.nuspec
文件。
To create a nuget package by
command-line
, I suggest you use dotnet.exe or nuget.exe.
对于您的 .net 核心项目,您可以使用 dotnet pack command
。有关它的一些详细信息,请参阅 here。
3# 要在不使用 .nuspec 文件的情况下使用 version 1.0.2
创建 .net core
包:
打开 cmd.exe,然后键入命令:
cd C:\PathToProjectFolder
以导航到 ProjectDir(存在 xx.csproj 的位置)然后键入
dotnet pack -p:PackageVersion=1.0.1
之类的命令来创建一个真正版本为 1.0.1 的 nuget 包。 (如果目录中只有一个.csproj)
或者您需要像这样指定 .csproj:dotnet pack ~/projects/app1/project.csproj -p:PackageVersion=1.0.1
4# 要使用 .nuspec 文件创建版本为 1.0.2 的 .net 核心包:
创建一个 .nuspec 文件并修改其内容以满足您的需要(版本、作者姓名...)。
打开 cmd.exe 并使用如下命令:
dotnet pack ~/projects/app1/project.csproj /p:NuspecFile=~/projects/app1/project.nuspec /p:NuspecBasePath=~/projects/app1/nuget
如果在 VS 中使用打包选项(Right-click 项目=>打包按钮),请选中 1# 或 2#。
如果使用command-line,可以勾选3#或者4#。希望对您有所帮助:)
更新:
How do I go about updating both of these nuget packages into my source feed?
您可以勾选this tutorial 来创建一个针对.net 的包framework.And 在打包之前更新.nuspec 中的版本。另外,如果你想获得更新的 nuget 包,我建议你也更新 dll 本身的程序集版本和文件版本。