0

我有一个包含大约 25 个项目的大型 Visual Studio 2010 解决方案。我们有一个自动构建过程,它启动一个批处理文件,除其他外,它在 .sln 文件上调用 msbuild。

我们现有的流程(也构建了一些 Excel VBA 和 VB6 代码)从我们的源代码管理中签出一个文本文件,增加一个“内部版本号”并重新提交它。我们想要一个类似的过程来“构建标记”每个 C# 项目的 AssemblyInfo.cs 文件。

我可以编写一个小实用程序来解析每个 AssemblyInfo 并根据我们已经使用的构建版本文本文件设置 AssemblyTitle 字段。但是,编译器似乎应该能够从常量执行此操作。网络上的许多消息来源说 C# 缺少适当的预处理器,但编译器可以使用 #define 执行类似的操作。

问题:有没有办法在 Visual Studio 中定义从文本文件/命令行参数中提供的位置读取的编译器常量?

当添加更多项目时,这样做会使我们的构建标签例程更具可扩展性,并且意味着在源代码管理中更改的文件更少。

4

1 回答 1

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)]

我不想自动增加数字,因为我希望数字仅在我们的构建服务器上构建时增加,而不是在开发人员正常构建解决方案时增加。我应该在原来的问题中说清楚。

谢谢,

私服

于 2013-09-16T13:57:07.383 回答