从ASP.NET Core 2.0迁移到2.1

时间:2019-07-01 14:50:44

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

我想从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>

1 个答案:

答案 0 :(得分:0)

.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目录中。