为什么我不能使用 Humanizer 库中的 TextInfo.ToTitleCase 方法?
Why can't I use the TextInfo.ToTitleCase method in the Humanizer library?
我从他们的 GitHub page 下载了 Humanizer 库的代码,并且正在测试代码中的一些更改,这时我注意到 Intellisense window 中的黄色 "status warning" 图标TextInfo
class:
上的一些方法
我以前从未在 Intellisense 中看到过这个图标,我想知道它是什么意思。我可以在普通应用程序中毫无错误地执行此方法调用。
我也不确定 Humanizer(netstandard1.0) - Not Available
和 Humanizer(netstandard2.0) - Available
在这种情况下是什么意思。
这是我使用的代码:
public string Transform(string input)
{
TextInfo textInfo = CultureInfo.InvariantCulture.TextInfo;
return textInfo.ToTitleCase(input);
}
这给出了这个错误:
'TextInfo' does not contain a definition for 'ToTitleCase' and no accessible extension method 'ToTitleCase' accepting a first argument of type 'TextInfo' could be found (are you missing a using directive or an assembly reference?)
为什么我不能使用 Humanizer 库中的 TextInfo.ToTitleCase(...)
方法?
am also unsure what Humanizer(netstandard1.0) - Not Available and Humanizer(netstandard2.0) - Available mean in this context.
.NET Core 1.0 (.netstandart = .NET Core) 不支持 ToTitleCase
方法,但 2.0 版本支持。您可能正在使用不受支持的版本,因此会收到错误消息。
您可以查看 documentation of ToTitleCase
以了解支持的版本。
他们正在做一些叫做 "multi-targeting" 的事情,他们的代码生成两个不同版本的库,一个与 netstandard1.0
API 兼容,另一个与 [=12= 兼容] API:
<TargetFrameworks>netstandard1.0;netstandard2.0</TargetFrameworks>
TextInfo.ToTitleCase()
直到版本 2.0 才被添加到 .Net Core,因此如果您的目标是版本 2.0
之前的任何 netstandard
框架,则无法使用它.请参阅 .NET Standard 以获取 runtimes/platforms 支持哪些 .Net Standard 版本的列表。
您必须将代码限制为最低 API 支持的 API,除非您使用 "conditional compilation" 编译器指令。这些基本上是您向较低级别目标提供较高级别 API 函数的替代实现的地方。有关此示例,请参阅 Microsoft .Net Core 文档中的 How to Multitarget。
这样做的原因是提供一个更小且通常不那么复杂(代码方面)的库版本,可以在可以使用更高级别的项目中使用 API,但也是一个版本你不能使用更高级别 API。
我从他们的 GitHub page 下载了 Humanizer 库的代码,并且正在测试代码中的一些更改,这时我注意到 Intellisense window 中的黄色 "status warning" 图标TextInfo
class:
我以前从未在 Intellisense 中看到过这个图标,我想知道它是什么意思。我可以在普通应用程序中毫无错误地执行此方法调用。
我也不确定 Humanizer(netstandard1.0) - Not Available
和 Humanizer(netstandard2.0) - Available
在这种情况下是什么意思。
这是我使用的代码:
public string Transform(string input)
{
TextInfo textInfo = CultureInfo.InvariantCulture.TextInfo;
return textInfo.ToTitleCase(input);
}
这给出了这个错误:
'TextInfo' does not contain a definition for 'ToTitleCase' and no accessible extension method 'ToTitleCase' accepting a first argument of type 'TextInfo' could be found (are you missing a using directive or an assembly reference?)
为什么我不能使用 Humanizer 库中的 TextInfo.ToTitleCase(...)
方法?
am also unsure what Humanizer(netstandard1.0) - Not Available and Humanizer(netstandard2.0) - Available mean in this context.
.NET Core 1.0 (.netstandart = .NET Core) 不支持 ToTitleCase
方法,但 2.0 版本支持。您可能正在使用不受支持的版本,因此会收到错误消息。
您可以查看 documentation of ToTitleCase
以了解支持的版本。
他们正在做一些叫做 "multi-targeting" 的事情,他们的代码生成两个不同版本的库,一个与 netstandard1.0
API 兼容,另一个与 [=12= 兼容] API:
<TargetFrameworks>netstandard1.0;netstandard2.0</TargetFrameworks>
TextInfo.ToTitleCase()
直到版本 2.0 才被添加到 .Net Core,因此如果您的目标是版本 2.0
之前的任何 netstandard
框架,则无法使用它.请参阅 .NET Standard 以获取 runtimes/platforms 支持哪些 .Net Standard 版本的列表。
您必须将代码限制为最低 API 支持的 API,除非您使用 "conditional compilation" 编译器指令。这些基本上是您向较低级别目标提供较高级别 API 函数的替代实现的地方。有关此示例,请参阅 Microsoft .Net Core 文档中的 How to Multitarget。
这样做的原因是提供一个更小且通常不那么复杂(代码方面)的库版本,可以在可以使用更高级别的项目中使用 API,但也是一个版本你不能使用更高级别 API。