似乎突然与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
的可用性似乎对我来说很麻烦。
答案 0 :(得分:7)
2.1.1(预览版)SDK在其GitHub上可用。
您可以直接在此处下载:
请参阅:
我们仍在等待官方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软件包,这可能足以解决问题。如果没有,我建议您清理所有项目,然后进入每个项目的目录并手动删除bin
和obj
目录。然后,重建您的解决方案。
答案 5 :(得分:-1)
对于错误的SDK 2.1.301版本,请使用:
答案 6 :(得分:-1)