将.NET Core 2.0类库转换为.NET Standard


69

有没有一种方法可以轻松地将针对.NET Core 2.0的类库转换为.NET Standard?

如果我理解正确,那么如果希望在针对不同.NET框架(例如.NET Framework,.NET Core,Xamarin等)的项目中最大化类库的可重用性,那么针对.NET Standard是一个更好的主意-前提是目标所需的.NET Standard版本中提供了所有必需的API。

这就是为什么要将类库从.NET Core 2.0转换为.NET Standard 1.6或.NET Standard 2.0的原因。

Answers:


79

在项目文件中,可以将目标编译指向netstandard正确的版本。

范例Proj.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard1.6</TargetFramework>
  </PropertyGroup>
</Project>
...

Microsoft提供了有关定位类型的良好文档

DOTNET标准是不是一个框架或库,它是一个抽象的指令集:哪些功能应该有System.ArrayStringList,等。当前,有不同的实现: .NET Framework,.NET Core,Mono,Xamarin,Windows Phone。这意味着不同的实现可以重新编译和重用您的库定位netstandard。对于NuGet软件包,这是一个很好的选择。

您可以使用这些版本,并找到库所需的最小功能集。每个Dotnet标准都扩展了先前版本的功能。因此,选择的目标版本越少,库将支持的平台越多。


虽然.Net Standard不是框架,但仍可以在project.csproj文件的<TargetFramework>标记中或项目的“属性”->“目标框架”下拉框中进行设置。命名很困难!
Scuzzlebutt

53

您可以编辑csproj文件(可以在VS中通过右键单击项目文件来完成)并进行更改

<TargetFramework>netcoreapp2.0</TargetFramework>

<TargetFramework>netstandard2.0</TargetFramework>

软件包Microsoft.AspNetCore.All 2.0.0支持:netcoreapp2.0(.NETCoreApp,Version = v2.0)
lohiarahul

在删除软件包引用后,它说未找到静态主要方法
lohiarahul

好了,它起作用了,但是它引起了更多的问题,这些问题比原始警告:D更糟。顺便说一句,我相信我的.net核心应用程序是2.1而不是2.0,即“ <TargetFramework> netcoreapp2.1 </ TargetFramework>”。
Zeek2

1
从.net标准转换为.net核心时,它可以工作
Tristan Djahel

我这样做了,在此更改之后,“属性”中的“目标框架”为空。这会导致负面的征服吗?
K.Oleksiak

1
  1. 转到项目文件夹
  2. 打开.csproj文件
  3. 更换目标框架

    netcoreapp2.2netstandard2.0

看到这张图片更清晰

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.