c++ - C++ Windows 驱动程序 MSB3030 无法复制文件 '' 因为找不到
问题描述
VS2017、SDK/WDK、C++项目
我们有一个 c++ 解决方案(驱动程序),通过 Team Foundation Services - visualstudio.com(现在称为 azure devops?)在开发人员之间共享。
当我执行获取最新源代码并想要重建解决方案时,我收到两个 MSB3030 错误:“无法复制文件“C:\path of my colleague his file”,因为找不到。”
我发现奇怪的是,我在两个错误之一中看到了我同事他的电脑的路径。他在 C:\ 上工作,我在 E:\ 上工作
卸载项目,我看到他在这里设置了路径:
<ItemGroup>
<FilesToPackage Include="C:\path of my colleague\foo.xml" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<PackageRelativeDirectory>
</PackageRelativeDirectory>
</FilesToPackage>
由于 MSB3030,我们无法构建此解决方案。首先,我们必须单独清理特定项目,重建它,然后构建另一个项目等。几个步骤以正确的顺序手动执行,反复试验,喝咖啡,向电脑扔香蕉并祈祷猴子输出正确编码。
有没有人看到关于 MSB3030 错误的类似情况?在我的电脑上,我看到了我同事的路径,但他没有看到我的路径(奇怪!)。
C:\Program Files (x86)\Windows Kits\10\build\WindowsDriver.common.targets(1699,5):错误 MSB3030:无法复制文件“C:...”,因为找不到。
我已将 Any CPU 设置为 x64,因为它对 c++ 没有任何意义。
解决方案
C++ Windows 驱动程序 MSB3030 无法复制文件 '' 因为找不到
出现这个问题的原因是ItemGroup
项目文件中的路径是绝对路径:
<ItemGroup>
<FilesToPackage Include="C:\path of my colleague\foo.xml" ...>
...
</FilesToPackage>
</ItemGroup>
不管你的同事有没有把这个文件加到源码控制中,当你从TFS服务器拉取代码到本地,把代码放到不同的本地文件夹中,绝对路径会给你带来很多麻烦,需要手动检查 TFS 服务器上该文件的代码,您需要在项目中修改该文件的绝对路径。但是这个问题会在你提交代码后你的同事更新后再次出现。因为一个绝对路径不能分配给两个不同的路径 C:\
和E:\
.
要解决此问题,您需要将源代码中的绝对路径更改为相对路径。通常,我们更喜欢将此文件添加到 Solution/Project 文件夹,然后使用 MSBuild 宏$(SolutionDir)
/$(ProjectDir)
来指定它。
检查构建命令和属性的通用宏以获取更多详细信息。
希望这可以帮助。
推荐阅读
- reactjs - 在行悬停时显示蚂蚁设计弹出框
- android - http包中的respnse.body没有返回所需的内容
- python - 有没有办法阻止自动下载组织者重新定位下载文件?
- sql - 如何从sql中的每个组中找到最小值?
- javascript - Firebase v9 Firestore 在 React JS 中按 id 创建文档
- python - 来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:380:启动容器进程导致:exec:“python”:
- delphi - 是否可以在 Delphi 中声明具有通用值类型的 TDictionary?
- filter - WP过滤器/动作
- discord - Discord.js - 音频资源无法正常播放
- ruby-on-rails - Ruby 将整数拆分为整数数组