我可以从 csharp 中的编译时环境变量中创建一个常量吗?

0

本文介绍了我可以从 csharp 中的编译时环境变量中创建一个常量吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我们使用 Hudson 来构建我们的项目,并且 Hudson 可以方便地定义环境变量,例如%BUILD_NUMBER%"编译时间.

We use Hudson to build our projects, and Hudson conveniently defines environment variables like "%BUILD_NUMBER%" at compile time.

我想在代码中使用该变量,这样我们就可以在运行时记录下构建的内容.但是我不能做 System.Environment.GetEnvironmentVariable 因为那是访问运行时环境,我想要的是这样的:

I'd like to use that variable in code, so we can do things like log what build this is at run time. However I CAN NOT do System.Environment.GetEnvironmentVariable because that is accessing the run-time environment, what I want is something like:

#define BUILD_NUM = %BUILD_NUMBER%

const string BUILD_NUM = %BUILD_NUMBER%

除非我不知道语法.有人可以指出我正确的方向吗?谢谢!

Except I don't know the syntax. Can someone please point me in the right direction? Thanks!

推荐答案

好的,这就是我最终要做的.它不是很优雅,但它确实有效.我创建了一个如下所示的预构建步骤:

Okay here's what I wound up doing. It's not very elegant, but it works. I created a pre-build step that looks like this:

echo namespace Some.Namespace > "$(ProjectDir)CiInfo.cs"
echo { >> "$(ProjectDir)CiInfo.cs"
echo     ///^<summary^>Info about the continuous integration server build that produced this binary.^</summary^> >> "$(ProjectDir)CiInfo.cs"
echo     public static class CiInfo >> "$(ProjectDir)CiInfo.cs"
echo     { >> "$(ProjectDir)CiInfo.cs"
echo         ///^<summary^>The current build number, such as "153"^</summary^> >> "$(ProjectDir)CiInfo.cs"
echo         public const string BuildNumber = ("%BUILD_NUMBER%" == "" ? @"Unknown" : "%BUILD_NUMBER%"); >> "$(ProjectDir)CiInfo.cs"
echo         ///^<summary^>String of the build number and build date/time, and other useful info.^</summary^> >> "$(ProjectDir)CiInfo.cs"
echo         public const string BuildTag = ("%BUILD_TAG%" == "" ? @"nohudson" : "%BUILD_TAG%") + " built: %DATE%-%TIME%"; >> "$(ProjectDir)CiInfo.cs"
echo     } >> "$(ProjectDir)CiInfo.cs"
echo } >> "$(ProjectDir)CiInfo.cs"

然后我将CiInfo.cs"添加到项目中,但从版本控制中忽略了它.这样我就不必编辑或提交它,并且该项目始终有一个可用的常量,即最新的内部版本号和时间.

Then I added "CiInfo.cs" to the project, but ignored it from version control. That way I never have to edit it or commit it, and the project always has a constant available that is the latest build number and time.

这篇关于我可以从 csharp 中的编译时环境变量中创建一个常量吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

C# 中的多播委托奇怪行为?
Multicast delegate weird behavior in C#?(C# 中的多播委托奇怪行为?)...
2023-11-11 C#/.NET开发问题
6

参数计数与调用不匹配?
Parameter count mismatch with Invoke?(参数计数与调用不匹配?)...
2023-11-11 C#/.NET开发问题
26

如何将代表存储在列表中
How to store delegates in a List(如何将代表存储在列表中)...
2023-11-11 C#/.NET开发问题
6

代表如何工作(在后台)?
How delegates work (in the background)?(代表如何工作(在后台)?)...
2023-11-11 C#/.NET开发问题
5

没有 EndInvoke 的 C# 异步调用?
C# Asynchronous call without EndInvoke?(没有 EndInvoke 的 C# 异步调用?)...
2023-11-11 C#/.NET开发问题
2

Delegate.CreateDelegate() 和泛型:错误绑定到目标方法
Delegate.CreateDelegate() and generics: Error binding to target method(Delegate.CreateDelegate() 和泛型:错误绑定到目标方法)...
2023-11-11 C#/.NET开发问题
14