9

我在使用 MS Build 参数运行 Team Foundation 2013 构建以进行部署时遇到问题,并且出现错误:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets (4255):Web 部署任务失败。(“Microsoft.Web.Deployment.DeploymentBaseOptions”不包含“UserAgent”的定义)

VS 2013 正在进行开发。

奇怪的是,如果我将 MSBuild 文件夹* ..\v11.0\Web*复制 到* v12.0\Web* 构建工作并进行部署。

我已经检查了 v12.0\Web\Microsoft.Web.Publishing.targets 文件,并且在 v11.0\Web\Microsoft.Web.Publishing.targets 中有一个 UserAgent 条目,但没有条目

我可以在我的计算机上使用 VS Publish 进行正常发布,但在构建服务器上它失败了有没有人成功地使用 MSBuild VS 2013 目标构建和部署?

4

2 回答 2

13

我遇到了同样的问题。对我来说,解决方案是安装 Web Deploy 3.5 ( http://www.iis.net/downloads/microsoft/web-deploy )。之后错误消失了。

于 2013-12-26T12:32:19.740 回答
0

我在 2019 年 10 月发布此消息。在此线程上的原始帖子发布近 6 年后,错误仍然存​​在,但这次是在 VS 2019 上。环顾网络后,即使重新安装 Deploy 3.5/3.6 和同样在更新 VS 之后,我终于设法通过查看 MSBuild 设置来修复它。想在这里分享它,因为这是 Google 上的热门搜索结果。

脚步:

在 VS 2019 上创建了一个简单的命令提示符应用程序。在解决方案资源管理器中右键单击该项目,单击“发布为 Azure Webjob ...”,然后在随后的对话框中进行我的 Azure 设置。

预期结果:

这个简单的控制台应用程序将作为 WebJob 发布到 Azure,就像在 VS 2017 上一样。

实际结果:

发布操作失败并显示以下消息:

Error : Web deployment task failed. ('Microsoft.Web.Deployment.DeploymentBaseOptions' does not contain a definition for 'UserAgent') Publish failed to deploy.

调查:

Visual Studio输出窗格中的错误行指向“C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\v16.0 下的文件Microsoft.Web.Publishing.targets \网络”。双击此错误行会在显示部分的位置打开文件<VSMSDeploy>。在本节中,该UserAgent属性设置为"$(_MSDeployUserAgent)"_MSDeployUserAgent又被设置在<PropertyGroup>as 下<_MSDeployUserAgent>VS$(_MSDeployUserAgentSource)</_MSDeployUserAgent>。整个 PropertyGroup 部分粘贴在下面以供参考:

<!-- UserAgent string sent to msdeploy -->
<PropertyGroup>
    <_MSDeployUserAgentSource Condition=" '$(BuildingInsideVisualStudio)' != 'true'">$(VisualStudioVersion):CmdLine</_MSDeployUserAgentSource>
    <_MSDeployUserAgentSource Condition=" '$(BuildingInsideVisualStudio)' == 'true'">$(VisualStudioVersion):PublishDialog</_MSDeployUserAgentSource>
    <_MSDeployUserAgent>VS$(_MSDeployUserAgentSource)</_MSDeployUserAgent>
</PropertyGroup>

修复:

更改元素以UserAgent= "$(_MSDeployUserAgent)"解决问题,并且 WebJob 已成功发布到我的应用服务。<VSMSDeploy>UserAgent="VS$(_MSDeployUserAgentSource)"

警告:修改此文件时请格外小心,因为不正确的更改将对来自 VS 和命令提示符的所有构建命令产生不利影响。)

结论性意见:

在对Microsoft.Web.Publishing.targets进行此更改后,VS 似乎已经进行了类似于 CommandLine 构建的 UserAgent 设置,而没有将其与 PublicDialog 构建区分开来。所有与发布相关的输出行都显示在输出窗格中,就像它们在 VS 2017 中一样,一切都很顺利。

于 2019-10-26T18:42:37.027 回答