gpt4 book ai didi

roslyn - 在独立的构建环境中使用 Roslyn 的共享编译?

转载 作者:行者123 更新时间:2023-12-02 10:32:01 29 4
gpt4 key购买 nike

我们最近将构建系统从 VS 2013 升级到 2015 Update 2,构建时间显着增加。我们的构建环境是独立的,因此我们从包(使用 devpath)而不是从安装位置运行 MSBuild。查看日志,构建时间的增加几乎全部发生在 csc 构建任务中。在计算机上安装 MSBuild 没有任何影响,但如果我们从安装位置而不是独立位置运行,构建时间与我们在 2013 中看到的类似。从安装位置运行时,我们可以看到共享编译正在进行从消息“使用目录中的编译器的共享编译:C:\Program Files (x86)\MSBuild\14.0\bin”中使用。目前,我们的印象是启用共享编译将有助于缩短构建时间,但我们还无法在我们的独立环境中使其正常工作。将“UseSharedCompilation”设置为 true 没有任何影响,并且不会在构建期间出现上述消息。

从安装位置以外的路径运行 MSBuild 时,是否可以启用与 Roslyn 的共享编译?

最佳答案

您是否尝试过完全覆盖“Csc”任务?我使用预处理(即“/pp:out.txt”)开关从命令行评估了一个示例 CSharp 项目,打开“out.txt”,发现对“UseSharedCompilation”的唯一引用是一种形状或其他与 Csc 构建任务相关的内容。

在 GitHub.com 上的所有文本文件中进行暗中搜索,发现了 E! UseSharedCompilation 的真实好莱坞故事。以下内容来自 NuGet 包“Microsoft.Net.Compilers”:

  <!-- The UsingTask, UseSharedCompilation, and ToolPath/Exe variables all interact to 
choose which compiler path to use and whether or not to use the compiler server.
If UsingTask and UseSharedCompilation are set then the compiler server next to the
task will be used (i.e., the one in this package).
If UseSharedCompilation is false or ToolPath/Exe are set the compiler server will
not be used and the compiler exe at the ToolPath, if set, will be executed, otherwise
the executable in the MSBuild install path will be executed. -->

因此,根据上面的 Xml 注释,您将必须采用一些 MSBuild 技巧来通过“UseSharedCompilation”实现您的独立构建环境。有关上述代码片段的全文,请参阅https://raw.githubusercontent.com/dotnet/roslyn/c5b249b16f7d67ee1645a1b75fa3de6f16314672/build/NuGetAdditionalFiles/Microsoft.Net.Compilers.props

关于roslyn - 在独立的构建环境中使用 Roslyn 的共享编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39458663/

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