且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2023-08-20 14:36:10

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

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.