2016-11-27 28 views
59

我已經安裝了Visual Studio 2017年社區已發佈的一個星期前從方法返回元組,我就開始探索的C#7無法使用Visual Studio 2017年和C#7.0

新的功能,所以我創建

class Program 
{ 
    static void Main(string[] args) 
    { 

     (int sum, int count) a = ReturnTwoValues(); 
    } 

    static (int sum, int count) ReturnTwoValues() => (1, 1); 
} 

編譯器產生一個錯誤::

Error CS8137 Cannot define a class or member that utilizes tuples because the compiler required type 'System.Runtime.CompilerServices.TupleElementNamesAttribute' cannot be found. Are you missing a reference?

我試圖找到在具有此名稱的框架的引用,但沒有運氣返回兩個值的簡單方法!

如果我們需要額外的東西來使用C#7.0功能,那麼我們需要爲每個項目做到這一點是非常奇怪的!

+0

[在asp.net應用程序中啓用c#7]的可能副本(https://stackoverflow.com/questions/42744689/enabling-c-sharp-7-in-a-asp-net-application) –

回答

86

我只是通過這個頁面跑Roslyn它描述了以下步驟來得到這個工作:

  1. 啓動一個C#項目
  2. 參考添加到從的NuGet的System.ValueTuple 包(預發佈)

enter image description here

Followi這些步驟,現在它正在工作。但是我們需要爲我們開始的每一個項目都做到這一點,這真的很奇怪!希望這一點在我們達到正式版本後得到解決!

+2

One應該在下一個版本中的東西是一個代碼修復,可以讓您輕鬆添加軟件包。 – svick

+6

這個解決方案幫助了我;即使是在2017年3月下載的VS2017 Professional的完整版本! – Nij

+0

這確實讓使用元組的球滾動 –

23

,我開始收到此錯誤後,我安裝了.NET 4.7框架,並改變了我的項目面向.NET 4.7

ValueTuple現在包括與.net 4.7,所以您不必手動引用ValueTuple 。

所有我必須做的糾正編譯錯誤是從我的項目的引用中刪除對System.ValueTuple的引用。

+0

很好,遵循你的建議,現在它已經包含在.NET 4中。7,不需要再從NuGet安裝。謝謝。 –

相關問題