我的任务是在工作中开始从.NET Framework(4.7.1)到.NET Core(2.1)的“缓慢迁移”。我们有一个非常大的应用程序,不能仅仅在.NET Core中停止开发并创建一个全新的堆栈。我一直在使用.NET Standard(2.0)库作为.NET Framework和.NET Core项目的“过渡”。但是,我遇到了一些特定于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
之前,它一直运行良好。
答案 0 :(得分:1)
您正在针对.NET Core 2.1和.NET Standard 2.0进行构建。 .NET Core是.NET Standard的超集,这意味着它具有该标准等。 File.AppendAllTextAsync
是其中之一。
.NET Core:https://docs.microsoft.com/en-us/dotnet/api/?view=netcore-2.1&term=AppendAllTextAsync
.NET标准:https://docs.microsoft.com/en-us/dotnet/api/?view=netstandard-2.0&term=AppendAllTextAsync
因此,不幸的是,您不能只是简单地将代码与.NET标准交叉编译。如果愿意,可以使用#if
表示法来编写框架特定的代码。或者,您可以坚持使用.NET Standard支持的代码,例如可以使用非异步变体:https://docs.microsoft.com/en-us/dotnet/api/?view=netstandard-2.0&term=AppendAllText