我刚刚创建了一个新的ASP.NET MVC 6项目,并希望将NuGet包更新到最新版本(默认项目模板通常非常过时)。我注意到以下更新是可能的:
- Antlr.3.4.1.9004 > Antlr.3.5.0.2
- Newtonsoft.Json.6.0.4 > Newtonsoft.Json.6.0.8
- WebGrease.1.5.2 > WebGrease.1.6.0
当我尝试使用NuGet包对话框或通过更新project.json文件中Newtonsoft.json的版本号来升级这些软件包时,会遇到错误。
1) 严重性 代码 描述 项目 文件 行 错误 未实现(HRESULT: 0x80004001 (E_NOTIMPL)) 0
2) 严重性 代码 描述 项目 文件 行 错误 无法还原 NuGet 包,有一个或多个包失败。有关详细信息,请参见“输出”窗口。 Mvc6ProjectName C:[路径]\Mvc6ProjectName\project.json 0
3) 严重性 代码 描述 项目 文件 行 错误 依赖项 Newtonsoft.Json >= 6.0.8 无法解析 Mvc6Boilerplate C:\Git\ASP.NET-MVC-Boilerplate\Source\MVC6\Mvc6Boilerplate\project.json 19
我还有一个MVC项目,正在使用最新的NuGet包,那么为什么不能升级这些软件包?这与我们无法指定运行时assemblyBinding的web.config文件有关吗?
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
更新 1
当我尝试从包管理器控制台更新 Newtonsoft.Json 时,出现以下错误:
PM> Update-Package Newtonsoft.Json -ProjectName Mvc6Boilerplate -Version 6.0.8 Package with the Id 'Newtonsoft.Json' is not installed to project 'Mvc6Boilerplate'.
看起来在默认的 MVC 6 项目中并没有安装 Newtonsoft.Json,而是作为另一个项目的依赖项进行安装。该 NuGet 包在 Nuget 包管理器中实际上并没有显示,但会在 project.json 文件以及 References->DNX 和 DNX Core 树形视图项目下进行显示。
当我尝试显式安装 Newtonsoft.Json 包时,它确实升级到 6.0.8,但随后出现了我列出的错误。
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
以处理绑定问题。 - Matt DeKreyAutoGenerateBindingRedirects
会有任何不同。不幸的是,我的表述可能不够清晰 - 输出窗口与包管理器控制台不同。(相似的命名并没有帮助)。你通常可以使用Ctrl+W, O
或顶部的快速启动栏来访问它。你可能需要更改下拉菜单... 会有很多 GET 和 CACHE 行,可能散布着一两个错误。 - Matt DeKrey