如何为 XSLT 代码片段配置 CruiseControl 的 C# 版本?

Posted

技术标签:

【中文标题】如何为 XSLT 代码片段配置 CruiseControl 的 C# 版本?【英文标题】:How do I configure CruiseControl's C# version for XSLT code snippets? 【发布时间】:2021-09-08 06:09:30 【问题描述】:

我正在尝试设置一个 CruiseControl.NET 实例,该实例使用包含 C# sn-ps 的自定义 XSLT 显示其构建结果。

这曾经在另一个实例上工作(我不再可以使用它的配置 - 我只有原始 XSLT 文件),但当前实例抱怨某些“更新”的 C# 关键字,例如 var

这让我觉得 CC.NET 使用的 XSLT 处理器当前使用的是旧的 C# 编译器。不幸的是,我找不到有关如何修改该行为的任何提示或文档。

CC.NET 中是否有任何选项可以确定 XSLT 处理器使用哪种 C# 语言版本/编译器?

【问题讨论】:

【参考方案1】:

最后,原来是这样的:

将 CC.NET 定位到最新的 .NET 版本 在 IIS 中配置 AppPool 以使用 .NET 4 和 通过编写类似<compilation defaultLanguage="c#" targetFramework="4.7.2"/> 的内容,在CC.NET Web 仪表板的Web.config 文件中明确目标版本

【讨论】:

【参考方案2】:

我对 CruiseControl 一无所知,但在纯 .NET 中,我认为您需要添加 NuGet 包 https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/3.6.0,然后在您的 App.config 中,您需要声明 CodeDom 部分以使用特定的 C# 语言版本

<system.codedom>
    <compilers>
  <compiler extension=".cs" language="c#;cs;csharp" warningLevel="4" compilerOptions="/langversion:7.3 /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=3.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

要获得 XslCompiledTransform,请使用较新的 C# 编译器/CodeDom。

在https://***.com/a/63293441/252228 中描述了一个问题,即“将 \roslyn 子目录移动到 \bin\roslyn”,因为编译器在安装在 roslyn 中时在 bin\roslyn 中查找。

【讨论】:

以上是关于如何为 XSLT 代码片段配置 CruiseControl 的 C# 版本?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 apollo 客户端生成片段类型?

如何为片段设置观察者

如何为 GraphQLObjectType 的 GraphQLList 定义 Relay 片段?

Solr Highlighting:如何为同一字段请求多个片段长度?

如何为每个片段保存一个变量值以重用它? [关闭]

如何为导航到实现底部导航栏的活动中的上一个片段进行后推操作?