从我的本地计算机到开发服务器,Web Deploy 3.0可以使用以下命令在Visual Studio 2012发布配置文件中正常工作:
msbuild。\ myproj.csproj / verbosity:d /p:DeployOnBuild=true;PublishProfile=Develop;VisualStudioVersion=11.0;AllowUntrustedCertificate=true;username=xx;password=xx
当从CI服务器运行相同的命令时(恰好是Jenkins,但这应该适用于任何),该命令成功完成,但是没有部署过任何网站。
比较日志输出时,构建服务器似乎跳过了大部分。它出现在下面列出的两行之后(当运行本地或在CI服务器上时,这两行输出相同):
在文件中定位“PrepareForRun” 来自项目的“C:\ windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets” “C:_Application \ proj \ src \ proj.Web \ proj.Web.csproj”(目标 “CoreBuild”取决于它): 在项目“proj.Web.csproj”中完成构建目标“PrepareForRun”。
在本地运行时,后面会显示以下内容(再加上数百行记录):
由于错误条件,目标“InsertAdditionalWebCofigConnectionStrings”被跳过; ($(InsertAdditionalWebCofigConnectionStrings)和'@(_ ConnectionStringsToInsert)'!='') 被评价为(真和''!='')。 在文件“C:\ Program Files”中定位“_CleanWPPIfNeedTo” (x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web \ Microsoft.Web.Publishing.targets“来自 项目“C:_Application \ proj \ src \ proj.Web \ proj.Web.csproj” (目标“PipelineCollectFilesPhase”取决于它): 任务“ReadLinesFromFile”
在CI服务器上,此目录似乎缺失:
C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web \ Microsoft.Web.Publishing.targets
缺少的目标会导致它无声地失败吗?此文件夹来自何处(缺少CI服务器上的整个Web文件夹)?
答案 0 :(得分:4)
您是否在构建服务器上安装了Visual Studio?一开始做起来似乎很奇怪(并不是绝对必要的),但它肯定是解决所有这些问题的最简单方法。
您可以手动将所需的目标文件从PC复制到构建服务器上,但是您将玩一个试错游戏以使其正常工作。
此外,如果MS发布新的out of band
更新,例如他们最近执行的Asp.Net and Web Tool 2012.2
更新,那么构建服务器的安装过程要比尝试找出更改的目标并将其复制更容易手动
如果有帮助,请告诉我。