14

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

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

[09:27:05][ValidatePublishProfileSettings] GetPublishingLocalizedString [09:27:05][GetPublishingLocalizedString] C:\Program Files (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:VisualStudioVersion=11.0 /p:Password=james2

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

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

4

4 回答 4

29

我遇到了完全相同的问题,但对于 VS2010 Web 应用程序项目(使用 Azure SDK 1.8 更新来更新发布选项)。似乎 MS 提供的 Web 发布目标不会正确评估发布配置文件的路径。

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

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

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

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

希望这可以帮助同一条船上的人!

于 2014-01-28T04:32:57.593 回答
2

马特伍德沃德提供的答案让我更接近解决方案,但对我来说缺少一个关键步骤。具体来说,我需要为 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>
于 2017-06-22T14:06:01.680 回答
2

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

于 2017-12-18T15:38:00.560 回答
0

我在 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
于 2018-05-18T10:44:27.277 回答