所以,我有一个非常愉快的ASP.NET Core 1.0应用程序,目标是net461框架。
今天我尝试将其升级到新的ASP.NET Core 1.1(根据说明on this page,您需要做的就是Nuget包升级)
这导致了以下一系列错误:
error: Unable to resolve 'Microsoft.AspNetCore.Diagnostics.Abstractions (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'Microsoft.AspNetCore.Hosting.Abstractions (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'Microsoft.AspNetCore.Http.Extensions (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'Microsoft.AspNetCore.WebUtilities (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'Microsoft.Extensions.FileProviders.Physical (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'Microsoft.Extensions.Logging.Abstractions (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'Microsoft.Extensions.Options (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'System.Diagnostics.DiagnosticSource (>= 4.3.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'System.Reflection.Metadata (>= 1.4.1)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'Microsoft.AspNetCore.Mvc.ApiExplorer (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'Microsoft.AspNetCore.Mvc.Cors (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
...
我在这里想念的是什么?这不应该起作用吗?
供参考,以下是project.json的相关部分(在运行Nuget升级之前):
"dependencies": {
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.AspNet.WebApi.Client": "5.2.3"
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
},
"frameworks": {
"net461": {
"imports": [
]
}
}
编辑:运行Nuget升级后,依赖项部分由Visual Studio更改为:
"dependencies": {
"Microsoft.AspNet.WebApi.Client": "5.2.3",
"Microsoft.AspNetCore.Diagnostics": "1.1.0",
"Microsoft.AspNetCore.Mvc": "1.1.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
"Microsoft.AspNetCore.StaticFiles": "1.1.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
"Microsoft.Extensions.Configuration.Json": "1.1.0",
"Microsoft.Extensions.Logging": "1.1.0",
"Microsoft.Extensions.Logging.Console": "1.1.0",
"Microsoft.Extensions.Logging.Debug": "1.1.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0"
},
答案 0 :(得分:9)
我终于明白了,以防其他人遇到同样的问题。
有三个步骤可以让它发挥作用:
出于某种原因,标准的&#34; Microsoft和.NET&#34; Nuget Feed不包含这些软件包..我必须打开Nuget设置并勾选<强>&#34; nuget.org&#34; 也是。完成后,它能够恢复v1.1包
我参考的博文并未提及您需要打开global.json
文件并将SDK版本更改为"1.0.0-preview2-1-003177"
(出于某种原因,v1.1仍然有一个名为v1.0.0的SDK - 任何想法在那里发生了什么?!?)
完成这两件事之后,尝试运行应用程序会产生500错误,但在web.config中启用stdoutLogEnabled
后,您可以看到例外情况:
System.IO.FileLoadException:无法加载文件或程序集 &#39; System.Collections.Immutable,Version = 1.2.0.0,Culture = neutral, 公钥= b03f5f7f11d50a3a&#39;或其中一个依赖项。该 定位程序集的清单定义与程序集不匹配 参考
要解决此问题,您需要删除应用程序的bin
文件夹,然后重建(由于某种原因&#34;重建解决方案&#34;还不够)。当您部署到Production时,可能您还需要删除那里的bin文件夹,否则您可能会遇到同样的问题。
答案 1 :(得分:0)
我怀疑类似于@gallivantor在他的#1中提到的东西,但不知何故有些东西不断重写UI背后的NuGet.config
文件,当我按照@ jim-w的建议重新启动Visual Studio时,NuGet.org
项将返回取消选中。
所以我决定查看NuGet.config
文件,发现有两个部分:<packageSources>
和<disabledPackageSources>
。带有NuGet.org
密钥的源代码都包含在内。我试图从禁用的软件包部分删除它,一切都开始工作。
在:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="NuGet.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
<disabledPackageSources>
<add key="nuget.org" value="true" /> <!-- This is what I was referring to -->
</disabledPackageSources>
</configuration>
后:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="NuGet.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
警告:我省略了许多细节(特别是关于环境)以保持答案简单。在将此解决方案应用于您的情况之前,请确保它适合您的具体情况。