【发布时间】:2018-09-25 12:20:08
【问题描述】:
我的任务是在工作中开始从 .NET Framework (4.7.1) 到 .NET Core (2.1) 的“缓慢迁移”。我们有一个非常大的应用程序,不能简单地在 .NET Core 中停止开发并创建一个全新的堆栈。我已经通过将 .NET Standard (2.0) 库作为 .NET Framework 和 .NET Core 项目的“过渡”来工作。但是,我遇到了一些特定于核心的代码的问题。
我的 .NET Core .csproj 文件如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netcoreapp2.1;netstandard2.0</TargetFrameworks>
</PropertyGroup>
</Project>
我必须添加 netstandard2.0 并使其成为多框架以将接口包含在我们的标准库中。
当我这样做时,在尝试使用仅在 Core 中的代码时会遇到各种构建错误。例如,我收到以下错误:
“文件”不包含“AppendAllTextAsync”的定义。
在我们删除 .NET Framework 和 Standard 代码之前,有什么方法可以在我们的应用程序中利用甚至拥有新功能? (我在一个新的解决方案中尝试了一个全新的 .NET Core 项目,它运行良好,直到我将 .csproj 更改为 TargetFrameworks。
【问题讨论】:
-
在此上下文中的多目标意味着可以针对多个平台编译程序集,但如果它们使用不同的 API 集,则它不能在不同平台上同样工作。因此,为了只拥有新功能,您需要提供条件如何使用
#if, etc等预处理器指令针对不同平台编译代码。为了利用,您需要走得更远,并为您要支持的每个平台提供足够的理想行为替代。
标签: c# .net-core .net-standard