如何在 TFM (Target Framework moniker) 和 FrameworkName 之间转换?
How to convert between TFM (Target framework moniker) and FrameworkName?
例如
netstandard2.0
(来自 Supported target frameworks)在 *.csproj
文件中用作 <TargetFramework>
或在 NuGet 中用作文件夹名称包内部结构,
和
.NETStandard,Version=v2.0
被 System.Runtime.Versioning.FrameworkName
class 的构造函数接受,或者可以是 TargetFrameworkAttribute.FrameworkName
的值。
如何将那些 字符串 从一种形式转换为另一种形式?至少一个(任何)方向。
您可以使用NuGet.Frameworks的源代码:
这里是将TFM转换为FrameworkName的方法:
https://github.com/NuGet/NuGet.Client/blob/dev/src/NuGet.Core/NuGet.Frameworks/NuGetFrameworkFactory.cs#L575
(例如 netstandard2.0
到 .NETStandard,Version=v2.0
)
更新 #1
好消息是它可以作为 NuGet 包使用:
https://www.nuget.org/packages/NuGet.Frameworks/
这是一个 .NET 6 控制台应用程序:
using NuGet.Frameworks;
using System.Runtime.Versioning;
var tfmNetstandard20 = NuGetFramework.ParseFolder("netstandard20");
var fwNetstandard20 = new FrameworkName(tfmNetstandard20.DotNetFrameworkName);
Console.WriteLine(tfmNetstandard20);
Console.WriteLine(fwNetstandard20);
输出将是:
.NETStandard,Version=v2.0
.NETStandard,Version=v2.0
例如
netstandard2.0
(来自 Supported target frameworks)在 *.csproj
文件中用作 <TargetFramework>
或在 NuGet 中用作文件夹名称包内部结构,
和
.NETStandard,Version=v2.0
被 System.Runtime.Versioning.FrameworkName
class 的构造函数接受,或者可以是 TargetFrameworkAttribute.FrameworkName
的值。
如何将那些 字符串 从一种形式转换为另一种形式?至少一个(任何)方向。
您可以使用NuGet.Frameworks的源代码:
这里是将TFM转换为FrameworkName的方法: https://github.com/NuGet/NuGet.Client/blob/dev/src/NuGet.Core/NuGet.Frameworks/NuGetFrameworkFactory.cs#L575
(例如 netstandard2.0
到 .NETStandard,Version=v2.0
)
更新 #1
好消息是它可以作为 NuGet 包使用: https://www.nuget.org/packages/NuGet.Frameworks/
这是一个 .NET 6 控制台应用程序:
using NuGet.Frameworks;
using System.Runtime.Versioning;
var tfmNetstandard20 = NuGetFramework.ParseFolder("netstandard20");
var fwNetstandard20 = new FrameworkName(tfmNetstandard20.DotNetFrameworkName);
Console.WriteLine(tfmNetstandard20);
Console.WriteLine(fwNetstandard20);
输出将是:
.NETStandard,Version=v2.0
.NETStandard,Version=v2.0