Netcore 2.1.1版本导致应用无法运行

时间:2018-06-19 12:51:59

标签: asp.net-core

似乎突然与asp.net核心软件包不同步。

Microsoft.AspNetCore.App 2.1.1似乎是16个小时前在nuget.org上发布的,但只有158次下载,显然我是其中一名下载者。

我的.csproj文件是这样的:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <ProjectReference Include="..\cloudscribe.Web.Navigation\cloudscribe.Web.Navigation.csproj" />
    <ProjectReference Include="..\cloudscribe.Web.SiteMap\cloudscribe.Web.SiteMap.csproj" />
    <ProjectReference Include="..\cloudscribe.Web.SiteMap.FromNavigation\cloudscribe.Web.SiteMap.FromNavigation.csproj" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.*" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.*" />
  </ItemGroup>
</Project>

它可以构建,但是当我尝试运行它时,我得到:

  

找不到任何兼容的框架版本   找不到指定的框架'Microsoft.AspNetCore.App'版本'2.1.1'。     -检查应用程序依赖性并确定安装在以下位置的框架版本:         C:\ Program Files \ dotnet \     -安装.NET Core必备软件可能有助于解决此问题:         http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409     -.NET Core框架和SDK可以从以下位置安装:         https://aka.ms/dotnet-download     -已安装以下版本:         位于[C:\ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App]的2.1.0

如果将Microsoft.AspNetCore.App的版本更改为2.1.0并进行dotnet还原,则会得到以下信息:

  

C:_c \ cloudscribe.Web.Navigation \ src \ NavigationDemo.Web \ NavigationDemo.Web.csproj:错误NU1107:为Microsoft.AspNetCore.Antiforgery检测到版本冲突。直接从项目中引用该软件包即可解决此问题。   C:_c \ cloudscribe.Web.Navigation \ src \ NavigationDemo.Web \ NavigationDemo.Web.csproj:错误NU1107:NavigationDemo.Web-> cloudscribe.Web.Navigation-> Microsoft.AspNetCore.Mvc.Razor 2.1.1-> Microsoft .AspNetCore.Mvc.ViewFeatures 2.1.1-> Microsoft.AspNetCore.Antiforgery(> = 2.1.1)   C:_c \ cloudscribe.Web.Navigation \ src \ NavigationDemo.Web \ NavigationDemo.Web.csproj:错误NU1107:NavigationDemo.Web-> Microsoft.AspNetCore.App 2.1.0-> Microsoft.AspNetCore.Antiforgery(= 2.1.0 )。     对于C:_c \ cloudscribe.Web.Navigation \ src \ NavigationDemo.Web \ NavigationDemo.Web.csproj,还原在3.54秒内失败。

我想部分原因是我的解决方案中的其他项目具有如下依赖性:

<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.*" />
<PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="2.1.*" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="2.1.*" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.1.*" />
<PackageReference Include="Microsoft.Extensions.Options" Version="2.1.*" />
<PackageReference Include="Newtonsoft.Json" Version="11.0.*" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.1.*" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor" Version="2.1.*" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Abstractions" Version="2.1.*" />

2.1.1似乎没有更新的sdk,但是GitHub上Microsoft.AspNetCore.App 2.1.1的可用性似乎对我来说很麻烦。

7 个答案:

答案 0 :(得分:7)

2.1.1(预览版)SDK在其GitHub上可用。

您可以直接在此处下载:

https://dotnetfeed.blob.core.windows.net/orchestrated-release-2-1/20180605-09/final/assets/Sdk/2.1.301-preview-008906/dotnet-sdk-2.1.301-win-x64.exe

请参阅:

https://github.com/dotnet/versions/tree/7a833dddfddc27f2074b755b94234a25b9757637/build-info/dotnet/product/cli/release/2.1

我们仍在等待官方SDK ...

编辑:

如果您在构建时遇到麻烦,请将以下内容添加到.csproj

<PropertyGroup>     
  <TargetLatestAspNetCoreRuntimePatch>true</TargetLatestAspNetCoreRuntimePatch>
</PropertyGroup>

更新

官方2.1.1 SDK现在已发布:https://www.microsoft.com/net/download/thank-you/dotnet-sdk-2.1.301-windows-x64-installer

答案 1 :(得分:7)

您的问题是您的csproj的这一行:

<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.*" />

*表示选择该Nuget软件包的最新2.1版本。对于许多软件包来说,这将是非常好的。但是,该软件包的v2.1.1需要安装匹配的v2.1.1 SDK。截至目前,它不可用(it's currently blocked)。

但是,如果您阅读Migrate from ASP.NET Core 2.0 to 2.1文档,则会看到以下内容:

  

用无版本的“ Microsoft.AspNetCore.App”包引用替换指定的版本“ Microsoft.AspNetCore.All”包引用。

现在可以通过您要定位的SDK版本来推断该版本。这意味着您的csproj现在应该包含以下内容:

<PackageReference Include="Microsoft.AspNetCore.App" />

答案 2 :(得分:1)

除了其他建议,我还需要将Microsoft.NetCore.App升级到2.1.1。由于无法通过UI进行操作,因此将以下内容添加到.csproj即可。

<PackageReference Include="Microsoft.NetCore.App" Version="2.1.1" />

<PackageReference Include="Microsoft.NetCore.App" Version="2.1.1" />

答案 3 :(得分:0)

我有同样的问题。另一个选择是,在NuGet软件包管理器中,将Microsoft.AspNetCore.All,Microsoft.AspNetCore.Rewrite和Microsoft.NETCore.App回滚到版本2.1.0。

答案 4 :(得分:-1)

通配符版本号软件包引用对我来说很奇怪。默认情况下不会发生这种情况,因此您或您的一个团队成员都这样做了。我不知道这是否是至少某些问题的根源,但我将从将它们更改为完整版本引用开始。 NuGet软件包不与您的项目一起提交,因此当您针对一个版本进行开发但后来又恢复了另一个版本时,使用通配符会导致奇怪的构建问题,尤其是在自动构建中。如果要升级软件包,那应该是一个明确的选择,这样您就可以验证所有代码仍然可以正常工作,就像升级后一样。

值得注意的是,从2.1开始,代码生成已启用,因此您不应显式引用任何CodeGen软件包。

就解决当前问题而言。您的软件包缓存可能存在一些问题。在Visual Studio中,转到“工具”>“ NuGet程序包管理器”>“程序包管理设置”,然后单击“清除所有NuGet缓存”按钮。

那应该会提示您重新下载所有项目的NuGet软件包,这可能足以解决问题。如果没有,我建议您清理所有项目,然后进入每个项目的目录并手动删除binobj目录。然后,重建您的解决方案。

答案 5 :(得分:-1)

对于错误的SDK 2.1.301版本,请使用: 版本=“ 2.1.0” /> 并强制所有其他软件包2.1.1-> 2.1.0。

答案 6 :(得分:-1)