从 ASP.NET 核心 2.0 迁移到 2.1
Migrate from ASP.NET Core 2.0 to 2.1
我想从 ASP.NET Core 2.0
迁移到 2.1。
但是当我构建项目时出现此错误。
'Microsoft.EntityFrameworkCore.Tools.DotNet 2.0.0' has a package type
'DotnetCliTool' that is not supported by project 'Jahan.Beta.Web.App'.
我该如何解决?
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>
好吧,在 .NET Core 2.1 之前,您必须通过包引用显式包含 EF Core 工具,而现在,它通过 EF Core 包本身引入。这会在迁移时绊倒很多人,因为您需要删除此包,或者您会因引用的不同版本的工具而发生冲突。
但是,在这里,您不仅没有 Microsoft.EntityFrameworkCore.Tools.DotNet
的包参考,甚至没有 Microsoft.EntityFrameworkCore
的包参考。因此,为什么您会收到与 EF Core 相关的任何 any 异常是没有意义的。
我通常会假设此异常实际上是通过引用来自另一个项目,但您在这里甚至没有任何项目引用。您确定发布的项目正确吗?
此外,FWIW,不要通过 NuGet 包含 client-side 库。这些包仅适用于 ASP.NET MVC。充其量,它们甚至不会在 ASP.NET 核心项目中做任何有用的事情,更糟糕的是,它们实际上会导致您的构建失败。
Client-side 库通过 LibMan 或 npm 包含。使用 npm 是更好的方法,但您还需要将 webpack 或 gulp 合并到 copy/compile 节点库到您的 wwwroot/lib
目录中。
我想从 ASP.NET Core 2.0
迁移到 2.1。
但是当我构建项目时出现此错误。
'Microsoft.EntityFrameworkCore.Tools.DotNet 2.0.0' has a package type 'DotnetCliTool' that is not supported by project 'Jahan.Beta.Web.App'.
我该如何解决?
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>
好吧,在 .NET Core 2.1 之前,您必须通过包引用显式包含 EF Core 工具,而现在,它通过 EF Core 包本身引入。这会在迁移时绊倒很多人,因为您需要删除此包,或者您会因引用的不同版本的工具而发生冲突。
但是,在这里,您不仅没有 Microsoft.EntityFrameworkCore.Tools.DotNet
的包参考,甚至没有 Microsoft.EntityFrameworkCore
的包参考。因此,为什么您会收到与 EF Core 相关的任何 any 异常是没有意义的。
我通常会假设此异常实际上是通过引用来自另一个项目,但您在这里甚至没有任何项目引用。您确定发布的项目正确吗?
此外,FWIW,不要通过 NuGet 包含 client-side 库。这些包仅适用于 ASP.NET MVC。充其量,它们甚至不会在 ASP.NET 核心项目中做任何有用的事情,更糟糕的是,它们实际上会导致您的构建失败。
Client-side 库通过 LibMan 或 npm 包含。使用 npm 是更好的方法,但您还需要将 webpack 或 gulp 合并到 copy/compile 节点库到您的 wwwroot/lib
目录中。