【问题标题】:Migrate from ASP.NET Core 2.0 to 2.1从 ASP.NET Core 2.0 迁移到 2.1
【发布时间】:2019-11-12 05:39:58
【问题描述】:

我想从 ASP.NET Core 2.0 迁移到 2.1。 但是我在构建项目时遇到了这个错误。

'Microsoft.EntityFrameworkCore.Tools.DotNet 2.0.0' 有一个包类型 项目“Jahan.Beta.Web.App”不支持的“DotnetCliTool”。

我该如何解决?

csproj 文件:

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

  <PropertyGroup Label="Globals">
    <SccProjectName></SccProjectName>
    <SccProvider></SccProvider>
    <SccAuxPath></SccAuxPath>
    <SccLocalPath></SccLocalPath>
  </PropertyGroup>

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Compile Remove="Pages\**" />
    <Content Remove="Pages\**" />
    <EmbeddedResource Remove="Pages\**" />
    <None Remove="Pages\**" />
  </ItemGroup>

  <ItemGroup>
    <None Remove=".bowerrc" />
    <None Remove="Styles\theme.less" />
  </ItemGroup>

  <ItemGroup>
    <Content Include="Styles\theme.less">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </Content>
  </ItemGroup>

  <ItemGroup>
    <Folder Include="Areas\Admin\Data\" />
    <Folder Include="Content\css\" />
    <Folder Include="wwwroot\css\Admin\" />
    <Folder Include="wwwroot\images\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.0" PrivateAssets="All" />
    <PackageReference Include="FontAwesome" Version="4.7.0" />
    <PackageReference Include="jQuery.Validation" Version="1.16.0" />
    <PackageReference Include="Npm" Version="3.5.2" />
    <PackageReference Include="System.Linq.Dynamic.Core" Version="1.0.6.8" />
    <PackageReference Include="Twitter.Bootstrap" Version="3.0.1.1" />
 </ItemGroup>

  <ItemGroup>
    <None Include="wwwroot\css\blog-post.css" />
    <None Include="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.css.map" />
    <None Include="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.min.css.map" />
    <None Include="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.css.map" />
    <None Include="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.min.css.map" />
    <None Include="wwwroot\lib\bootstrap\dist\css\bootstrap.css.map" />
    <None Include="wwwroot\lib\bootstrap\dist\css\bootstrap.min.css.map" />
    <None Include="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.js" />
    <None Include="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.js.map" />
    <None Include="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.min.js" />
    <None Include="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.min.js.map" />
    <None Include="wwwroot\lib\bootstrap\dist\js\bootstrap.js" />
    <None Include="wwwroot\lib\bootstrap\dist\js\bootstrap.js.map" />
    <None Include="wwwroot\lib\bootstrap\dist\js\bootstrap.min.js" />
    <None Include="wwwroot\lib\bootstrap\dist\js\bootstrap.min.js.map" />
  </ItemGroup>

  <ItemGroup>
    <Content Update="appsettings.json">
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
    </Content>
  </ItemGroup>

</Project>

【问题讨论】:

    标签: asp.net asp.net-core migration asp.net-core-2.0 asp.net-core-2.1


    【解决方案1】:

    嗯,在 .NET Core 2.1 之前,您必须通过包引用显式包含 EF Core 工具,而现在,它通过 EF Core 包本身进入。这会在迁移时让很多人绊倒,因为您需要删除此软件包,或者您会因所引用工具的不同版本而发生冲突。

    但是,在这里,您不仅没有Microsoft.EntityFrameworkCore.Tools.DotNet 的包引用,而且您甚至没有Microsoft.EntityFrameworkCore 的包引用。因此,您为什么会得到与 EF Core 相关的任何任何异常是没有意义的。

    我通常会假设此异常实际上是通过引用来自另一个项目,但您在这里甚至没有任何项目引用。您确定您发布了正确的项目吗?

    此外,FWIW 不包括通过 NuGet 的客户端库。这些包仅适用于 ASP.NET MVC。充其量,它们甚至不会在 ASP.NET Core 项目中做任何有用的事情,更糟糕的是,它们实际上会导致您的构建失败。

    通过 LibMan 或 npm 包含客户端库。使用 npm 是更好的方法,但您还需要合并 webpack 或 gulp 以将节点库实际复制/编译到您的 wwwroot/lib 目录中。

    【讨论】:

    • 是的,我确定!我的解决方案中只有一个项目('Jahan.Beta.Web.App')。
    • 您的项目存在严重问题,因为 EF Core 甚至不是其中的一部分。您可以尝试删除项目的 bin 和 obj 目录,然后重新构建 - 也许有什么卡住了。除此之外,除了从头开始创建一个新项目并尝试将相关代码移入其中之外,我不知道该告诉您什么。
    • 我已经完成了。我想,我应该从头开始创建一个新项目……
    猜你喜欢
    • 1970-01-01
    • 2021-06-04
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 2018-08-15
    • 2022-11-03
    • 1970-01-01
    相关资源
    最近更新 更多