2017-08-10 121 views
4

我正在嘗試將GraphQL實現到Unity3D(版本2017.1.0f3個人版)。我正在使用.NET 4.6(實驗版),但儘管如此,Unity不支持動態關鍵字。這很奇怪,因爲.NET 4.0是.NET的一部分。除了在Unity中。我正在搜索一些解決方案如何讓它工作,但沒有動態關鍵字的解決方案。錯誤是這樣的:在Unity中使用動態關鍵字/ .NET 4.6功能

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的錯誤,但在統一安慰它顯示的錯誤也將更新究竟暫時

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? 

這是統一編輯器的錯誤,這似乎是在視覺工作室相同

+0

您是否引用了Microsoft.CSharp.dll?看到[這裏](https://stackoverflow.com/questions/11417047/c-sharp-dynamic-compilation-and-microsoft-csharp-dll-error) –

+0

不,我沒有因爲在統一之下我不能完全通過圍繞任何類型的DLL從Visual Studio,只是從這個插件文件夾 – Citrus

+0

也因此 錯誤CS1703:具有相同標識的程序集「Microsoft.CSharp」已被導入。考慮刪除其中一個引用 資產/插件/ Microsoft.CSharp.dll(與前一個錯誤相關的符號的位置) Microsoft.CSharp.dll(與前一個錯誤相關的符號的位置) 編譯失敗:1錯誤( s),0警告 – Citrus

回答

3

第一步是檢查如果Unity從MS site識別出這2個基本的C#6特性。

。嘗試 「索引初始值設定」 功能:

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}"; 

如果他們給你的錯誤,那麼這個問題是不是只是dynamic關鍵字但Visual Studio中無法識別.NET版本被統一設置的問題。

從註釋部分,您的Unity無法編譯第一個示例。


爲了可能的修復方法逐個執行步驟。做不是跳過它們。

。轉到編輯 - >項目設置 - >播放器 - >其他設置 - >配置 - >腳本運行時版本 - >實驗(.Net 4.6等效)。

。去編輯 - >項目設置 - >播放器 - >其他設置 - >配置 - > API兼容性等級 - > .NET 4.6

.Restart Unity編輯器和Visual Studio。您必須重新啓動兩者。

測試上面的C#功能。如果他們工作,則dynamic關鍵字應該很好。如果他們不這樣做,那就轉到#4。

。更新Visual Studio。這個非常重要。將Visual Studio更新到最新版本/補丁。

。如果你不能仍然得到上述兩個C#6功能編譯然後再重新安裝Visual Studio和統一之後,執行步驟#1#2再次因爲一些文件丟失。

。最後,如果你同時獲得C#6功能工作,但動態的關鍵詞仍然沒有工作然後更新從團結2017.1Unity 2017.2。此版本修復了許多.NET問題。

請注意,我使用Unity 2017.2dynamic關鍵字沒有任何問題。另外,GraphQL工作正常。

+0

如果你上面列出的1和2功能工作但動態仍然沒有,這是什麼意思? – user441521

+0

我有UNITY 2017.2.0b8 – user441521