.net VS、TFS和TeamBuild模板版本之间的兼容性? 免责声明:

.net VS、TFS和TeamBuild模板版本之间的兼容性? 免责声明:,.net,visual-studio,tfs,tfsbuild,alm,.net,Visual Studio,Tfs,Tfsbuild,Alm,我不是团队建设专家。我知道我问的问题可能很愚蠢 我现在拥有的 我有一个VS2010解决方案,包含10多个控制台应用程序和3个ASP.NET Web应用程序项目。 我使用以下选项在TFS2013.2服务器上建立了TeamBuild: TeamBuild模板是默认的TFS2010 DefaultTemplate.xaml 它以解决方案文件为目标 以drop文件夹结尾的文件包括: 控制台应用程序的所有EXE和配置文件 一个_PublishedWebsites文件夹,每个web应用程序项目包含一个

我不是团队建设专家。我知道我问的问题可能很愚蠢

我现在拥有的 我有一个VS2010解决方案,包含10多个控制台应用程序和3个ASP.NET Web应用程序项目。 我使用以下选项在TFS2013.2服务器上建立了TeamBuild:

  • TeamBuild模板是默认的TFS2010 DefaultTemplate.xaml
  • 它以解决方案文件为目标
以drop文件夹结尾的文件包括:

  • 控制台应用程序的所有EXE和配置文件
  • 一个_PublishedWebsites文件夹,每个web应用程序项目包含一个文件夹。请注意,web.config XML转换未完成
我想要什么 我希望构建能给我:

  • 每个控制台应用程序一个文件夹
  • web.config XML转换
我的想法是使用默认的TFS2013构建模板TfvcTemplate.12.xaml设置一个新的构建,因为我看到有一个选项指定输出应该基于每个项目。 生成失败,因为MSBuild未能生成web项目,并出现与WebDeploy相关的错误:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets (3009): Web deployment task failed. (Unknown ProviderOption:DefiningProjectFullPath. Known ProviderOptions:.)
我的问题
  • VS2010解决方案在由TFS2013生成模板生成时失败是否正常
  • WebDeploy似乎根本不涉及TFS2010默认构建模板,但却涉及TFS2013构建模板,这正常吗
  • 如果没有,是否可以在.csproj文件中进行一些调整,以使其由TFS2013生成模板生成
  • 我是否必须将目标文件更新为V12版本,因为构建它的是TFS2013
我的潜在答案
  • 我已经在构建服务器上安装了WebDeploy 3.5,并且已经可以使用了
  • 所有目标文件看起来都在适当的位置
谢谢;-)

对于第一个问题(将每个项目的输出分离到单独的文件夹中),最好的方法是使用TFS 2013默认模板,该模板有一个标志,使其将构建在单独文件夹中的每个解决方案放置到一个单独的文件夹中。然后,为每个应用程序制定解决方案。假设一个解决方案包含一个应用程序及其所有依赖项,而不是多个应用程序。“黄金法则”是:每个解决方案一个应用程序

对于您在使用TFS2013构建过程模板时遇到的构建失败问题,请确保该服务器上安装了VS2013 Update 2——我对该主题的研究表明这是一个问题

对于第二个问题,您可能不想使用web.config转换。理想情况下,您只需要构建一次二进制文件,然后就可以将它们部署到多个环境中——唯一的区别在于您的配置文件。如果您使用的是web.config转换,那么获得的配置文件取决于您正在构建的平台。每个环境的建筑都有一些问题:

  • 它会占用更多的时间——如果您的构建需要10分钟才能运行,并且您必须为4个环境中的每一个运行一次,那么您只需要在最后获得一个不同的配置文件就浪费了30分钟
  • 它引入了风险——如果构建服务器上的某些内容发生了更改,或者源代码管理中的某些内容发生了更改,该怎么办?突然之间,您发布的二进制文件与您测试的不一样
  • 它更难维护。您必须有一系列不同的构建定义和一系列不同的解决方案平台。你需要维护的东西越多,事情变得一团糟的可能性就越高
  • 这里最好的办法是对web.config文件的多个版本进行源代码管理,每个环境一个版本,然后在部署时选择适当的配置文件


    另一种方法是使用支持配置文件标记化的工具——这样,您就有了一个配置文件,其中只包含可以在发布时用适当值替换的标记。但这将需要额外的工具和配置,您可能对此不感兴趣。

    多亏了Sayed Ibrahim Hashimi的一篇文章,我今天才弄明白。
    基本上,它解释了在使用VS2012或VS2013打开VS2010解决方案时对.csproj所做的修改。指向.targets文件的链接(在本例中为Microsoft.WebApplication.targets)是相对于用于打开解决方案的VS版本创建的

    由于我正在使用的解决方案仅适用于VS2010,因此我所指向的.targets文件是特定于VS2010的版本,位于
    C:\ProgramFiles(x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets

    我手动编辑了我的3个web应用程序项目的.csproj文件,以包含Sayed的修改,然后基于TFS2013默认构建模板的构建工作非常出色

    我猜:TFBuild2013正在向某个WebDeploy MSBuild任务传递参数,而.targets文件的VS2010版本不理解该任务


    谢谢你的回复,@Daniel Mann

    谢谢你的回复,丹尼尔·曼。关于每个项目,好的,明白了。一种解决方案是引用所有的.csproj,而不是一个.sln。VS2013.2安装在生成服务器上。我也看到了你提到的错误,但我觉得有些不同。您发现的这些特定错误与.targets文件的v12相关。我明天再把它挖出来一点。至于web.config XML转换,我听到了您的观点,但我唯一希望它完成的时间是在将应用程序部署到我们的集成机器时。