Visual studio 2010 如何在构建过程中添加一些特定的文件?

Visual studio 2010 如何在构建过程中添加一些特定的文件?,visual-studio-2010,tfs,build-process,build-automation,Visual Studio 2010,Tfs,Build Process,Build Automation,我们正在使用TFS2010。在我们的项目中,我们有多个配置文件。每个配置文件都是特定构建所必需的 示例:项目XYZ包括三个配置文件,比如DEV-CONFING、QA-CONFIG和PROD-CONFIG文件 现在我们想找到一种方法,在构建过程中,构建过程包括正确的配置文件,而不包括其余的配置文件 例如: 针对开发人员的构建应仅拾取和复制Dev-CONFIG文件(不包括所有其他配置文件) 用于QA的构建应仅拾取和复制QA-CONFIG文件(不包括所有其他配置文件) 生产版应仅拾取和复制PROD-C

我们正在使用TFS2010。在我们的项目中,我们有多个配置文件。每个配置文件都是特定构建所必需的

示例:项目XYZ包括三个配置文件,比如DEV-CONFING、QA-CONFIG和PROD-CONFIG文件

现在我们想找到一种方法,在构建过程中,构建过程包括正确的配置文件,而不包括其余的配置文件

例如:

  • 针对开发人员的构建应仅拾取和复制Dev-CONFIG文件(不包括所有其他配置文件)

  • 用于QA的构建应仅拾取和复制QA-CONFIG文件(不包括所有其他配置文件)

  • 生产版应仅拾取和复制PROD-CONFIG文件(不包括所有其他配置文件)

  • 是否可以更改单个生成定义的设置并解决此问题

    在VS 2010和TFS 2010中,解决此问题的最佳方案是什么


    请列出所有必需的步骤,并尽可能精确,因为我是TFS 2010的新手,对整个过程没有太多经验。

    是的,这是可能的。您可以在不同的模式下保存配置文件,例如: 您可以在发布模式调试模式、发布模式和所有用户使用的公共配置文件中使用配置文件

    因此,在调试模式下构建解决方案时,将使用调试模式配置文件,在发布模式下,将使用发布模式配置文件

    为了进一步说明,以web配置为例,当您展开web配置选项卡时,您将看到两个不同模式下的配置文件

    “VS2010中的Web配置转换”解决了在编译时修改Web.Config的问题。有些人可能希望web.config在部署时而不是在编译时被修改(像我一样),这样我们就不必在从一个环境移动到另一个环境时重新编译代码,在这种情况下,您可以使用“web部署参数”

    您可以通过以下网址了解更多信息:

    web配置转换语法:


    @user2585405回复您上面的评论“但是我的案例中的所有配置都是针对相同的模式”发布模式“。该决定应取决于构建定义。因此,当我使用DEV的构建定义时,应该自动选择DEV的配置,或者,对于QA构建定义,应该自动选择相应的QA配置。”

    不管您当前是否只有一个配置。您可以添加所需的配置,右键单击解决方案并选择配置管理器。现在添加一个新配置,例如“Dev”(它可以位于“Release/Debug”中,还可以选择平台“x86、任意cpu等”)。现在为QA和PROD添加另一个配置。然后返回web.config并右键单击并选择“添加web配置转换”

    现在您应该能够看到web.Dev.Config、web.QA.Config等。根web.Config将具有所有公共属性,而Dev/QA/Prod特定的配置将仅具有特定于该配置的增量更改(您必须定义这些条目)(比如connectionstring)。编译时,可以在生成定义中选择要编译的配置(Dev、QA、prod),而不必保留多个生成定义。只需一个就足够了!编译完成后,根web.config将被替换为特定于connectionstring部件配置的值


    希望这有帮助!

    您指的是什么类型的配置文件?web.config?其他一些.NET XML配置文件?为了简单起见,假设这些配置文件是web.config或app.config文件。但在我的例子中,所有配置都是针对同一模式的“发布模式”“。该决定应取决于构建定义。因此,当我为DEV使用构建定义时,应该自动选择DEV的配置,或者为QA构建定义,应该自动选择相应的QA配置。谢谢您的回答。我将尝试这个解决方案,看看它是否能解决问题,但我想澄清一些问题,并确定您的解决方案是否也适用于以下场景。当我谈到配置时,我指的是配置文件(*.config)。所以基本上我们有不同的Web_DEV.Config、Web_PROD.Config、Web_QA.Config和…,我们基本上喜欢根据构建将正确的*.Config文件复制到构建位置。例如,如果我选择为QA构建项目,那么Web_QA.Config应该被复制并添加到QA的构建位置。是的,我明白你的问题,这正是webconfig转换所解决的问题。目前,在您的情况下,您将web.config的相同副本保留在4个不同的文件中,除了像connectionstring这样的少数设置,对吗?使用webconfig转换,您将只拥有一个具有所有公共属性的web.config。然后web.dev.config将只包含更改/delta(比如特定于dev的connectionstring)。当基于配置进行构建时,它将替换connectionstring值。同样重要的一点是:web配置转换直接用于web应用程序,而不是windows应用程序,尽管您可以解决它。