从我的本地机器到开发服务器,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,但这应该适用于任何服务器)运行相同的命令时,该命令成功完成,但没有部署任何网站。
比较日志输出时,构建服务器似乎跳过了很大一部分。它发生在下面列出的 2 行之后(这 2 行输出在本地或 CI 服务器上运行时是相同的):
项目“C:_Application\proj\src\proj.Web\proj.Web.csproj”中文件“C:\windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets”中的目标“PrepareForRun”(目标“CoreBuild”取决于它):在项目“proj.Web.csproj”中完成构建目标“PrepareForRun”。
在本地运行时,接下来会显示如下所示的内容(加上数百行日志记录):
由于错误条件,已跳过目标“InsertAdditionalWebCofigConnectionStrings”;($(InsertAdditionalWebCofigConnectionStrings) And '@(_ConnectionStringsToInsert)' != '') 被评估为 (True And '' != '')。在项目“C:_Application\proj\src\proj.Web”的文件“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets”中定位“_CleanWPPIfNeedTo” \proj.Web.csproj”(目标“PipelineCollectFilesPhase”取决于它):任务“ReadLinesFromFile”
在 CI 服务器上,此目录似乎缺失:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets
缺少目标会导致它静默失败吗?这个文件夹来自哪里(缺少 CI 服务器上的整个 Web 文件夹)?