Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未从TeamCity部署带有MSBuild的WebDeploy_Msbuild_Visual Studio 2012_Teamcity_Msdeploy_Webdeploy - Fatal编程技术网

未从TeamCity部署带有MSBuild的WebDeploy

未从TeamCity部署带有MSBuild的WebDeploy,msbuild,visual-studio-2012,teamcity,msdeploy,webdeploy,Msbuild,Visual Studio 2012,Teamcity,Msdeploy,Webdeploy,我正在尝试使用MSDeploy,使用TeamCity将MVC项目部署到服务器上。在powershell中的计算机上执行此操作时,请使用以下命令: msbuild.exe .\mvc.csproj /p:PublishProfile=DevServer /p:VisualStudioVersion=11.0 /p:DeployOnBuild=True /p:Password=MyPassword /p:AllowUntrustedCertificate=true 它构建项目并将其部署到服务器(D

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

msbuild.exe .\mvc.csproj /p:PublishProfile=DevServer /p:VisualStudioVersion=11.0
/p:DeployOnBuild=True /p:Password=MyPassword /p:AllowUntrustedCertificate=true
它构建项目并将其部署到服务器(DevServer发布概要文件中定义的信息)上。输出在末尾显示了一个
MSDeployPublish
部分,在该部分中,我看到了
从源代码开始Web部署任务…
,然后有行告诉我更新了哪些文件,等等

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

我需要对TeamCity中的安装程序进行哪些更改,以使其以与从我的计算机使用MSBuild相同的方式发布和部署


(TeamCity 7.1、MSBuild 4.0、WebDeploy 3.0、Visual Studio 12、IIS 7.Related to)

我使用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
此命令也值得详细说明:

-动词: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服务器上应该同样有效。

我们使用TeamCity MSBuild步骤进行Web部署,配置如下:

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,因此我无法提供任何指导。希望这能有所帮助。

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

/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

我有完全相同的问题!我已将我使用的解决方案发布在:

基本内容包括:

  • 在生成服务器上安装Azure SDK 1.8
  • 强制/P:PublishProfileRootFolder值以确保MSBuild可以找到发布配置文件

确保已为Visual Studio安装了Microsoft Web Developer Tools功能。我的生成代理上缺少此项,但添加后,TeamCity生成工作正常。

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

您能显示您的PublishProfile的任何部分吗?我们有一个很好的WebDeploy配置,但我们不使用PublishProfile,我想看看我是否可以让我的配置适合你。这里提供了PublishProfile的净化版本:Yaakov,你当时是否放弃使用PublishProfile而改为使用其他参数?我同意这一点,但我甚至在当前步骤的生成输出中找不到任何关于生成生成包的位置的信息,该生成包随后可以部署到哪里(如果我运行相同的命令而未指定
VisualStudioVersion=11.0
),则会在我的计算机上显示此信息)。您是否能够在服务器上的命令行上本地运行TeamCity安装?您可能会获得额外的输出。无需发布数据库,只需在web.config中使用不同的连接字符串,具体取决于构建配置。通过上述方法(以及可能使用任何WebDeploy?)可以免费获得的东西是,它可以为您执行。出于某种原因,WebDeploy没有在同一解决方案中部署引用项目的dll。我还不得不放弃使用PublishProfile,而是使用上述附加参数。。真可惜。不确定为什么我们不能在此场景中使用PublishProfiles?除了您的修复之外,我还必须添加一个值为11.0的system.VisualStudioVersion参数。我们在项目中混合使用Visual Studio 2012和2013,但只有11.0在TeamCity中工作。如果我将其设置为12.0,则会再次忽略发布配置文件。