从我的本地计算机到开发服务器,Web Deploy 3.0可以使用以下命令与Visual Studio 2012发布配置文件配合使用:
msbuild。\ myproj.csproj / verbosity:d /p:DeployOnBuild=true;PublishProfile=Develop;VisualStudioVersion=11.0;AllowUntrustedCertificate=true;用户名= xx;密码= xx
从CI服务器运行同一命令时(可能是Jenkins,但这应该适用于任何命令),该命令成功完成,但从未部署过任何网站。
比较日志输出时,构建服务器似乎跳过了很大一部分。它仅在下面列出的两行之后发生(在本地或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)和’@(_ 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文件夹)?
您是否在生成服务器上安装了Visual Studio?乍一看似乎很奇怪(而且并非绝对必要),但这无疑是解决所有这些问题的最简单方法。
您可以将所需的目标文件从PC手动复制到构建服务器上,但是您将通过反复试验来使其正常工作。
同样,如果MS发布新的out of band更新(如Asp.Net and Web Tool 2012.2他们最近所做的那样),对于构建服务器而言,安装过程比尝试确定已更改的目标并手动复制它们要容易得多。
out of band
Asp.Net and Web Tool 2012.2
让我知道是否有帮助。