什么控制NuGet包中引用的特定版本属性?

什么控制NuGet包中引用的特定版本属性?,nuget,nuget-package,Nuget,Nuget Package,我们有许多在CI中构建的库,它们在每次构建时都部署预发布。其他项目依赖于这些,并在构建期间自动更新它们 但是引用设置为Specific Version=true,这意味着增加这些DLL上的版本号会导致构建失败 如何控制属性的设置?如果不更改其源代码,则无法更改NuGet的行为。从Visual Studio中添加非GAC程序集时 您需要运行某种生成后脚本来修复引用或手动更改它们 不确定您是如何更新CI服务器中的项目的。如果使用NuGet.exe update project.csproj,则该文件

我们有许多在CI中构建的库,它们在每次构建时都部署预发布。其他项目依赖于这些,并在构建期间自动更新它们

但是引用设置为Specific Version=true,这意味着增加这些DLL上的版本号会导致构建失败


如何控制属性的设置?

如果不更改其源代码,则无法更改NuGet的行为。从Visual Studio中添加非GAC程序集时

您需要运行某种生成后脚本来修复引用或手动更改它们


不确定您是如何更新CI服务器中的项目的。如果使用
NuGet.exe update project.csproj
,则该文件将更新为最新的NuGet软件包,并且不会将SpecificVersion设置为true。但是,命令行应用程序不支持PowerShell脚本或内容文件,只更新引用。这还假设有可用的更新,否则将不会修改引用。

我使用命令行中的NuGet restore获取解决方案的所有包。软件包的版本控制类似于1.0.0-latest,其中新版本的版本号没有更改,我无法通过命令行实现这一点。dll确实获得了第四个版本号,即svn号。对于每个版本,此数字都会增加。在您的回答中,您说nuget将始终将SpecificVersion设置为true,但稍后您说,如果您使用nuget.exe update project.csproj,则将更新为最新的nuget软件包,并且不会将SpecificVersion(假定您指的是SpecificVersion)设置为true。不设置SpecificVersion是否意味着它将使用默认值(看起来是真的)?命令行nuget的行为与visual studio中的nuget 2不同。关于什么SpecificVersion,stackoverflow上有一些答案,解释了它如何比我喜欢的更好: