msbuild 无法复制清单,因为它没有找到
Posted
技术标签:
【中文标题】msbuild 无法复制清单,因为它没有找到【英文标题】:msbuild cannot copy manifest because it was not found 【发布时间】:2020-10-28 14:03:36 【问题描述】:我们有一个包含多个项目的 c# 框架(不是 .core)解决方案。它是由 TFS 构建的。有时(不是所有时候)我会遇到构建错误:
错误 MSB3030:无法复制文件 “c:\BuildAgent_work\27\b\Console.Admin\Product.Admin.exe.manifest” 因为没有找到。 [c:\BuildAgent_work\27\s\Console.Admin\Console.Admin.csproj]
app.manifest 文件被添加到项目的 Properties 文件夹中,我检查了它是否存在于 buildagent 源文件夹中。我检查了它在二进制文件夹中不存在。我不知道为什么在构建期间它没有被复制到那里。
事实上,我根本不知道我是否需要这个清单的东西。我想我没有。这整件事是由我的一位同事添加到项目中的,原因我不知道。是否需要为 Web 项目创建发布包?在这种情况下,为什么控制台项目需要它?添加的原因是什么?
msbuild 参数(用于构建解决方案)如下,在 TFS 构建解决方案步骤中勾选了 [x] Clean 选项。
/p:OutDir=$(Build.BinariesDirectory)
/p:GenerateProjectSpecificOutputFolder=true
/p:DeployOnBuild=true /
p:PackageAsSingleFile=true
/p:GenerateDocumentation=true
/p:DisableAllVSGeneratedMSDeployParameter=true
/t:Clean,Build,Publish
/p:RunCodeAnalysis=$(CodeAnalysis.Run);CodeAnalysisRuleSet=$(CodeAnalysis.RuleSet).ruleset;CodeAnalysisIgnoreGeneratedCode=true
/p:IncludeAppPool=true
/p:PrecompileBeforePublish=true;EnableUpdateable=false
【问题讨论】:
我从项目中删除了 app.manifest,得到了同样的错误信息。 :( 为什么? :( VS 不会自动以管理员权限运行。如果您执行exe而不是VS,代码会运行吗?要运行 VS 创建快捷方式,然后右键单击并选择 As Admin。该项目似乎名为 Console.Admin.csproj,所以我假设它应该以管理员身份运行。 @Zoltan Hernyak 好几天没有收到您的回复,请您分享您关于此问题的最新信息吗? 哦。对不起。这不是一个 ADMIN 特权项目,问题是它是在 TFS 上构建的,出现了错误,而不是在开发人员计算机上。本期未收录VS。 【参考方案1】:应用程序清单是一个 XML 文件,用于描述和标识应用程序在运行时应绑定到的共享和私有并行程序集。这些应该与用于测试应用程序的程序集版本相同。应用程序清单还可以描述应用程序私有文件的元数据。可以参考这个document。
因此,您首先需要在 csproj 中检查清单上的任何其他操作。当 MSBuild 创建发布文件时,它会根据构建定义复制文件,您可以尝试编辑 .csproj 文件,如下所示复制相关文件。 app.manifest
是你的文件路径。
<ItemGroup>
<None Update="app.manifest">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
【讨论】:
会检查这个,谢谢!现在我正在暑假。以上是关于msbuild 无法复制清单,因为它没有找到的主要内容,如果未能解决你的问题,请参考以下文章
MSBUILD:错误 MSB3428:无法加载 Visual C++ 组件“VCBuild.exe”
msbuild 错误 MSB3191:在远程服务器中发布时无法创建目录
xml MSBuild复制链接内容。来自http://mattperdeck.com/post/Copying-linked-content-files-at-each-build-using-MSB