4

从我的本地机器到开发服务器,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 文件夹)?

4

1 回答 1

4

您是否在构建服务器上安装了 Visual Studio?起初这似乎是一件奇怪的事情(并且不是绝对必要的),但它肯定是以最简单的方式解决所有这些问题。

您可以手动将所需的目标文件从您的 PC 复制到构建服务器上,但您将进行试错游戏以使其正常工作。

此外,如果 MS 发布了新的out of band更新,就像Asp.Net and Web Tool 2012.2他们最近所做的那样,构建服务器的安装过程比尝试找出哪些目标发生了变化并手动复制它们要容易得多。

让我知道这是否有帮助。

于 2013-03-21T09:04:48.940 回答