10

我正在尝试使用 MSDeploy 将 MVC 项目部署到使用 TeamCity 的服务器。当我在 powershell 中的计算机上执行此操作时,使用以下命令:

msbuild.exe .\mvc.csproj /p:PublishProfile=DevServer /p:VisualStudioVersion=11.0
/p:DeployOnBuild=True /p:Password=MyPassword /p:AllowUntrustedCertificate=true

它构建项目并将其完美地部署到服务器(在 DevServer 发布配置文件中定义的信息)。输出MSDeployPublish最后显示了一个部分,在其中我看到了类似的文本Starting Web deployment task from source...,然后用行告诉我更新了哪些文件等。

当我在 TeamCity 上运行它时,使用 MSBuild 构建步骤,在同一个文件上,使用相同的参数(来自同一个工作目录)它构建项目但不发布它。相反,它具有来自构建过程的常规输出(CoreCompile、_CopyFilesMarkedCopyLocal、GetCopyToOutputDirectoryItems、CopyFilesToOutputDirectory),但实际上并没有发布任何内容。

我需要对 TeamCity 中的设置进行哪些更改,以使其以与在我的计算机上使用 MSBuild 相同的方式发布部署?

(TeamCity 7.1、MSBuild 4.0、WebDeploy 3.0、Visual Studio 12、IIS 7。与我之前的问题相关)

4

6 回答 6

12

我们使用配置如下的 TeamCity MSBuild 步骤执行 WebDeploys:

Build File Path:  Server.csproj

Command Line Parameters:
/p:Configuration=%configuration%
/p:DeployOnBuild=True 
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=https://%web.deploy.server%:8172/MsDeploy.axd
/p:DeployIisAppPath=%web.deploy.site% 
/p:AllowUntrustedCertificate=True
/p:Username=
/p:AuthType=NTLM

我们使用集成认证;根据需要进行更改以适应您的方案。我认为,它的价值在于它从头开始构建所有东西,而不依赖于预先构建的包。根据您发布的要点,我注意到您进行了一些数据库发布,我们不为此使用 WebDeploy,因此我无法提供任何指导。希望这可以帮助。

于 2013-01-10T17:56:02.830 回答
10

我使用 MSBuild.exe 打包到 zip,并使用 MSdeploy.exe 分步部署。

在命令行上部署 package.zip 文件:

"C:\Program Files\IIS\Microsoft Web Deploy V2\msdeploy.exe" -verb:sync 
     -source:package="C:\Build\MyAppName.Debug.zip" 
     -dest:auto,wmsvc=webservername,username=webdeploy,password=******* 
     -allowUntrusted=true

这个命令也值得详细解释:

-verb:sync :使网站从源同步到目标

-source:package="C:\Build\MyAppName.Debug.zip" :源是一个 MSBuild zip 文件包

-dest:auto,wmsvc=webservername :使用包文件中的设置部署到服务器。用户帐户是具有权限的操作系统级帐户。指定了主机名,但未指定 IIS 网站名称(之前在项目属性的 MSBuild 项目文件中指定)。

您可以根据您的配置修改参数。我喜欢这种方式,因为通过单独的步骤,更容易调试问题。

使用 TeamCity 构建步骤和命令行运行器。

更新: 如果您想了解如何使用 MSBuild 构建 ZIP 包的示例,请尝试以下操作:

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"
MyWebApp/MyWebApp/MyWebApp.csproj
/T:Package
/P:Configuration=Debug;PackageLocation="C:\Build\MyWebApp.Debug.zip"

这在您的本地 PC 和 CI 服务器上应该是一样的。

于 2013-01-10T02:47:28.347 回答
5

以下是最终对我有用的配置设置:

/p:Configuration=CONFIG-NAME
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=http://SITE-URL/MsDeployAgentService
/p:username="USERNAME"
/p:password=PASSWORD
/p:AllowUntrustedCertificate=True 
/P:CreatePackageOnPublish=True 
/p:DeployIisAppPath=SITE-URL
/p:MSDeployPublishMethod=RemoteAgent
/p:IgnoreDeployManagedRuntimeVersion=True
于 2013-01-10T23:13:06.673 回答
0

我有完全相同的问题!我已经发布了我使用过的解决方案:MsBuild 找不到发布配置文件

基础是:

  • 在构建服务器上安装 Azure SDK 1.8
  • 强制 /P:PublishProfileRootFolder 值以确保 MSBuild 可以找到发布配置文件
于 2014-01-28T05:01:05.857 回答
0

确保Microsoft Web Developer Tools为 Visual Studio 安装了该功能。我的构建代理中缺少此功能,但是一旦添加它,TeamCity 构建就可以正常工作。

于 2017-05-19T16:27:34.990 回答
0

当您的 MSBuild 目录中缺少构建目标路径时,可能会发生这种情况。不要试图让这些在每台开发人员机器上排队,而是从Nuget安装目标。这样一来,无论他们的机器是如何设置的,每个人都将永远是一样的。

于 2018-08-27T18:22:16.457 回答