在使用Visual Studio 2019 Preview测试C#9的新功能时遇到了这个问题。我正在测试init设置程序,但是编译器显示以下错误消息:
错误CS0518未定义或导入了“ System.Runtime.CompilerServices.IsExternalInit”预定义类型。下面是我尝试过的代码片段:
public class Book
{
string ISBN { get; init; }
}
答案 0 :(得分:10)
这是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
答案 1 :(得分:2)
如果要继续使用.NET Core App 3.1,则需要添加类似中所述的Kinin Roza这样的类型。
但是,如果将Function2
更改为将VStack (alignment: .center, spacing: 0)
{
DatePicker(selection: self.$enddate, in: self.endMinDate()...self.endMaxDate()) {
Text("Start")
}.labelsHidden()
}
.accentColor(MyColor.bluecolor) // << this one !!
//.accentColor(.red) // << used for demo
设置为csproj
,则将解决此问题,因为此类型仅在5.0中定义。
这是我的示例控制台应用程序<TargetFramework>
文件。
net5.0