免责声明:
我不是TeamBuild的专家。我知道我问的问题可能很愚蠢。
我现在拥有的
我有一个带有VS2010控制台应用程序和3个ASP.NET Web应用程序项目的ASP.NET解决方案。我在TFS2013.2服务器上使用以下选项设置了一个TeamBuild:
以drop文件夹结尾的文件是:
我想要的
我希望这个建筑能给我:
我的想法是使用默认的TFS2013构建模板TfvcTemplate.12.xaml设置一个新构建,因为我看到了一个选项,指定输出应该基于PerProject。由于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:.)我的问题
我的潜在答案
谢谢;-)
发布于 2014-06-16 12:34:05
今天,多亏了赛义德·易卜拉欣·哈希米( Sayed Ibrahim Hashimi )的博客帖子,我才明白了这一点。
基本上,它解释了在用.csproj或VS2013打开VS2010解决方案时对VS2012所做的修改。指向.targets文件的链接,在本例中,Microsoft.WebApplication.targets是相对于用于打开解决方案的VS版本创建的。
由于我正在处理的解决方案只使用VS2010,所以我所指向的.targets文件是特定于VS2010的版本,位于
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets
我手动编辑了我的3个web应用程序项目的.csproj文件,以包括Sayed的修改,然后基于TFS2013默认构建模板的构建就像一种魅力。
我的猜测是: TFBuild2013向WebDeploy MSBuild任务传递参数,而VS2010版本的.targets文件并不理解这些参数。
谢谢你的回复,丹尼尔·曼!
发布于 2014-06-14 16:13:25
对于第一个问题(将每个项目的输出分离到单独的文件夹),最好的方法是使用TFS 2013默认模板,该模板有一个标志,使其将构建的每个解决方案都放在一个单独的文件夹中。然后,为每个单独的应用程序制定解决方案。假设一个解决方案由一个应用程序及其所有依赖项组成,而不是多个应用程序。“金科玉律”是:每个解决方案一个应用程序。
对于在使用TFS2013构建过程模板时生成失败所遇到的问题,请确保在该服务器上安装了VS2013更新2 --我对该主题的研究指出了这是一个问题。
对于第二个问题,您可能不想使用web.config转换。理想情况下,您只需要构建一次二进制文件,然后就可以将它们部署到多个环境中--唯一不同的因素是配置文件。如果您使用的是web.config转换,那么您得到的配置文件取决于您构建的平台。每个环境的构建都有以下几个问题:
这里最好的方法是对web.config文件的多个版本进行源代码管理,每个环境都有一个版本,然后在部署时选择合适的配置文件。
另一种方法是使用一个支持配置文件标记化的工具--这样,您就有一个配置文件,它只包含一个标记,在发布时可以用适当的值替换。但这将需要额外的工具和配置,您可能不感兴趣。
https://stackoverflow.com/questions/24218778
复制相似问题