你应该知道的第一件事是,这个工作在上周三进行,VM已经回滚到上周一.
我在两台机器上安装了最新版本的MS Web部署.一个在我们的网络内部,一个在DMZ(外部网络).内部仍然很好,但DMZ中的服务器不允许我部署.
正常过程是使用Web发布从VS 2010部署到http:// SITENAME/MsDeployAgentService,并使用目标服务器的本地管理员的用户名和密码.现在,当我尝试它只挂起2分钟并说它无法连接到http:// SITENAME/MsDeployAgentService.数据包嗅探器(wireshark)告诉我他们正在说话,但在验证之后他们说的是
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Server: Microsoft-HTTPAPI/2.0
MSDeploy.Response: v1
Date: Tue, 22 Mar 2011 22:46:33 GMT
B
...<results
B5
><trace eventLevel="Verbose" message="The HTTP connection (ID='5ccfecc6-0263-4e42-bc86-dbc4ee8df3d0', type ='GetTraceStatus') is being kept alive while the request is processed." />
B4
<trace eventLevel="Verbose" message="The HTTP connection (ID='5ccfecc6-0263-4e42-bc86-dbc4ee8df3d0', type ='GetTraceStatus') is being kept alive while the request is processed." />
A
</results>
0
Run Code Online (Sandbox Code Playgroud)
所以我决定打包项目(我在服务器上尝试了多个项目,没有工作)并将其复制到服务器的c :.
PROJECTNAME.deploy.cmd /T
or
PROJECTNAME.deploy.cmd /T /m:http://localhost/MsDeployAgentService /u:USERNAME /p:Password …Run Code Online (Sandbox Code Playgroud) visual-studio-2010 web-deployment msdeploy msdeployserviceagent
我一直在关注Xinyang Qiu的一篇非常有用的博客文章,gacAssembly内容是为我的Web Deploy网站清单添加元素.遗憾的是,gacAssembly提供程序似乎无法打包本地程序集(即不在GAC中的程序集)以部署到GAC.在打包时,我收到以下错误:
清单'sitemanifest'中的一个或多个条目无效.无法加载库"<完整路径>\<程序集>".给定的程序集名称或代码库无效.(HRESULT异常:0x80131047)
我认为它正在解释我作为装配名称的一部分提供的路径,这当然不是我的意思.
这有什么办法吗?是否可以将位于我本地目录中的程序集粘贴到Web Deploy程序包中以部署到服务器的GAC?
我刚刚开始玩TeamCity而且很棒.现在我让它在提交后部署到我的登台服务器,所以我总是知道我在那里运行最新版本.(这个想法来自:http://www.agileatwork.com/automatic-deployment-from-teamcity-using-webdeploy/)
但是,当网站生成一些我不想在每次发布时消除的文件时,我发现了MSDeploy的参数
-enableRule:DoNotDeleteRule
Run Code Online (Sandbox Code Playgroud)
但是如何将其附加到MSBuild命令
MSBuild.exe MvcApplication1.sln
/p:Configuration=Debug
/p:OutputPath=bin
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=https://ss-iis:8172/MSDeploy.axd
/p:username=user
/p:password=pass
/p:AllowUntrustedCertificate=True
/p:DeployIisAppPath=foo.bar.tld
/p:MSDeployPublishMethod=WMSVC
Run Code Online (Sandbox Code Playgroud)
可以这样做吗?
或者是否有更奇特的方式从TeamCity进行自动Web部署?
只想知道msbuild是在teamcity中构建还是teamcity使用构建机器上安装的msbuild.exe.我的构建机器上没有安装Visual Studio.如果没有安装Visual Studio,在机器上找到msbuild.exe的地方有点困惑.还有客户端计算机上msdeploy的要求.Plz澄清.
我意识到有十亿人问过这个错误,但我已经看过了所有这些错误.我看似不同.我没有得到任何类型的源代码错误,没有堆栈跟踪,没有任何有用的信息,因为在我的MVC.NET项目上单击"发布"时会立即发生错误.它只是一个对话框,就是这样.没有其他事情发生.
可能相关的事情:
~/PublishProfiles文件夹中.它不在那里.我知道我没有提供很多信息,但我甚至不知道从哪里开始.我很乐意根据要求提供其他任何东西.谢谢.
编辑
我应该注意它在localhost服务器上构建和运行完美.
编辑2
我回滚到源代码控制上最老的版本,它工作.我想我可以煞费苦心地完成每个变更集.另外,我确实找到了PublishProfiles文件夹.我确认没有对配置文件进行任何更改.
我有一台机器[A]运行Win2008 R2的全新安装,它在IIS上运行一个webapp.我尝试msdeploy在机器[B]上使用命令行工具将部署包发布到此机器,但我继续收到有关证书的错误.我正在使用-allowuntrusted,但它仍然继续给出同样的错误.
我一直在尝试不同的事情(比如在IIS上更改msdeploy端口,在另一台机器上安装证书,重新安装iis角色,大量其他机器)2天,绝对没有运气.
这是我运行的:
msdeploy.exe -verb:sync -source:package="Web.zip" -dest:auto,ComputerName="https://machineA:8173/msdeploy.axd?site=app.com",UserName="AdminUser",Password="SecurePassword",AuthType="Basic" -allowUntrusted
Run Code Online (Sandbox Code Playgroud)
为了使事情更有趣,这是我在包含IIS的机器上运行相同命令时获得的(即使在更改dest同步后):
Error: A '-dest' argument must be specified with the 'sync' verb.
Error count: 1.
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
编辑:我尝试在Visual Studio 2012中使用相同的设置(ip,包,身份验证)来创建部署的发布配置文件.点击"验证连接"后,我得到一个弹出窗口,询问我是否要接受此不受信任的证书.我点击是并继续发布 - 这很好.
有没有办法使用msdeploy命令行获得此行为?使用VS2012不是我的选择,因为发布必须自动完成.
编辑2:乐趣继续:它适用于另一台Windows Server 2008 R2目标机器(虽然不是一个干净的安装).那么,魔术复选框在哪里?:)
在我们的项目中,我们使用Microsoft规定的技术为每个环境提供多个配置文件,如下所述:http: //msdn.microsoft.com/en-us/library/dd465326.aspx
所以我们有以下文件:web.config web.Deploy.config web.Release.config
由于我们是一个小型开发团队,因此我们不需要让Visual Studio对这些文件进行更改,因此生活非常简单.除此之外,它们还受版本控制,以防我们需要回滚.
我们希望继续使用此方法,我们对将这些不同的文件移动到BuildMaster的配置管理系统不感兴趣.
我们如何让BuildMaster使用这些文件或使用MSDeploy创建我们的部署工件?
我可以在Visual Studio 2010中发布没有问题但是当我尝试使用Visual Studio 2013发布时,我收到此消息:
项目中不存在目标"MSDeployPublish".\ Source2\Web Projects\SubService\subservice\subservice.csproj 0 0子服务
谁能告诉我我需要做些什么来解决这个问题?它发生在2个不同的项目中.
我一直在玩TeamCity以启动和运行CI环境.
我开始关注Troy Hunt的"你正在部署错误",这非常有用,但我想将打包和部署分成两个单独的步骤,原因如下:
所以,在我的第一个MSBuild步骤中,我只有参数:
/P:Configuration=%env.Configuration%
/P:VisualStudioVersion=11.0
/P:IgnoreDeployManagedRuntimeVersion = True
然后我有第二个Build Step,它使用命令行构建运行器来执行以下msdeploy命令:
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:package="C:\ProgramData\JetBrains\TeamCity\system\artifacts\MyProject\%system.teamcity.buildConfName%\%teamcity.build.id%\MyProject.Web.csproj.zip" -dest:auto,ComputerName='https://devserver:8172/msdeploy.axd?site=MyWebsite',UserName='domain\username',Password='password',IncludeAcls='False',AuthType='Basic' -skip:objectName=dirPath,absolutePath=media$ -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -retryAttempts=2 -allowuntrusted
Run Code Online (Sandbox Code Playgroud)
这样做的问题是显然TeamCity在所有构建步骤完成之前不会发布工件,因此命令行进程失败,因为包zip文件实际上并不存在.
我已经阅读了有关发布工件的内容,而Build仍在进行中,但这看起来确实有点像黑客.
任何建议将不胜感激.
msdeploy ×10
msbuild ×4
teamcity ×3
.net ×1
asp.net ×1
asp.net-mvc ×1
buildmaster ×1
deployment ×1
gac ×1
teamcity-8.0 ×1
web-config ×1
webdeploy ×1