代码之家  ›  专栏  ›  技术社区  ›  Paul

元组在VS 2017中不起作用

  •  3
  • Paul  · 技术社区  · 8 年前

    我在Visual Studio 2017中有一个C#库,我正在尝试在界面中使用元组:

    IEnumerable<(Guid Id, string name)> GetFoo ();
    

    我已经添加了一个参考(通过NuGet)到 System.ValueTuple .

    Visual Studio和ReSharper都没有检测到此行的问题,但在生成时会出现错误:

    ------ Build started ------ 
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\Workflow.targets(121,5):
    error : Type expected
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\Workflow.targets(121,5):
    error : Invalid token '(' in class, struct, or interface member
    declaration
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\Workflow.targets(121,5):
    error : Identifier expected; 'string' is a keyword
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\Workflow.targets(121,5):
    error : ; expected
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\Workflow.targets(121,5):
    error : Method must have a return type
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    

    这表明它不是使用C#7编译的。

    我的目标是。NET Framework 4.6.2。

    我尝试过的事情:

    • 安装Visual Studio的最新更新
    • 通过属性明确使用C#7编译项目>构建(>);高级(&T);语言版本
    • 添加对的引用 Microsoft.Net.Compilers

    没有一个产生影响。


    编辑: 不是的副本 C# 7 .NET / CLR / Visual Studio version requirements ,因为解决方案(NuGet包)并没有解决问题。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Paul    8 年前

    我想我已经找出了问题的根源。

    项目导入:

    <Import Project="$(MSBuildToolsPath)\Workflow.Targets" />

    这是生成输出中错误的来源。如果使用上述代码将其导入到一个普通的控制台项目中,则可以重现错误。

    推荐文章