C# 在Unity中使用动态关键字/.NET 4.6功能

C# 在Unity中使用动态关键字/.NET 4.6功能,c#,database,unity3d,C#,Database,Unity3d,我正在尝试将GraphQL实现到Unity3D(2017.1.0f3个人版)中。我使用的是.NET4.6(实验版),但尽管如此,Unity不支持动态关键字。这很奇怪,因为.NET4.0是.NET的一部分。除了团结。我在谷歌上搜索如何让它工作的解决方案,但没有找到动态关键字的解决方案。错误是: Severity Code Description Project File Line Suppression State Error CS1980 Cannot define

我正在尝试将GraphQL实现到Unity3D(2017.1.0f3个人版)中。我使用的是.NET4.6(实验版),但尽管如此,Unity不支持动态关键字。这很奇怪,因为.NET4.0是.NET的一部分。除了团结。我在谷歌上搜索如何让它工作的解决方案,但没有找到动态关键字的解决方案。错误是:

Severity    Code    Description Project File    Line    Suppression State
Error   CS1980  Cannot define a class or member that utilizes 'dynamic' 
because the compiler required type 
'System.Runtime.CompilerServices.DynamicAttribute' cannot be found. Are you 
missing a reference?    skiing-prototype (1)    D:\skiing-prototype 
(1)\Assets\Scripts\GraphQL.cs   62  Active
这是使用GraphQL C#client的唯一警告。有人试过让它工作吗?我还没有发现任何更大的努力来启动和运行它

编辑:

我在这里使用此客户端:

这也是VisualStudio的一个错误,但在Unity控制台中,它也显示了错误,将立即更新确切的内容

Assets/Scripts/GraphQL.cs(80,16): error CS1980: Dynamic keyword requires 
`System.Runtime.CompilerServices.DynamicAttribute' to be defined. Are you 
missing System.Core.dll assembly reference?

这是unity编辑器错误,这似乎与visual studio中的错误相同。第一步是检查unity是否从中识别这两个基本的C#6功能

1。尝试“索引初始值设定项”功能:

如果他们给您错误,那么问题是而不是仅是
动态
关键字,而是Visual Studio无法识别Unity设置的.NET版本的问题

在注释部分,Unity未能编译第一个示例


一个接一个地完成这些步骤,以获得可能的解决方案。不要跳过它们

1。转到编辑-->项目设置-->播放器-->其他设置-->配置-->脚本运行时版本-->实验版(.Net 4.6等效版本)

2。转到编辑-->项目设置-->播放器-->其他设置-->配置-->Api兼容级别-->.NET 4.6

3。重新启动Unity编辑器和Visual Studio。您必须重新启动这两个程序

测试上述两个C#功能。如果它们起作用,那么
动态
关键字也应该起作用。如果他们不这样做,那就转到第4题

4。更新Visual Studio。这是非常重要的。将visual Studio更新至最新版本/修补程序

5。如果仍然无法编译上述C#6功能,请重新安装Visual Studio和Unity,然后再次执行步骤1和#2,因为某些文件丢失

6。最后,如果两个C#6功能都正常工作,但动态关键字仍不工作,则从Unity 2017.1更新到。此版本修复了许多.NET问题


请注意,我使用的是
动态
关键字,没有任何问题。另外,
GraphQL
工作正常。

我似乎找到了解决方案

导航到
Edit>Project Settings>Player>Other Settings>Configuration>API Compatibility Level
,并从
.NET Standard 2.0
更改为
.NET 4.x

这立即消除了编译器错误,并允许我使用dynamic关键字运行代码


让我知道这是否有用

您是否引用了Microsoft.CSharp.dll?看不到,我不知道,因为在Unity下,我不能从visual studio传递任何类型的dll,只能从这个插件文件夹传递。另外,由于这个错误CS1703:已经导入了具有相同标识的程序集“Microsoft.CSharp”。考虑删除引用资产/插件/微软中的一个。CsAXP.DLL(与先前错误相关的符号位置)微软.cSARP.DLL(与先前错误相关的符号的位置)编译失败:1个错误,0警告Visual Studio版本是什么?Visual Studio 2017社区如果您上面列出的1和2功能有效,但动态功能仍然无效,这意味着什么?我有UNity 2017.2。0b8@JDOaktown这是问题还是评论?我必须使用System.Collections.Generic插入;为了让这个“字典”声明起作用。
private Dictionary<int, string> webErrors = new Dictionary<int, string>
{
    [404] = "Page not Found",
    [302] = "Page moved, but left a forwarding address.",
    [500] = "The web server can't come out to play today."
};
private string FirstName = "";
private string LastName = "";
public string FullName => $"{FirstName} {LastName}";