我有一个包含大约25个项目的大型Visual Studio 2010解决方案。我们有一个自动构建过程,可以启动一个批处理文件,其中包括在.sln文件上调用msbuild。
我们现有的流程(也构建一些Excel VBA和VB6代码)从源代码控制中检出文本文件,增加“内部版本号”并重新提交。我们想要一个类似的过程来“构建标记”每个C#项目的AssemblyInfo.cs文件。
我可以编写一个小实用程序来解析每个AssemblyInfo,并根据我们已经使用的构建版本文本文件设置AssemblyTitle字段。但是,似乎编译器应该能够从常量执行此操作。网上有很多消息来源说C#缺乏一个合适的预处理器,但编译器可以使用#define做类似的事情。
问题:有没有办法在Visual Studio中定义一个从文本文件/命令行参数中提供的位置读取的编译器常量?
这样做会使我们的构建标签例程在添加更多项目时更具可扩展性,并且意味着在源代码管理中更改的文件更少。
答案 0 :(得分:0)
我找到了一个问题的解决方案,涉及引用包含以下代码的基础项目:
public static class Version
{
public const string BUILDREVISION = "10.4.0 Build 1";
public const string BUILDREVISION_ASSEMBLYVERSION = "10.4.0.1";
}
然后每个AssemblyInfo.cs文件包含: -
[assembly: AssemblyTitle("AppName.BuildLabelling v" +
Version.BUILDREVISION)]
我不想自动增加数字,因为我希望数字只在构建我们的构建服务器时增加,而不是在开发人员正常构建解决方案时。我应该在最初的问题中说清楚。
谢谢,
PW