nuget spec依赖,获取最新版本?

时间:2014-07-15 18:43:24

标签: nuget versioning specifications nuspec

nuspec versioning docs我看到了

1.0  = 1.0 ≤ x
(,1.0]  = x ≤ 1.0
(,1.0)  = x < 1.0
[1.0] = x == 1.0
(1.0) = invalid
(1.0,) = 1.0 < x
(1.0,2.0) = 1.0 < x < 2.0
[1.0,2.0] = 1.0 ≤ x ≤ 2.0
empty = latest version.

我有packages.config看起来像这样

<packages>
  <package id="psake" version="4.2.0.1" />
</packages>

我想将版本更改为&#34;最新版本&#34;。

我已经尝试过两次

<packages>
  <package id="psake" version="" />
</packages>

<packages>
  <package id="psake" />
</packages>

但两者都会产生Unable to parse version value '' from 'packages.config'.

我正在使用Nuget.exe 2.8.2

4 个答案:

答案 0 :(得分:34)

从Nuget 2.8开始,您可以将以下属性添加到nuget.config

<configuration>
    <config> 
        <add key="dependencyversion" value="Highest" /> 
    </config>
</configuration>

解析包时,将解析该包的最新版本。其他属性包括HighestMinor,HighestPatch和最低(基于语义版本控制)

来源:http://docs.nuget.org/docs/release-notes/nuget-2.8

答案 1 :(得分:4)

我猜您正在尝试使用nuget install或nuget restore来使用NuGet.exe下拉NuGet包。

packages.config中的version属性定义项目或解决方案中安装的版本。

要获取最新版本的psake NuGet软件包,您需要使用软件包管理器控制台或“管理软件包”对话框安装它,或者知道软件包的确切版本,将其添加到packages.config文件中,以及使用包恢复。由于psake是一个解决方案级别的包,它不会更新您的项目,因此最后一个选项是可行的。

版本范围用于限制允许在项目中安装的软件包版本。

<packages>
    <package id="SomePackage" version="2.1.0" allowedVersions="[2,3)" />
</packages>

答案 2 :(得分:0)

或者,您可以根据https://docs.nuget.org/consume/command-line-reference在任意版本上运行restore,然后按update运行update。为了确保最新,您需要重新运行{{1}}。

  

将软件包更新到最新版本。此命令还会更新NuGet.exe本身。请注意,运行Update命令需要存在Packages文件夹。建议的方法是在运行Update命令之前先运行NuGet.exe Restore命令。

答案 3 :(得分:-1)

您可以修改.cspoj文件以执行“BeforeBuild”目标,如下所示:

<Target Name="BeforeBuild"> <Exec Command="&quot;$(SolutionDir).nuget\NuGet&quot; update &quot;$(ProjectDir)packages.config&quot; -Id psake" /> </Target>

请注意:您需要在ur解决方案目录中使用“Nuget.exe”。