在Unity中使用dynamic keyword / .NET 4.6function
我正在尝试将GraphQL实现到Unity3D(版本2017.1.0f3 Personal)。 我使用的是.NET 4.6(实验版),但尽管如此,Unity还是不支持动态关键字。 这很奇怪,因为.NET 4.0是.NET的一部分。 在Unity中除外。 我正在谷歌搜索一些解决方案如何让它工作,但没有动态关键字的解决方案。 错误是这样的:
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#客户端的唯一警告。 还有人试过它才能让它发挥作用吗? 我还没有找到任何更大的努力来让它运行起来。
编辑:
我在这里使用这个客户端: https : //github.com/bkniffler/graphql-net-client
这也是visual studio的一个错误,但在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?
这是统一编辑器的错误,它似乎与visual studio中的错误相同
第一步是检查Unity是否从MS站点识别这两个基本的C#6function。
1.尝试“索引初始化器”function:
private Dictionary webErrors = new Dictionary { [404] = "Page not Found", [302] = "Page moved, but left a forwarding address.", [500] = "The web server can't come out to play today." };
2 。 然后“字符串插值”function:
private string FirstName = ""; private string LastName = ""; public string FullName => $"{FirstName} {LastName}";
如果他们给你错误,那么问题不仅仅是dynamic
关键字,而是Visual Studio无法识别Unity设置的.NET版本的问题。
从评论部分,Unity无法编译第一个示例。
逐个完成这些步骤以获得可能的修复。 不要跳过它们。
1.转到编辑 – >项目设置 – >播放器 – >其他设置 – >配置 – >脚本运行时版本 – >实验(.Net 4.6等效)。
2.转到编辑 – >项目设置 – >播放器 – >其他设置 – >配置 – > Api兼容级别 – > .NET 4.6
3.Restart Unity Editor和Visual Studio。 你必须重启两者。
测试上面的两个C#function。 如果它们有效,则dynamic
关键字也应如此。 如果他们不这样做,那么继续前进#4。
4.更新Visual Studio。 这是非常重要的。 将Visual Studio更新到最新版本/补丁。
5.如果您仍然无法获得上述两个C#6function,则重新安装Visual Studio和Unity,然后再次执行步骤#1和#2 ,因为缺少某些文件。
6.最后,如果您同时使用C#6function但动态关键字仍无效,则从Unity 2017.1更新到Unity 2017.2 。 此版本修复了许多.NET问题。
请注意,我使用Unity 2017.2与dynamic
关键字没有任何问题。 此外, GraphQL
工作正常。