Visual Studio 2010具有"发布"命令,允许您将Web应用程序项目发布到文件系统位置.我想在我的TeamCity构建服务器上执行此操作,因此我需要使用解决方案运行程序或msbuild.我尝试使用Publish目标,但我认为这可能适用于ClickOnce:
msbuild Project.csproj /t:Publish /p:Configuration=Deploy
Run Code Online (Sandbox Code Playgroud)
我基本上想要完成Web部署项目的功能,但没有加载项.我需要它来编译WAP,删除执行不必要的任何文件,执行任何web.config转换,并将输出复制到指定的位置.
我的解决方案基于Jeff Siver的回答
<Target Name="Deploy">
<MSBuild Projects="$(SolutionFile)"
Properties="Configuration=$(Configuration);DeployOnBuild=true;DeployTarget=Package"
ContinueOnError="false" />
<Exec Command=""$(ProjectPath)\obj\$(Configuration)\Package\$(ProjectName).deploy.cmd" /y /m:$(DeployServer) -enableRule:DoNotDeleteRule"
ContinueOnError="false" />
</Target>
Run Code Online (Sandbox Code Playgroud) 我正在使用visual studio 2010中的新网络打包功能进行测试,并遇到了一种情况,我使用预构建事件将所需的.dll复制到我的应用程序依赖于API调用的bin文件夹中.它们不能作为参考包含在内,因为它们不是可与interop一起使用的COM dll.
在我构建部署包时,当我选择仅包含运行应用程序所需文件的选项时,将排除这些文件.有没有办法配置部署设置以包含这些文件?我没有找到任何关于此的好文档.
从安装了Web管理服务的Windows 8到Windows Server 2012(IIS 8),我可以使用W8上的IIS管理器来管理远程服务器,但是当我执行以下命令时,我从WMSvc获得了404.7:
msdeploy.exe" -verb:dump -source:contentPath=c:\InetPub\wwwroot,computerName=https://uktnws01:8172/MsDeploy.axd,userName=corp\administrator,password=WMSvcIsCrap,authType=Basic -allowUntrusted
Run Code Online (Sandbox Code Playgroud)
我尝试了各种组合和参数.我可以telnet到那个端口,我知道它是开放的.
我只是从Windows中删除管理服务功能并重新启动.我会给苏打水倒一些零食.在此期间,如果您有任何想法,请分享.
加入我下面的实时博客并按照操作行动.
更新1
随着管理服务被删除,我现在得到了
错误:无法连接到远程服务器错误:无法建立连接,因为目标计算机主动拒绝它192.168.2.22:8172错误计数:1.
第二行是新消息!哇噢.
更新2
好吧,现在事情变得越来越糟.自重新安装以来,远程IIS控制台将在证书上发出警报,然后说,
服务器不接受远程连接.
但我认为这是因为我可能没有重新启用远程管理,除了安装该死的东西.
更新3
启用远程管理后,远程IIS再次运行,但404已返回.只是为了SEO的利益,这里是完整的错误:
Error Code: ERROR_DESTINATION_NOT_REACHABLE More Information: Could not connect to the remote computer ("uktnws01"). On the remote computer, make sure that Web Deploy is installed and that the required process ("Web Management Service") is started. Learn more at http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_DESTINATION_NOT_REACHABLE.
Error: The remote server returned an error: (404) Not Found.
Error count: 1.
Run Code Online (Sandbox Code Playgroud)
更新4
通过VPN到客户端尝试对另一个Web服务器执行相同的命令,这是一个魅力!看起来IIS在我绝对打屁股的新2012版本上是不感兴趣的.
更新5
我为WMSvc启用了失败的请求跟踪,并且已经看到404.7来自RequestFilteringModule模块.根据文档,404.7是"文件扩展名被拒绝".
http://www.iis.net/configreference/system.webserver/security/requestfiltering
但是,为.axd文件添加显式服务器规则并没有帮助.有兴趣看到这个模块,因为它对URL长度和内容大小施加了限制.您能想象在IIS托管的WCF应用程序中对此进行故障排除!哈哈.我真的哭了.
更新6 …
我们有一个在Intranet上运行的Web应用程序,我正在尝试使用Visual Studio 2010将其发布到Internet.目标服务器正在运行iis7并且Web管理服务正在运行.
在Visual Studio 2010上,我的服务URL是:
网站/应用程序是:
默认网站/ WebApp
在目的地上标记为IIS应用程序并且允许不受信任的证书被检查,我正在使用管理帐户.
Visual Studio返回以下错误:
启动Web部署将应用程序/包发布到 https://xxx.xxx.xxx.xxx:8172/MsDeploy.axd?site=Default%20Web%20Site ... C:\ Program Files\MSBuild\Microsoft\VisualStudio\v10 .0\Web\Microsoft.Web.Publishing.targets(3588,5):错误:Web部署任务失败.(远程代理(URL https://xxx.xxx.xxx.xxx:8172/MsDeploy.axd?site=无法联系默认网站.确保在目标计算机上安装并启动了远程代理服务.)
无法联系远程代理(URL https://xxx.xxx.xxx.xxx:8172/MsDeploy.axd?site=Default网站).确保在目标计算机上安装并启动了远程代理服务.收到了不受支持的回复.响应头'MSDeploy.Response'是''但是'v1'是预期的. 远程服务器返回错误:(403)禁止.
有没有有效的SSL证书发布它的任何想法?
我目前正在尝试使用Visual Studio 2010"发布"和MSDeploy的功能来处理我的网络部署需求,但有关于定制取决于我的构建配置包碰到路障.
我开发一个32位的环境中,但需要对64位环境中创建一个发布包,因此在"释放"的配置我有一个后生成事件那份第三方的64位版本的DLL注入的bin目录覆盖32位版本.当我使用"发布"功能,即使正确的64位DLL被复制到bin目录下,它不会包括在包中.
有没有办法让'Publish'包含在post build事件期间复制到bin目录中的文件?
asp.net build-process publishing visual-studio-2010 msdeploy
我正在寻找一个命令来运行MSBuild.exe
,只需要一个MVC 4项目并将其发布到给定目录.
例如,
MSBuild <solution>/<project>.csproj -publish -output=c:/folder
Run Code Online (Sandbox Code Playgroud)
这显然是不正确的语法.我正在努力简化我的问题.
这个问题讨论了构建XML,但我并没有尝试用这么多细节做任何事情.
我只是想尝试部署.
在那个问题中,有人说"MSDeploy".我可以调查一下,但这是唯一的选择吗?我无法在服务器上安装Web部署.在这种情况下,我真正需要做的就是"发布"并将已发布项目的内容发送到服务器/文件系统上的给定目录.
有没有人可以使用一个班轮?
我必须使用MSDeploy吗?
MSDeploy是否要求在服务器上安装Web部署?
不在服务器上设置Web部署需要设置一些端口,权限和安装一些IIS附加组件?
我喜欢简单地执行一些事情.
Vishal Joshi 提供了一个很好的PDC演讲,它描述了Visual Studio 2010中新的MSDEPLOY功能 - 以及如何在TFS中部署应用程序.(Scott Hanselman 也有很好的演讲,但他没有进入TFS).
您可以使用TFS2010中的MSBUILD来调用MSDEPLOY将您的程序包部署到IIS.这是通过MSBUILD的参数完成的.
该演讲解释了一些命令行参数,例如:
/p:DeployOnBuild
/p:DeployTarget=MsDeployPublish
/p:CreatePackageOnPublish=True
/p:MSDeployPublishMethod=InProc
/p:MSDeployServiceURL=localhost
/p:DeployIISAppPath="Default Web Site"
Run Code Online (Sandbox Code Playgroud)
但是这里的文件在哪里 - 我找不到任何东西?
我一整天都在努力让这个工作起来并且不能完全正确并且最终会遇到各种错误.如果我运行包的cmd
文件,它会完美展开.如果我通过Visual Studio运行WebDeploy,它也可以完美运行.
但我想通过msbuild
使用这些参数来运行整个部署,而不是单独调用msdeploy
或运行包.cmd
文件.我怎样才能做到这一点?
PS.是的,我确实有Web Deployment Agent Service
跑步.我还在IIS下运行管理服务.我试过用这两个.
我正在使用的Args:
/p:DeployOnBuild=True
/p:DeployTarget=MsDeployPublish
/p:Configuration=Release
/p:CreatePackageOnPublish=True
/p:DeployIisAppPath=staging.example.com
/p:MsDeployServiceUrl=https://staging.example.com:8172/msdeploy.axd
/p:AllowUntrustedCertificate=True
Run Code Online (Sandbox Code Playgroud)
给我 :
C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(2660):VsMsdeploy失败.(远程代理(URL https://staging.example.com:无法联系8172/msdeploy.axd?site = staging.example.com.确保在目标计算机上安装并启动了远程代理服务.)错误详细信息:远程代理(URL https://staging.example. com:8172/msdeploy.axd?site = staging.example.com)无法联系.确保在目标计算机上安装并启动了远程代理服务.收到了不受支持的回复.响应头'MSDeploy.Response'是''但是'v1'是预期的.远程服务器返回错误:(401)未经授权.
我想打包我的VS2010 Web应用程序项目,以便使用msdeploy进行部署.在开发机器上我可以使用:
MSBuild.exe "C:\path\to\WebApp.csproj" /target:package
Run Code Online (Sandbox Code Playgroud)
但在我的构建服务器上,我收到此错误:
错误MSB4057:项目中不存在目标"包".
我在构建服务器上缺少什么?
我已经使用Visual Studio 2012 RC将我的Lightswitch应用程序发布到我的localhost(Win 7,SQL 2008 R2,IIS 7.5)就好了.现在我正在尝试发布到远程服务器(Win 2008 R2,SQL 2008 R2,IIS 7.5),我遇到了麻烦.
当我尝试发布时,收到以下错误:
Web部署任务失败.(无法使用指定的进程("Web部署代理服务")连接到远程计算机("###.###.###.###"),因为服务器没有响应.请确保进程("Web部署代理服务")在远程计算机上启动.有关详细信息,请访问:http: //go.microsoft.com/fwlink/?LinkId = 221672 #ERROR_COULD_NOT_CONNECT_TO_REMOTESVC.)
我已经检查了"了解更多"链接建议查看的每个内容.我已经验证MsDepSvc和WMSVC都在运行,端口80和8172都响应端口扫描.在发布设置中,对于服务URL,我使用远程计算机的IP地址(http://###.###.#######).对于用户名,我使用的是DomainName\Administrator,这是我使用RDP登录时使用的.
我在MSDN论坛上发布了一个成员建议我将Web部署工具从V2.0回滚到V1.1.我已经完成了,但它没有改变任何东西.
在回答这个SO问题的建议后,我尝试msdeploy
从命令行运行.
从服务器上的命令行我得到:
C:\ Program Files\IIS\Microsoft Web Deploy> msdeploy -verb:dump -source:dirpath = c:\ temp,computername = http:// SeverName:80/msdeployagentservice,username = Administrator,password = XXXX -verbose -debug详细:使用ID"c12c3392-2290-44b7-9434-dbd0ff5f9385"连接到远程服务器.详细:对远程代理URL'http:// ServerName:80/msdeployagentservice '进行预身份验证,作为"管理员".MSDeploy.dirPath(name = MSDeploy.dirPath)c:\ temp(name = dirPath)(keyAttribute = c:\ temp)(linkName = Child1)
从dev机器上的命令行我得到:
C:\ Program Files\IIS\Microsoft Web Deploy V3> msdeploy -verb:dump …
我正在尝试使用MSDeploy在TFS中的Team Build上部署Web应用程序.有几个问题解决了为了调用MSDeploy而必须在MSBuild中传递的属性,但是我没有找到足够的文档来说明可用的属性.有人有可用属性列表吗?
以下是我发现的一些问题,但我无法找到属性的确切列表: