gpt4 book ai didi

nuget - 在 TeamCity 中使用特定的 Roslyn 编译器版本

转载 作者:行者123 更新时间:2023-12-01 00:43:28 25 4
gpt4 key购买 nike

由于 Roslyn 编译器中的错误,我无法使用编译器的 v1.0 构建我的项目(没有使其在 1.0 上运行的解决方法)。但是,Microsoft 已在更新版本的编译器中纠正了该问题。

使用 Visual Studio 时,您可以通过添加来自 https://www.nuget.org/packages/Microsoft.Net.Compilers/ 的 NuGet 包来使用特定版本的编译器到你的项目。这会导致 Visual Studio 在构建项目时使用指定版本的编译器。

但是,当尝试在 TeamCity 上运行构建时,它似乎不知道要使用新版本的编译器。它只允许一个人选择使用哪个版本的 Visual Studio。有什么方法可以指定 TeamCity 手动使用哪个版本的编译器?

注意:我使用的是 TeamCity Professional 9.1.3(内部版本 37176),在构建步骤中我选择了 Visual Studio 2015。

在本地构建时,构建是使用:

D:\BitBucket\LocalPackages\Microsoft.Net.Compilers.1.1.0-beta1-20150928-02\build\..\tools\csc.exe /noconfig /nowarn:1701,1702,2008 ....

但是在 TeamCity 上构建时,日志显示:

[Csc] C:\Program Files (x86)\MSBuild\14.0\bin\csc.exe /noconfig /nowarn:1701,1702 .....

我还确认该包已作为 TeamCity 构建的一部分安装(在 csc 命令之前):

[Exec] Installing 'Microsoft.Net.Compilers 1.1.0-beta1-20150928-02'.

这是否只是 NuGet 在 Visual Studio UI 和命令行中的行为方式不同的一个症状?如果是这样,是否有解决方法?

更新:我从来没有弄清楚。在构建服务器上的 Visual Studio 中运行构建工作完美,但通过 TeamCity 使用完全相同的文件运行构建不起作用。

但是,Microsoft 发布了 VS2015 Update 1,它解决了我原来的问题,但不是这个特定问题。

最佳答案

Microsoft.Net.Compilers包使用标准的 Nuget 工具。具体来说,有一个 build包中的文件夹,其中包含一个 props 文件。这个 props 文件被注入(inject)到 csproj 文件中,并负责将 csc 可执行文件更改为包中的文件。

如果您使用的是 msbuild 14,则 .props 文件会更改 CscToolPath 和 CscToolExe 以指向包中的 csc.exe。因此,您只需确保 TeamCity 使用的是 msbuild 14。

您使用的是哪个版本的 TeamCity? 9.1 的文档说它支持 msbuild 14 (msbuild 2015)。如果您使用的是旧版本,您仍然可以从命令行运行程序使用 msbuild 14。

关于nuget - 在 TeamCity 中使用特定的 Roslyn 编译器版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33536189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com