ASP.NET Core 2.1在完整的.NET Framework上的应用

12

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

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

考虑到Azure Functions v2的当前状态,升级为全面采用.NET Core似乎有点冒险,因此我希望现在继续使用.NET Framework。


1
是的,在VS中创建新项目时,您可以选择框架。虽然可以手动编辑csproj,但通常更容易创建新项目并复制源代码。 - Rory
2
你是否考虑将共享类放入基于.NET Standard 2.0的项目中(参见https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-standard-2-0/),这些类可以在.NET Core 2.1和基于.NET 4.7.1的项目之间共享(参见https://github.com/dotnet/standard/issues/514)? - Sixto Saez
1
@SixtoSaez 我确实尝试过,但是我有依赖项,比如实体框架核心。当我想在.NET Standard 2.0项目中为dbcontext搭建脚手架时,由于必须选择运行时才能使脚手架工具正常工作,因此失败了。在另一个项目中进行脚手架搭建,然后将生成的代码移动到.NET Standard项目似乎有点像黑客行为。而且我不确定在共享类库中使用document db.core并在Azure函数项目中同时使用它们会产生什么影响。我的担忧是这可能会导致依赖地狱的出现。 - Markus S.
@SixtoSaez 特别是在这种情况下,DocumentDb 依赖关系是阻碍因素,因为我无法在 Azure Functions V1 项目中使用 DocumentDb.Core 包,因为它们都包含相同命名空间中的相同类型。 - Markus S.
没问题,我的评论更针对业务逻辑封装,而不是像EF和DI这样的基本框架。 - Sixto Saez
1个回答

16
是的。
元包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版本,因此您需要确保与元包约束匹配的版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接