在使用Visual Studio 2019 Preview测试C#9的新功能时遇到了这个问题。我正在测试初始化设置器,但是编译器显示以下错误消息:
错误CS0518未定义或导入了“ System.Runtime.CompilerServices.IsExternalInit”预定义类型。以下是我尝试过的代码片段:
public class Book
{
string ISBN { get; init; }
}
这是Visual Studio 2019中的一个小错误,尚未修复。为了解决这个问题,您需要在项目的任何地方添加一个以IsExternalInit
名称空间命名的伪类System.Runtime.CompilerServices
。这样就可以了。
如果编写一个库,最好将这个类设置为内部类,否则您可能会得到两个都定义相同类型的库。
namespace System.Runtime.CompilerServices
{
internal static class IsExternalInit {}
}
编辑(2020年11月16日):
根据我从C#语言团队的原则开发负责人Jared Parsons得到的答复来看,以上问题不是错误。编译器会引发此错误,因为我们正在针对较旧的.NET Framework版本编译.NET 5代码。请参阅下面的消息:
感谢您抽出宝贵时间提出此反馈问题。不幸的是,这不是错误。该
IsExternalInit
类型仅包含在net5.0
(以及将来的)目标框架中。在针对较旧的目标框架进行编译时,您将需要手动定义此类型。
链接到Visual Studio开发人员社区上的报告:https : //developercommunity.visualstudio.com/content/problem/1244809/error-cs0518-predefined-type-systemruntimecompiler.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句