110

1 週間前にリリースされた Visual Studio 2017 Community をインストールし、C# 7 の新機能の調査を開始しました。

そこで、2 つの値を返す単純なメソッドを作成しました。

public class Program
{
    public static void Main(string[] args)
    {
        (int sum, int count) a = ReturnTwoValues();
    }

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

コンパイラがエラーを生成しています:

エラー CS8137 コンパイラが必要とする型 'System.Runtime.CompilerServices.TupleElementNamesAttribute' が見つからないため、タプルを使用するクラスまたはメンバーを定義できません。参照がありませんか?

この名前のフレームワークで参照を見つけようとしましたが、運がありませんでした!

C# 7.0 の機能を使用するために追加のものが必要な場合、プロジェクトごとにそれを行う必要があるのは非常に奇妙です。

4

4 に答える 4

133

Roslynに関するこのページを実行したところ、これを機能させるための次の手順が説明されています。

  1. C# プロジェクトを開始する
  2. NuGet からパッケージへの参照を追加するSystem.ValueTuple (プレリリース)

ここに画像の説明を入力

これらの手順に従って、現在は機能しています。しかし、開始するすべてのプロジェクトでそれを行う必要があるのは、非常に奇妙です! 公式リリースに達したら、これが修正されることを願っています!

于 2016-11-27T07:39:28.373 に答える
69

.Net 4.7 Framework をインストールした後にこのエラーが発生し始め、プロジェクトをターゲット .Net 4.7 に変更しました。

ValueTuple は .Net 4.7 に含まれるようになったため、ValueTuple を手動で参照する必要はありません。

コンパイル エラーを修正するために必要だったのは、プロジェクトの参照から System.ValueTuple への参照を削除することだけでした。

于 2017-06-26T23:53:21.910 に答える
5

.NET 4.7.2 に更新した後もこのエラーが発生し、次を使用して nuget パッケージを再インストールすることで修正できました。

Update-Package -Reinstall
于 2019-10-25T10:44:10.343 に答える