我有一个解决方案,其中包含一个我想使用VSTS构建的ASP.NET网站。目前我只使用MSBuild构建它,但是当我复制文件时,我会收到错误 - 主要是我的Application_Start
无法触发。
经过一番挖掘后,似乎可能是因为我的Web.Config尚未被编译"。我在网上看到的一切都是因为我需要发布"我的网站。问题是我只想构建这个东西,让我的发布过程负责部署。
如何生成已发布的输出(或触发App_start问题),而无需将其部署到某处。
我正在使用Visual Studio Team Services进行构建和发布。
答案 0 :(得分:1)
我的经验是TFS,我认为它在功能上与VSTS相同。
构建代理有一个工作目录,每个构建包含几个文件夹:
您可以告诉MSBuild将输出复制到build二进制目录。我使用的参数创建了一个可部署文件系统(XCopy / Robocopy可部署)输出和Web Deploy输出。我更喜欢文件系统可部署的输出。
创建一个Visual Studio Build步骤,并将它们用作MSBuild参数。请注意,其中一些可能不太适用于您,您应该进行试验。
/p:SkipInvalidConfigurations=true /p:DeployOnbuild=True /p:GenerateProjectSpecificOutputFolder=true /p:GenerateBuildInfoConfigFile=false /p:OutDir=$(Build.BinariesDirectory) /p:UseWPP_CopyWebApplication=true /p:PipelineDependsOnBuild=false
这会将结果设为Build.BinariesDirectory\<project name>\_PublishedWebsites
。从那里,创建一个Copy and Publish Build Artifacts步骤,其副本为$(Build.BinariesDirectory)\<project name>\_PublishedWebsites\<project name>
,用于文件系统部署。
然后稍后发布,只需将该构建工件的内容复制到您的站点目录的根目录(清除每次可能存在的任何内容)。我们在“清洁目标”选项中使用Windows Machine File Copy步骤。
我认为没有理由打扰Web Deploy。文件系统部署似乎是good enough for Stack Overflow。