使用新的csproj格式更新nuget.exe

时间:2017-06-13 17:47:50

标签: .net nuget nuget-update

我正在尝试从命令行更新某些项目的nuget引用。这些项目使用包含PackageReference元素的新格式。我正在使用的命令是:

nuget.exe update someproj.csproj

这会导致错误:

The default XML namespace of the project must be the MSBuild XML namespace. 
If the project is authored in the MSBuild 2003 format, please add 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003" to the <Project> 
element. If the project has been authored in the old 1.0 or 1.2 format, 
please convert it to MSBuild 2003 format.

有没有办法使用nuget.exe或dotnet.exe从命令行更新软件包?

2 个答案:

答案 0 :(得分:2)

您需要使用版本&gt; = 4的nuget.exe才能使用新的csproj格式。

但是,您仍然需要使用旧样式packages.config,否则您将获得以下输出

C:\dev>nuget.exe update test.csproj
MSBuild auto-detection: using msbuild version '15.1.548.43366' from 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\bin'.
Unable to update. The project does not contain a packages.config file.

但是,您可以使用powershell命令行开关

Update-Package

这些可以从包管理器控制台(https://docs.microsoft.com/en-us/nuget/tools/package-manager-console)运行。

您也可以加载powershell模块并执行以下

Import-Module PackageManagement.Cmdlets.dll 

Set-Project MySolution "MySolution.sln" 

Update-Package

有关此内容的更多信息,请访问此博客 - http://community.sharpdevelop.net/blogs/mattward/archive/2011/06/12/InstallingNuGetPackagesOutsideVisualStudio.aspx

答案 1 :(得分:2)

目前,这是不可能的。有关跟踪,请参阅this GitHub issue

用于添加引用的cli命令支持通过重新运行dotnet add package The.Package.Id来更新项目中的单个包。