MsBuild 找不到发布配置文件

Posted

技术标签:

【中文标题】MsBuild 找不到发布配置文件【英文标题】:MsBuild not finding publish profile 【发布时间】:2013-07-24 16:42:46 【问题描述】:

我有一个 VS 2012 解决方案,其中包含我试图通过 TeamCity/MsBuild 命令行部署的两个项目(WCF C# Service App 和一个 VB Web UI)。每个项目都包含一个发布配置文件——我们称之为“测试配置文件”——在使用 IDE 执行时可以正常工作。

但是,当作为两个连续的构建步骤执行时,C# 项目部署正常,但 VB 项目失败并出现以下错误:

[09:27:05][ValidatePublishProfileSettings] GetPublishingLocalizedString [09:27:05][GetPublishingLocalizedString] C:\程序文件 (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4435, 5): PublishProfile 的值设置为“测试配置文件”,预计 找到文件 'C:\BuildAgent\work\61​​493e349d61af8c\Yms.Web.Ui__profiles\Test Profile.pubxml' 但找不到。

每个构建步骤都设置为使用 MsBuild v4.0、Run Platform x64、ToolsVersion 4.0。命令行参数为:

/P:Configuration="测试配置文件" /p:DeployOnBuild=true /p:PublishProfile="测试配置文件" /p:VisualStudio 版本=11.0 /p:密码=james2

当针对解决方案而不是项目作为单个构建步骤运行时,我收到相同的错误,除了错误消息中的“Ui_profiles”被“PublishProfiles”替换。

非常感谢任何帮助,这让我很生气

【问题讨论】:

Configuration 参数不应该是 Debug 或 Release 之类的东西,而不是 PublishProfile 参数的值吗? 这是有效构建配置的名称 值得尝试不带空格的发布配置文件名称。以前有这种事情会导致问题。 就我而言,我必须删除“。”从发布配置文件名称使其工作。 【参考方案1】:

我遇到了完全相同的问题,但对于 VS2010 Web 应用程序项目(使用 Azure SDK 1.8 更新以更新发布选项)。似乎 MS 提供的 Web Publishing Targets 无法正确评估 Publish Profiles 的路径。

我最终做了两件关键的事情:

在构建服务器上安装 Azure SDK (1.8)(否则发布配置文件被忽略) 在 Teamcity 构建配置中强制使用“PublishProfileRootFolder”参数(否则会使用 MS Web Publishing Targets 提供的错误路径)

我的 MSBuild 命令参数如下所示:

/P:DeployOnBuild=true /P:PublishProfile=[我的个人资料名称(不带文件扩展名)] /P:PublishProfileRootFolder="%teamcity.build.checkoutDir%\Source\Web Application\My Project\PublishProfiles"(您的发布配置文件的存储位置) /P:AllowUntrustedCertificate=true /P:Password=%env.DomainPassword%

希望这对同一条船上的人有所帮助!

【讨论】:

/p:PublishProfileRootFolder 为我修复了它,但值周围没有引号。 耶!!哦,天哪,是的! ...两周...“在构建服务器上安装 Azure SDK (1.8)(否则发布配置文件被忽略)”我使用 MSBuild 12 将构建服务器升级到 2008 R2 并且停止工作。其他所有解决方案都是“停止使用发布配置文件,使用命令行属性”,但这太糟糕了,我希望它们受到源代码控制。感谢上帝 +MattWoodward ... 我特别使用了这个链接:azure.microsoft.com/en-gb/downloads/archive-net-downloads 我们使用 VS 2012 和 /p:VisualStudioVersion=11.0 所以我下载了 VS 2012 链接。我猜它修复了 v11 目标?这些链接是启动 WPI 5 并将其设置为安装一组特定文件的 WPI 自动加载程序。漂亮和自动。澄清一下,确切的链接/版本是“2.6”标题下的 VS 2012,它的列表中包含 VS 2012 的最新版本。 +RoboJ1M 真的很高兴我能帮助你,伙计,当你用 TC 整理你的构建并且事情开始出错时,这是一个噩梦般的领域!【参考方案2】:

Matt Woodward 提供的答案让我更接近解决方案,但我缺少一个关键步骤。具体来说,我需要为 MSBuild 任务指定 publishProfileRootFolder 属性,如下所示:

<Target Name="Publish">
    <MSBuild Targets="Build" Projects="$(SolutionDir)\$(ProjectFile)"
    Properties="DeployOnBuild=true;publishProfile=UAT;publishProfileRootFolder=$(PublishProfileRootFolder);publishUrl=$(PublishUrl)" />
</Target>

我还选择将 $(PublishProfileRootFolder) 的值直接嵌入到 MSBuild 项目文件中,而不是将其作为命令行参数传递:

<PropertyGroup>
    <PublishProfileRootFolder>$(MSBuildProjectDirectory)\MyProjectPath\Properties\PublishProfiles</PublishProfileRootFolder>
</PropertyGroup>

【讨论】:

【参考方案3】:

今天遇到了类似的问题。就我而言,这是一个“路径太长”的问题。 当我缩短发布配置文件的名称时,Web 部署包的构建没有问题。

【讨论】:

类似,我有一个 .在发布配置文件名称中,如果失败,直到我删除。【参考方案4】:

我在一个 API Web 项目中遇到了这个问题。在我的情况下,解决方案是添加属性:WebPublishProfileFile,就像我使用属性:PublishProfile。然后这个错误信息就消失了。

"c:\Windows\Microsoft.Net\Framework64\v4.0.30319\MSBuild.exe" C:\Projects\WebApp\WebAPIProject.csproj /p:DeployOnBuild=true /p:PublishProfile="C:\Projects\Publishes\WebAppPublishProfile.pubxml "/p:WebPublishProfileFile=C:\Projects\Publishes\WebAppPublishProfile.pubxml

【讨论】:

以上是关于MsBuild 找不到发布配置文件的主要内容,如果未能解决你的问题,请参考以下文章

MSBuild 忽略发布配置文件配置

Msbuild 正在发布所有文件夹和源代码

MSBuild + Bamboo 部署:构建一次并进行多次部署?

MsBuild 发布网站而不使用发布配置文件

ios 使用发布配置构建到设备“找不到此可执行文件的有效配置文件。”

代码设计错误:删除过期配置文件后找不到配置文件