发布ASP.NET而不进行部署

时间:2017-01-24 20:36:49

标签: c# asp.net msbuild azure-pipelines

我有一个解决方案,其中包含一个我想使用VSTS构建的ASP.NET网站。目前我只使用MSBuild构建它,但是当我复制文件时,我会收到错误 - 主要是我的Application_Start无法触发。

经过一番挖掘后,似乎可能是因为我的Web.Config尚未被编译"。我在网上看到的一切都是因为我需要发布"我的网站。问题是我只想构建这个东西,让我的发布过程负责部署。

如何生成已发布的输出(或触发App_start问题),而无需将其部署到某处。

我正在使用Visual Studio Team Services进行构建和发布。

1 个答案:

答案 0 :(得分:1)

我的经验是TFS,我认为它在功能上与VSTS相同。

构建代理有一个工作目录,每个构建包含几个文件夹:

  • a - Build.ArtifactStagingDirectory - 这是构建工件的地方。 "复制和发布构建工件"构建步骤将自动复制到此目录
  • b - Build.BinariesDirectory - 这是构建二进制文件应该去的地方
  • s - Build.SourcesDirectory - 这是下拉源代码的地方
  • TestResults - Common.TestResultsDirectory - 存储测试结果的地方。

您可以告诉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