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

时间:2012-02-08 13:09:46

标签: visual-studio visual-studio-2010 tfs tfs2010 tfsbuild

我有一个我在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编译符号。

1 个答案:

答案 0 :(得分:0)

我正在使用XmlPreprocess tool进行配置文件操作,具体取决于构建配置。它使用一个映射文件用于多个环境/服务器。您可以通过Excel编辑映射文件。这是非常容易使用。 在after build步骤中调用XmlPreprocess并将配置作为环境参数传递。