我已经成功设置了一个MSBuild脚本,该脚本在本地运行时构建并打包我的站点并将包放在所需的文件夹中.但是,在Server 2008上运行它时,构建将运行没有错误,但它永远不会创建包.
我比较了两台机器的日志,它们的启动方式相似,我的本地机器引用了包裹请求.
ValidateGlobalPackageSetting:
$(PackageAsSingleFile) is True
$(PackageFileName) is C:\GIT\BamBamV2\output\package\BamBamV2.zip. Validating...
Run Code Online (Sandbox Code Playgroud)
......然后继续移动一大堆东西.
在构建服务器上没有提到这一点,它只是完成构建没有错误或警告.
我想知道它是否与我在构建脚本中调用包装的方式有关
<Target Name="CompileSolution" >
<MSBuild Projects="$(SourceFolder)\$(ProjectName).sln" Properties="Configuration=$(Configuration);OutDir=$(ProjectBuildDirectory);DeployOnBuild=true;DeployTarget=Package;PackageLocation=$(PackagePath)">
</MSBuild>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我传递的是整个解决方案,而不是特定的项目,所以这可能与它有关.
山姆:)
我正在尝试将Web部署工具包与我们的MVC3项目一起使用,整体部署工作正常但我们的数据库连接字符串的密码包含百分比(%)字符,后跟两个数字.部署工具包似乎正在将其转换为Hex字符替换.有没有办法防止这个字符替换并仍然保持连接字符串在开发人员机器上可用?我尝试在Web.Debug.Config文件中添加替换,甚至添加%25而不仅仅是%来尝试让它替换%字符,它仍然替换完整的值.
例:
<connectionStrings>
<add name="MyDB" connectionString="server=Server1;uid=user1;pwd=abc123%72;database=Database1;"
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
被取代
<connectionStrings>
<add name="MyDB" connectionString="server=Server1;uid=user1;pwd=abc123r;database=Database1;"
</connectionStrings>
Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何使用msdeploy与我的MVC站点能够自动化部署,包括在远程服务器上设置IIS.
我使用以下命令来创建包:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe Clients\PokerLeagueWebSite\PokerLeagueWebSite.csproj /T:Package /p:Configuration=Deployment
Run Code Online (Sandbox Code Playgroud)
我的设置如下:
local dev box using VS2010 + GIT
GITHUB for repo
Teamcity for CI server (different machine to dev box)
remote (same network) UAT server
Run Code Online (Sandbox Code Playgroud)
如果我勾选"包含在IIS中配置的IIS设置"和"包含此Web项目使用的应用程序池设置"并在我的开发框中构建软件包,那么从那里发布它可以很好地工作.这是我使用的命令:
C:\myproject\Packages\Deployment\PokerLeagueWebSite>PokerLeagueWebSite.deploy.cmd /Y /M:192.168.10.98:8172 /U:administrator /P:password
Run Code Online (Sandbox Code Playgroud)
这会在我的UAT服务器中创建虚拟目录,一切都很顺利.问题是当我提交github并且CI服务器下载并构建它时.当然,CI服务器上没有设置虚拟目录,因此构建/包失败.
我想要做的是使用msdeploy提供的包装,并能够远程部署站点和IIS.我想有几个选择:
1)将MVC项目文件更改为硬代码iis设置,以便在运行构建包时,它会创建具有正确设置的XML文件,以便可以从任何计算机进行部署.我认为这可以通过项目根目录中的package.xml文件来完成,但我不知道如何设置所有应用程序池和虚拟目录设置.感觉就像我在那里的一半,但无法得到最后的推动.
2)使用powershell更改创建的包XML文件,以便添加提取IIS设置.
第一个选项是可取的,因为它将所有信息保存在一个位置,您不需要记住在部署之前运行额外的脚本.
我相信我可以通过使用VS创建包并获得我需要的设置然后编写脚本来计算第二个选项,但我没有线索并且在阅读它时花了一些公平而没有任何成功我将如何做选项一.
NB
在我发布之前阅读一些建议的问题我可以看到某种可能性:
这个问题讨论了在msdeploy命令上传递额外的值,看起来没问题,但不是内部构建过程可以这么说.不确定要使用的所有命令,但我可以肯定谷歌.
这个链接似乎继续以上:http://msdn.microsoft.com/en-us/library/ee814764.aspx
此页面介绍了选项2的可能性.http://learn.iis.net/page.aspx/1082/web-deploy-parameterization/
认为这是方法:在网站的根目录中使用parameters.xml来获取项目内容:http: //vishaljoshi.blogspot.com/2010/07/web-deploy-parameterization-in-action.html
编辑
我继续阅读和测试这个.使用项目根目录中的parameters.xml文件,我可以在那里得到参数.我的问题似乎是archive.xml文件.这是非常不同的,如果我没有使用IIS设置复选框勾选,导致程序包无法正确安装的原因.我已经开始阅读有关[project] .wpp.targets文件的内容,该文件可能会有所帮助,但很可能会丢失这个atm.
编辑2
所以我认为我需要做的是获取[project] .sourcemanifest.xml文件来改变它的一些设置.我相信这就是驱动archive.xml的原因,这就是现在的不同之处.我认为我的parameters.xml工作正常.
不使用IIS时,sourcemanifest.xml如下所示:
<?xml version="1.0" encoding="utf-8"?>
<sitemanifest>
<IisApp path="C:\hoh_code\GIT\ai-poker-project\Clients\PokerLeagueWebSite\obj\Deployment\Package\PackageTmp" managedRuntimeVersion="v4.0" />
<setAcl path="C:\hoh_code\GIT\ai-poker-project\Clients\PokerLeagueWebSite\obj\Deployment\Package\PackageTmp" setAclResourceType="Directory" />
<setAcl path="C:\hoh_code\GIT\ai-poker- project\Clients\PokerLeagueWebSite\obj\Deployment\Package\PackageTmp" …Run Code Online (Sandbox Code Playgroud) 我正在尝试将msdeployMVC应用程序用于运行在命令行上的windows7机器.并不断收到此错误:
错误代码:ERROR_DESTINATION_NOT_REACHABLE更多信息:无法连接到目标计算机("192.168.xxx.xxx").在目标计算机上,确保已安装Web Deploy并且已启动所需的进程("Web管理服务").错误:远程服务器返回错误:(404)Not Found.错误计数:1.
我已经验证了Wmsvc(似乎正在使用)和MsDepSvc正在运行.并且防火墙已禁用.在浏览器中,当我访问https://192.168.xxx.xxx:8172/msdeploy.axd时,我收到了服务器错误404,似乎比命令行停止的位置更远.
我可以在线找到的关于设置IIS7和Web部署的大多数说明都适用于MS服务器.我的本地计算机和Windows7计算机都安装了相同版本的Msdeploy.
在Visual Studio 2012中,使用发布配置文件和Web部署可以简化部署.然而,它仍然缺少一些东西,或者可能是我还不知道如何使用它.
PublishProfileName.pubxml我已经检查过源控件中而不是PublishProfileName.pubxml.user每个用户都是本地的?我至少可以保存用户名,但显然不希望将其签入.PublishProfileName.pubxml而是存储在PublishProfileName.pubxml.useras中LastUsedBuildConfiguration.编辑
适用于发布的命令行是
MSBuild.Exe MyProject.sln /p:Configuration=QA /p:DeployOnBuild=true;PublishProfile=PublishToQA;AllowUntrustedCertificate=true /p:authType=NTLM /p:UserName=
Run Code Online (Sandbox Code Playgroud)
在此我想省略/p:Configuration=QAif配置是否成为发布配置文件本身的一部分.
好的,这是一个奇妙的错误.我有一个2012解决方案,在2012 TFS服务器上执行MSBuild.传递给构建过程模板中"MSBuild Arguments"字段的参数如下:
/ p:DeployOnBuild = true/p:PublishProfile = ProfileForProjectA/p:PublishProfile = ProfileForProjectB /p:VisualStudioVersion=11.0
我从TFS回来的错误是....
C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4435):PublishProfile的值设置为'ProfileForProjectA',期望在''找到文件' C:\ Builds\1\Solution\Solution\Sources\Solution\ProjectB\Properties\PublishProfiles\ProfileForProjectA.pubxml'但找不到它.
换句话说,构建服务器似乎希望每个发布配置文件(*.pubxml)都在每个PublishProfiles文件夹中.这两个项目的发布方法是"文件系统".
唯一解决它的是将ProfileForProjectA添加到ProjectB的PublishProfiles文件夹,反之亦然,但这似乎不是一个非常优雅的解决方案.任何人都可以重现这种行为吗?有没有人有更优雅的解决方案?我错过了什么吗?
提前致谢.
今天我使用msbuild将Web应用程序部署到iis服务器.如何使用msdeploy(命令行)执行相同的操作?
MSBuild.exe myproject.csproj
/P:VisualStudioVersion=11.0
/P:Password=pass
/P:AllowUntrustedCertificate=true
/P:DeployOnBuild=True
/P:PublishProfile=deploytest
/P:DeployIISAppPath="Default Web site"
/P:MsDeployServiceUrl=my.server.com
/P:Configuration=Release
Run Code Online (Sandbox Code Playgroud) 我正在尝试为我们的一些ASP.NET应用程序设置部署链.选择的工具是Web Deploy(msdeploy) - 目前.不幸的是我遇到了问题.
因此,链的高级概述是:
Msdeploy使部署新实例变得容易,但我对如何执行"升级"安装感到困惑.主要问题是web.config文件.每个客户端肯定会在那里进行一些自定义以适应他们的特定环境.安装程序本身可以在首次安装时设置一些更重要的参数(通过msdeploy的参数机制实现),但是他们可以手动执行其他操作.
另一方面,我们开发人员偶尔也会对web.config进行更改,添加一些新设置或删除过时的设置.所以我不能告诉msdeploy完全忽略该文件.我需要某种先进的XML修改机制.它可能是开发人员维护的脚本,但它只需要在升级时运行,而不是新安装.
我不知道如何做到这一点.
除此之外,有时还有一些完全奇怪的升级逻辑.例如,应用程序附带了我们公司的徽标,但是有些客户已经替换了.png文件来显示自己的徽标.最近我们需要更新徽标 - 但仅限于没有用自己的徽标替换它的客户.
同样,可能有一些缓存文件夹可能需要在某些升级时清除,而在其他升级时则不需要清除.或者包含可能无法触及的用户内容的文件夹(但在初始安装时带有默认内容).等等.
您通常如何为msdeploy包实现这种双重行为?我真的需要为每个应用程序创建2个不同的包吗?
我正在使用MSDeploy在部署时更改我的服务的web.config.除了现在我正在开发一个生成自己的parameters.xml文件的Lightswitch应用程序之外,这种方法很有效.因此,虽然我可以在部署时配置Lightswitch特定参数,但我还没有想出一种方法来注入我自己的参数.我当然可以在发布后修改parameters.xml.是否有更直接的方式告诉Lightswitch包含我的参数?
我正在使用msdeploy将网站代码推送到4个不同的服务器(测试和生产服务器).在前3个工作正常,但第4个给我一个ERROR_CERTIFICATE_VALIDATION_FAILED错误.我正在使用-allowUntrusted选项.
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:iisApp="E:\workspace\testDeploy\outproject\_PublishedWebsites\<webfolder>" -dest:iisApp="mycompany.com",ComputerName="https://<hostip>:8172/MsDeploy.axd",UserName="<userid>",Password="****",AuthType="Basic" -allowUntrusted -enableRule:AppOffline -skip:objectName=filePath,absolutePath="^.*<webfolder>\\web.*\.config$|^.*mycompany\.com\\web.*\.config"
Error Code: ERROR_CERTIFICATE_VALIDATION_FAILED
More Infenter code hereormation: Connected to the remote computer ("<hostip>") using the specified process ("Web Management Service"), but could not verify the server's certificate. If you trust the server, connect again and allow untrusted certificates. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_CERTIFICATE_VALIDATION_FAILED.
Error: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
Error: The remote certificate is invalid according to the validation …Run Code Online (Sandbox Code Playgroud)