升级到ASP.Net Core 2.0

时间:2017-08-20 22:43:54

标签: asp.net .net asp.net-mvc

从ASP.Net Core 1.X升级到2.0(https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/

我遇到了以下疑问/问题:

首先:元数据包

现在用

<ItemGroup>
  <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
</ItemGroup>

我们获得了项目所需的所有参考资料。但是,我不知道是否应该排除Microsoft.VisualStudio.Web

的包裹

我对这些参考有怀疑

<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" 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" />

我看到元数据包已包含这个:Microsoft.VisualStudio.Web.BrowserLink" Version

我应该只排除那一个并留下另外两个(CodeGeneration.Design  和Microsoft.VisualStudio.Web.CodeGenerators.Mvc那里?

第二:错误

我得到了各种错误

enter image description here

enter image description here

第一个说用metapackage安装的软件包与aspnetcore2.0不兼容任何人都经历过这个吗?关于如何处理这个问题的任何建议?

秒给出了此错误消息:

&#39; EntityFrameworkCore&#39;的类型或名称微软在&#39;微软&#39;中不存在名称空间。命名空间(是否缺少任何程序集引用?)

提前致谢!

最终

这就是我的csproj看起来像atm:

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

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <TargetFramework>net461</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.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 个答案:

答案 0 :(得分:0)

如果您使用的是.NET Core,请尝试安装NuGet包:

Microsoft.AspNetCore.All

如果您正在使用.NET Framework,那么the process is different

对于.NET Framework,我建议使用普通的Visual Studio 2017模板创建一个新的ASP.NET Core项目。这将为您提供使用.NET Framework创建ASP.NET Core 2.0项目的选项,您可以选择目标版本。然后,您需要将内容迁移到项目中。这是一个手动过程,因为项目文件格式是如此不同。一旦完成,您将得到一些编译错误,因为类已经移动到新的命名空间,如此。但是,要让它发挥作用并不难。这种方法可以确保您不会随身携带任何垃圾NuGet包。你将是一个干净的名单。