可以在构建脚本中将常量传递给 C# 编译器
Possible to pass a constant to C# compiler in build script
我有一个 C# 文件,内容如下:
public const string QueueName = "abc";
而且我想多次构建应用程序,每次都切换这个值。无法将 QueueName
更改为编译时常量以外的任何内容。
有什么方法可以将 'pre-compiler' 变量传递给可以在构建配置或构建脚本中更改的此声明?
我用谷歌搜索了它,但似乎找不到任何解决方案。
由于这些是常量,您可以考虑使用 code generation with a T4 template 在单独的 class 文件中生成常量和值 on build。
此 class 文件中的正确常量值可以来自数组、数据库或其他外部源。
代码类似于:
<#@ output extension=".cs" #>
<#
using(SampleContext context = new SampleContext)
{
string queuename = context.Queuename.FirstOrDefault();
}
#>
internal class NotSoConstantConstants
{
public const string QueueName = "<#= queuename #>";
}
可以输出到:
internal class NotSoConstantConstants
{
public const string QueueName = "abc";
}
我最近创建了一个工具来执行此操作,它允许在构建时注入环境变量。
我认为这是比 T4 更简洁的解决方案,但实际上这是个人喜好。
我有一个 C# 文件,内容如下:
public const string QueueName = "abc";
而且我想多次构建应用程序,每次都切换这个值。无法将 QueueName
更改为编译时常量以外的任何内容。
有什么方法可以将 'pre-compiler' 变量传递给可以在构建配置或构建脚本中更改的此声明?
我用谷歌搜索了它,但似乎找不到任何解决方案。
由于这些是常量,您可以考虑使用 code generation with a T4 template 在单独的 class 文件中生成常量和值 on build。
此 class 文件中的正确常量值可以来自数组、数据库或其他外部源。
代码类似于:
<#@ output extension=".cs" #>
<#
using(SampleContext context = new SampleContext)
{
string queuename = context.Queuename.FirstOrDefault();
}
#>
internal class NotSoConstantConstants
{
public const string QueueName = "<#= queuename #>";
}
可以输出到:
internal class NotSoConstantConstants
{
public const string QueueName = "abc";
}
我最近创建了一个工具来执行此操作,它允许在构建时注入环境变量。
我认为这是比 T4 更简洁的解决方案,但实际上这是个人喜好。