使用.csproj文件中的条件编译符号(DefineConstants)生成TFS



我有一个在TFS 2010版本中构建的解决方案。此解决方案及其构建有3个配置集(开发、集成、发布)。我已经将构建设置为构建所有这些,并且它基本上运行良好。

在这个解决方案中,有一个Silverlight项目,它根据正在构建的配置设置不同的条件编译符号,因为每个配置都有不同的web服务URL,如下所示:

    private const string STR_WS_EndPoint =
#if INTEGRATION
        "Integration_WS_EndPoint";
#elif DEVELOPMENT
        "Development_WS_EndPoint";
#elif DEBUG
        "Debug_WS_EndPoint";
#else
        "Release_WS_EndPoint";
#endif

当我在Visual Studio中构建这些不同的配置时,它会为每个配置选择正确的字符串,但当TFS构建不同的配置后,它们都会以"Release_WS_EndPoint"字符串结束(我使用ILSpy进行了检查),即没有任何条件符号处于活动状态。我如何让TFS构建了解这些编译符号?我不能在构建中使用"MSBuild Arguments"字段,因为正如我所说,它构建了所有不同的配置,所以我需要它像Visual Studio那样使用.csproj编译符号。

我使用XmlPreprocess工具来根据构建配置操作配置文件。它为多个环境/服务器使用一个映射文件。您可以通过Excel编辑映射文件。它很容易使用。在生成后步骤中调用XmlPreprocess,并将配置作为环境参数传递。

最新更新