【问题标题】:How do I enable C# 7 builds in Team Foundation Server 2015?如何在 Team Foundation Server 2015 中启用 C# 7 构建?
【发布时间】:2017-11-13 03:45:47
【问题描述】:

我们在本地安装了 Team Foundation Server (TFS) 2015。我们希望使用 Visual Studio 2017 来利用最新的 C# 语言功能。我们还没有准备好升级到 TFS 2017。允许在 TFS 2015 中构建最新的 C# 语言功能需要哪些步骤?

【问题讨论】:

    标签: c# tfs tfs-2015 c#-7.0 visual-studio-2017


    【解决方案1】:

    我没有完全遵循这些步骤,但根据我所学到的,我认为它们会起作用:

    1. 在 XAML 构建配置服务器上安装 Visual Studio 2017 Build Tools
    2. 将这些行添加到 TFSBuildServiceHost.exe.config 文件中:
      <configSections>
        <section name="msbuildToolsets" type="Microsoft.Build.Evaluation.ToolsetConfigurationSection, Microsoft.Build.Utilities.Core, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" requirePermission="false" />
      </configSections>
      <msbuildToolsets>
        <toolset toolsVersion="15.0">
          <property name="MSBuildToolsPath" value="C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin" />
        </toolset>
        <toolset toolsVersion="latest">
          <property name="MSBuildToolsPath" value="C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin" />
        </toolset>
      </msbuildToolsets>
    

    C:\Program Files\Microsoft Team Foundation Server 14.0\Tools\TFSBuildServiceHost.exe.config

    (如果没有这个,我永远不会弄明白 post。谢谢jonesy2488!)

    1. 重新启动 XAML 构建配置服务。
    2. 更改 XAML 构建过程模板以包含 ToolVersion="15.0" 参数:
    <mtba:RunMSBuild DisplayName="Run MSBuild" OutputLocation="[OutputLocation]" CleanBuild="[CleanBuild]" CommandLineArguments="[String.Format(&quot;/p:SkipInvalidConfigurations=true {0}&quot;, AdvancedBuildSettings.GetValue(Of String)(&quot;MSBuildArguments&quot;, String.Empty))]" ConfigurationsToBuild="[ConfigurationsToBuild]" ProjectsToBuild="[ProjectsToBuild]" ToolVersion="15.0" ToolPlatform="[AdvancedBuildSettings.GetValue(Of String)(&quot;MSBuildPlatform&quot;, &quot;Auto&quot;)]" RunCodeAnalysis="[AdvancedBuildSettings.GetValue(Of String)(&quot;RunCodeAnalysis&quot;, &quot;AsConfigured&quot;)]" />
    

    【讨论】:

    • *将它们添加到配置文件的顶部,仅从根目录开始一层:)
    • 如果您不再使用 XAML 构建怎么办?
    【解决方案2】:

    只需安装最新版本的 Microsoft.Net.Compilers 块包

    https://www.nuget.org/packages/Microsoft.Net.Compilers>> .Net 编译器包。引用此包将导致使用包中包含的 C# 和 Visual Basic 编译器的特定版本构建项目,而不是任何系统安装的版本。

    此包可用于编译针对任何平台的代码,但只能使用桌面 .NET 4.6+ Full Framework 运行。

    【讨论】:

    • 谢谢。我添加了原始链接。 @hvd
    • 我假设您的意思是在 TFS 服务器上安装软件包?
    • 不,将它安装在您的 c# 项目中,就像您安装的其他 nuget 包一样。您也可以使用 Visual Studio 2015 打开您的项目! Visual Studio 将显示 c# 7 中引入的语法错误,但项目本身已成功构建。这种方法适用于任何基于 msbuild 的构建,包括 tfs
    • 在 VS 2017 中,我将 Compilers 包和 ValueTuple 包添加到我的项目中。它在 Visual Studio 中本地工作。但是,当我在构建服务器上运行它时,出现此错误: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.CSharp.targets (316): The "Microsoft.CodeAnalysis.BuildTasks.Csc" task无法从程序集 E:\...\3\190\src\packages\Microsoft.Net.Compilers.2.2.0\build\..\tools\Microsoft.Build.Tasks.CodeAnalysis.dll 加载。无法加载文件或程序集 'file:///E:\...\3\190\src\packages\Microsoft.Net.Compilers.2.2.0\tools\Microsoft.Build.Tasks.CodeAnalysis.dll'
    • 是的,我只会运行 20 多个项目......或者我一劳永逸地修复它并使用公认的答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 2010-10-03
    • 2013-07-02
    相关资源
    最近更新 更多