我从GitHub页面下载了人道主义程序库的代码,并且在测试代码中的一些更改时,当我看到TextInfo类上的一些方法时,我注意到Intellisense窗口中有一个黄色的“状态警告”图标:

我以前从未在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‘不包含'ToTitleCase’的定义,也找不到接受'TextInfo‘类型的第一个参数的可访问扩展方法'ToTitleCase’(您缺少使用指令还是程序集引用?)
为什么不能在人机库中使用 TextInfo.ToTitleCase(...) 方法?
发布于 2018-08-21 18:11:33
他们正在执行名为“多目标”的操作,他们的代码生成两个不同版本的库,一个与netstandard1.0 API兼容,另一个兼容netstandard2.0 API:
<TargetFrameworks>netstandard1.0;netstandard2.0</TargetFrameworks>TextInfo.ToTitleCase()直到2.0版本才被添加到.Net核心中,所以如果您在版本2.0之前针对任何netstandard框架,则无法使用它。有关哪些运行时/平台支持哪个.Net标准版本的清单,请参见.Net。
除非使用“条件编译”编译器指令,否则必须将代码限制在由最低API支持的API上。从本质上讲,您可以将高级API函数的替代实现提供给较低级别的目标。有关此问题的示例,请参阅中的如何实现多目标。
这样做的原因是为了提供一个更小、通常不那么复杂(代码明智)的库版本,它可以在可以使用更高级别API的项目中使用,但也可以在不能使用更高级别API的项目中使用。
发布于 2018-08-20 22:11:54
在这种情况下,我也不确定什么是人道主义器(netStandard1.0)--不可用,而人道主义器(netStandard2.0)--指的是什么。
ToTitleCase方法在.NET Core1.0 (.netstandart = .NET Core)中不受支持,但在2.0版本中得到了支持。您可能使用的是不受支持的,因此您会得到错误。
您可以查看文件编制 ToTitleCase以查看它在哪个版本中得到支持。
https://stackoverflow.com/questions/51939050
复制相似问题