【问题标题】:ASP.NET Core 2.1 on full .NET Framework完整的 .NET Framework 上的 ASP.NET Core 2.1
【发布时间】:2018-12-06 13:28:10
【问题描述】:

是否可以在使用 ASP.NET Core 2.1 的同时仍然在完整的 .NET Framework 4.7.1 上运行?

我目前在 .NET 4.7.1 上使用 ASP.NET Core 2.0,我还在 4.7.1 上使用 Azure Functions v1,并在 Functions 和 Web 项目之间共享类库。

考虑到 Azure Functions v2 的当前状态,升级到 Azure Functions v2 以全面使用 .NET Core 似乎有点太冒险了,所以我现在更愿意继续使用 .NET Framework。

【问题讨论】:

  • 是的。在 VS 中,当您创建一个新项目时,您可以选择您的框架。可以手动编辑 csproj,但通常更容易创建新项目并复制源代码。
  • 您是否考虑过将共享类放入 .NET Standard 2.0 based projects 中,这些类可在基于 .NET Core 2.1 和 .NET 4.7.1 的项目之间共享?
  • @SixtoSaez 我确实做到了,但是我有实体框架核心之类的依赖项,当我想在 .net 标准 2.0 项目中构建 dbcontext 时,这失败了,因为我必须选择一个运行时才能使脚手架工具工作。在另一个项目中搭建脚手架并将生成的代码移动到 .net 标准项目对我来说似乎有点 hack。我也不确定在共享类库中使用文档 db.core 以及在 azure 函数项目中使用它们时会产生什么影响。我担心这会成为地狱的入口
  • @SixtoSaez 特别是 DocumentDb 依赖项是此场景中的关键,因为我无法在 Azure Functions V1 项目中使用 DocumentDb.Core 包,因为它们都包含相同命名空间中的相同类型。
  • 没问题,我的评论更多是针对业务逻辑封装,而不是像 EF 和 DI 这样的基础框架。

标签: .net asp.net-core .net-core azure-functions asp.net-core-2.1


【解决方案1】:

是的。

元包Microsoft.AspNetCore.AppMicrosoft.AspNetCore.All 需要netcoreapp,但它们只是要安装的其他包的集合。

如果您在元包中安装单个包,它会正常工作,就像您目前使用 2.0 一样

您的 .csproj 文件最终将与此类似...

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net471</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <Folder Include="wwwroot\" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="2.1.1" />
    <PackageReference Include="Microsoft.AspNetCore" Version="2.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Antiforgery" Version="2.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication" Version="2.1.1" />
    ...

请注意一些软件包,例如。 Microsoft.AspNetCore.Http.Connections 没有标记为 2.1.1,因此您需要确保与元包约束中的版本匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-19
    • 2016-10-07
    • 1970-01-01
    • 2017-02-13
    • 2017-03-06
    • 1970-01-01
    • 2017-10-12
    相关资源
    最近更新 更多