MSBuild 忽略发布配置文件配置

Posted

技术标签:

【中文标题】MSBuild 忽略发布配置文件配置【英文标题】:MSBuild ignoring publish profile configuration 【发布时间】:2018-09-18 15:57:16 【问题描述】:

我正在尝试使用 MSBuild 通过命令行发布一堆 Web 服务和一个网站。当我发布时,Web 服务发布成功,但我的网站在检查日志时没有,我意识到 msbuild 忽略了指定发布配置文件中的构建配置并使用默认配置,即 Debug|AnyCpu。我在 SO 和互联网上漫游,发现了一些文章,但没有一个对我有用。

Other SO article

我希望能够让 MSBuild 了解我正在尝试通过发布配置文件进行发布。我测试了发布配置文件和视觉工作室,并能够执行发布。

这是我的 msbuild 命令

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MsBuild.exe "PATH_TO_PROJECT\PROJECT.csproj" /nodeReuse:false /nologo /p:PublishProfile="FolderProfile" /p:DeployOnBuild=True

日志

BeforeTargets 属性中列出的目标“_ConvertPdbFiles”位于 "C:\程序文件 (x86)\MSBuild\4.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets (34,37)" 在项目中不存在,将被忽略。 在 AfterTargets 属性中列出的目标“_CollectPdbFiles” "C:\程序文件 (x86)\MSBuild\4.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets (34,70)" 在项目中不存在,将被忽略。 在 BeforeTargets 属性中列出的目标“_CollectMdbFiles” "C:\程序文件 (x86)\MSBuild\4.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets (41,38)" 项目中不存在,将被忽略。 在 AfterTargets 属性中列出的目标“_CopyMdbFiles” "C:\程序文件 (x86)\MSBuild\4.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets (41,71)" 项目中不存在,将被忽略。项目 节点 1 上的“C:\Git\DXT\DXT.UI.WEB.APP.DEVICES\Dxt.Web\Dxt.Web.csproj” (默认目标)。 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(609,5): 错误:未为项目设置 OutputPath 属性 'Dxt.Web.csproj'。请检查以确保您指定了一个 此项目的配置和平台的有效组合。 配置='调试'平台='AnyCPU'。你可能会看到这个 消息,因为您正在尝试构建一个没有解决方案的项目 文件,并指定了一个非默认配置或平台 此项目不存在。 [C:\Git\DXT\DXT.UI.WEB.APP.DEVICES\Dxt.Web\Dxt.Web.csproj] 完成 建筑工程 “C:\Git\DXT\DXT.UI.WEB.APP.DEVICES\Dxt.Web\Dxt.Web.csproj”(默认 目标) -- 失败。

构建失败。

“C:\Git\DXT\DXT.UI.WEB.APP.DEVICES\Dxt.Web\Dxt.Web.csproj”(默认 目标)(1)->(_CheckForInvalidConfigurationAndPlatform 目标)-> C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(609,5): 错误:未为项目设置 OutputPath 属性 'Dxt.Web.csproj'。请检查以确保您指定了一个 此项目的配置和平台的有效组合。 配置='调试'平台='AnyCPU'。你可能会看到这个 消息,因为您正在尝试构建一个没有解决方案的项目 文件,并指定了一个非默认配置或平台 此项目不存在。 [C:\Git\DXT\DXT.UI.WEB.APP.DEVICES\Dxt.Web\Dxt.Web.csproj]

0 Warning(s)
1 Error(s)

经过时间 00:00:00.09

我尝试提供特定配置以避免 Debug|AnyCpu 组合,但遇到了错误,因为该网站有一个名为 Release.Custom 的自定义配置,并且依赖于没有该配置的项目。

非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

如果有人遇到这种情况,我可以通过将 Configuration 标记的值更改为我的自定义 BuildConfiguration (即“Release.Custom”)来修复我的错误。考虑到我已经花了一天的时间,这非常愚蠢。

【讨论】:

感谢您在这里分享您的解决方案,您可以Accept it as an Answer。这可能对阅读此线程的其他社区成员有益,我们可以关闭此线程。 谢谢Leo,我刚做了,2天前没让我接受答案

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

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

如何在 Azure Devops 中使用 msbuild 创建具有发布和调试配置的 nuget 文件

使用 msbuild 我想使用来自 teamcity 的值更新配置文件

Jenkins配置MSBuild实现自动部署(MSBuild+SVN/Subversion+FTP+BAT)

如何使用 MSBuild 为每个项目的每个构建配置提供不同的 OutputPath?

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