MsBuild 找不到发布配置文件

问题描述 投票:0回答:5

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

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

[09:27:05][验证发布配置文件设置] GetPublishingLocalizedString [09:27:05][GetPublishingLocalizedString] C:\程序文件 (x86)\MSBuild\Microsoft\VisualStudio 11.0\Web\Microsoft.Web.Publishing.targets(4435, 5): PublishProfile 的值设置为“Test Profile”,预计 找到该文件 'C:\BuildAgent\work�93e349d61af8c\Yms.Web.Ui__profiles\Test Profile.pubxml' 但找不到。

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

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

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

非常感谢任何帮助,这让我抓狂

visual-studio visual-studio-2012 msbuild teamcity
5个回答
32
投票

我遇到了完全相同的问题,但对于 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:密码=%env.DomainPassword%

希望这对有同样想法的人有帮助!


3
投票

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


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>
    

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
    

0
投票
我已经按照以下命令解决了这个问题。

dotnet 发布 EDI_Portalwebapi.csproj /p:PublishProfile="Profile_name" /p:Password=

https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/visual-studio-publish-profiles?view=aspnetcore-8.0#:~:text=PublishProfile%3D%3CFolderProfileName %3E-,MSDeploy%3A,-.NET%20CLI

© www.soinside.com 2019 - 2024. All rights reserved.