更新到 ASP.NET Core 2.0 - 包与 netcoreapp2.0 不兼容

Posted

技术标签:

【中文标题】更新到 ASP.NET Core 2.0 - 包与 netcoreapp2.0 不兼容【英文标题】:Updating to ASP.NET Core 2.0 - Packages are not compatible with netcoreapp2.0 【发布时间】:2018-01-29 20:54:04 【问题描述】:

我正在尝试更新到 NET Core 2.0,但我在使用该参考安装的所有包上都遇到了这些错误。

问题可能是:

我在输出中获得了对 netcoreapp1.0 的引用:

Microsoft.EntityFrameworkCore.Tools.DotNet 2.0.0 包与 netcoreapp1.0(.NETCoreApp,版本 = v1.0)不兼容。 Microsoft.EntityFrameworkCore.Tools.DotNet 2.0。 0 包支持:netcoreapp2.0(.NETCoreApp,版本 = v2.0) 一个或多个包与 .NETCoreApp 不兼容,版本 = v1.0。 检测到的包检测:Microsoft.ApplicationInsights.AspNetCore 从 2.1.1 到 2.0.0 Microsoft.AspNetCore.All (> = 2.0.0) -> Microsoft.AspNetCore.ApplicationInsights.HostingStartup (> = 2.0.0) -> Microsoft.ApplicationInsights.AspNetCore (> = 2.1.1) 应用程序 (> = 1.0.0) -> Microsoft.ApplicationInsights.AspNetCore (> = 2.0.0)

之后,我收到所有组件的这条消息:

Microsoft.AspNetCore.ANYPACKAGE 2.0.0 包与 netcoreapp2.0(.NETCoreApp,版本 = v2.0)不兼容。 Microsoft.AspNetCore.WebSockets 2.0.0 包支持:netstandard2.0 (.NETStandard, Version = v2.0)

这是手册:

https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/

SDK 更新到 2.0:

这是我的csproj

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <PropertyGroup>
    <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
  </PropertyGroup>

  <ItemGroup>
    <Compile Remove="wwwroot\lib\kendo-ui-core\**" />
    <Content Remove="wwwroot\lib\kendo-ui-core\**" />
    <EmbeddedResource Remove="wwwroot\lib\kendo-ui-core\**" />
    <None Remove="wwwroot\lib\kendo-ui-core\**" />
  </ItemGroup>

  <ItemGroup>
    <Content Include="wwwroot\css\bootstrap-lumen.css" />
    <Content Include="wwwroot\css\bootstrap-sand.css" />
    <Content Include="wwwroot\css\bootstrap-sand.min.css" />
    <Content Include="wwwroot\js\application-role-index.js" />
    <Content Include="wwwroot\js\family-index.js" />
    <Content Include="wwwroot\js\jquery-3.2.1.min.js" />
    <Content Include="wwwroot\js\modal-action-store.js" />
    <Content Include="wwwroot\js\populate-district.js" />
    <Content Include="wwwroot\js\store-index.js" />
    <Content Include="wwwroot\js\type-index.js" />
    <Content Include="wwwroot\js\user-index.js" />
    <Content Include="wwwroot\js\jquery.filtertable.min.js" />
    <Content Include="wwwroot\js\machine-index.js" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Bootstrap.v3.Datetimepicker" Version="4.17.45" />
    <PackageReference Include="Bootstrap.v3.Datetimepicker.CSS" Version="4.17.45" />
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
    <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.0" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.0" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGenerators.Mvc" Version="2.0.0" />
    <PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
    <PackageReference Include="NuGet.CommandLine" Version="4.1.0" />
  </ItemGroup>
  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
  </ItemGroup>

</Project>

提前感谢您的帮助。

编辑:更多信息

编译解决方案后,我收到以下消息:

1> CSC:错误 CS1703:已导入具有相同标识的多个程序集:'C:\Users\user\.nuget\packages\microsoft.netcore.app\2.0.0\ref\netcoreapp2.0\System. ComponentModel.dll'和'C:\Users\User\.nuget\packages\system.componentmodel\4.3.0\ref\netstandard1.0\System.ComponentModel.dll'。删除重复引用之一。

【问题讨论】:

当你创建一个全新的 .net core 2 项目然后添加 EF 会发生什么? 【参考方案1】:

此外,过时版本的 nuget 可能会出现此错误。具体来说,4.0.0 出现了这个问题。升级到 4.3.0 为我解决了这个问题。

VSTS 代理似乎使用 4.0.0,因此要解决此问题,您可以在构建步骤中运行一个 nuget 版本安装程序任务,以升级在构建管道中运行的 nuget 版本。

【讨论】:

添加这一步,为我修好了。 你能补充一些关于任务是什么的细节吗?我在 TFS 2017.2 中看不到它。 @DanielA.Thompson 添加 NuGet Tool Installer 任务并更改 要安装的 NuGet.exe 版本到相应版本。 本地 TFS 2017 也有同样的问题。构建代理默认使用 NuGet 4.0.0,即使在 Visual Studio 中使用更高版本的 NuGet。【参考方案2】:

通过更新 Visual Studio 解决了它的最新版本(对我来说是 15.3.3)

另外,请确保将 SDK 更新至 2.0 版,并将 NuGet 更新至最新版本。

【讨论】:

SDK下载链接:github.com/dotnet/core/blob/master/release-notes/…【参考方案3】:

您应该安装新版本的 SDK。这个问题在 GitHub 里面有很多解决方法比如https://github.com/dotnet/core/issues/1675

【讨论】:

以上是关于更新到 ASP.NET Core 2.0 - 包与 netcoreapp2.0 不兼容的主要内容,如果未能解决你的问题,请参考以下文章

如何在 asp.net core v 2.0 中从 javascript 调用 PageModel 方法

基础教程:ASP.NET Core 2.0 MVC筛选器

为什么你需要将代码迁移到ASP.NET Core 2.0

在ASP.NET Core 2.0中使用Facebook进行身份验证

ASP.NET Core 2.0 - Windows Auth 与 LDAP 组到角色

从 ASP.NET Core 1.1 MVC 迁移到 2.0 后,自定义 cookie 身份验证不起作用