我正在开发.net Standard C#类库,每当构建它时,它都会自动输出NuGet包。我正在使用ASP.NET Core应用程序使用此NuGet包。如果每次构建类库时都要更新版本号,则可以使用简单的Update-Package命令将更改引入应用程序中,但是我不想每次都必须更改版本号我正在做很多小的更改。
我曾尝试清除Visual Studio“选项”菜单中的NuGet缓存,然后尝试使用“ dotnet restore”以及“卸载/重新安装”,但是似乎仍然从某个地方获取了旧版本。
还有其他方法吗?它将从何处提取旧版本?
答案 0 :(得分:2)
那根本不是NuGet的工作方式。版本号是幂等的,因此您不能“替换”一个版本。您只能增加它。这是SemVer(语义版本控制)的规则,NuGet遵循该规则。规则指出:
一旦发布了版本化的软件包,则不得修改该版本的内容。任何修改都必须作为新版本发布。 (https://semver.org/#spec-item-3)
不过,有两件事可以为您提供帮助。
NuGet雇用SemVer,所以您也应该这样做。在开发中,您不会增加主,次或补丁号([major].[minor].[patch]
)。而是添加一个破折号,后跟一个预发行标识符,即1.0.0-alpha.1
。然后,您可以在不影响发行版号的情况下增加标识符。例如,您的下一个更改可能是1.0.0-alpha.2
,而当您最终准备发布时,仅使用1.0.0
。
在开发中,您不应与应用程序代码一起修改NuGet。如果它们在相同的解决方案中,则不需要包参考,因为项目参考更有意义,因此不需要版本增量。如果库与您的应用程序不在同一个解决方案中,则仅应通过程序包引用包括在内,然后,您应独立开发两者。如果更有意义,您也可以稍后分离项目。如果您的库开发不足,无法在不进行持续更改的情况下支持您的应用程序,则将其保留在同一解决方案中。一旦达到稳定点,您便可以根据自己的喜好将其移到自己的解决方案中,然后在该点更改应用程序中的引用。
答案 1 :(得分:1)
在Nuget世界中,没有直观的方法来实现它。
我通常采用的方法是将项目包含在解决方案中并进行处理。一旦感到高兴,就可以构建nuget包。
答案 2 :(得分:1)
您可以将此版本应用于预发行版软件包,以获取每个构建版本的软件包:
<Version>1.0.0-$(Configuration)-$(Platform)-$([System.DateTime]::UtcNow.ToString(yyyyMMdd-HHmmss))</Version>
然后,当您释放软件包时,可以使用:
更改版本。<Version>1.0.0</Version>
您始终必须升级软件包,但其版本不会增加