C++ Windows 驱动程序 MSB3030 无法复制文件 '' 因为找不到
Posted
技术标签:
【中文标题】C++ Windows 驱动程序 MSB3030 无法复制文件 \'\' 因为找不到【英文标题】:C++ Windows Driver MSB3030 could not copy the file '' because it was not foundC++ Windows 驱动程序 MSB3030 无法复制文件 '' 因为找不到 【发布时间】:2018-11-05 15:13:49 【问题描述】: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++ 没有任何意义。
【问题讨论】:
我们使用 v4 打印驱动程序成功构建的唯一解决方案是首先清理驱动程序项目,然后构建驱动程序项目,最后重建渲染过滤器项目。问题不限于电脑,因为我们在两台电脑上都有问题。我还没有时间测试您的解决方案,但现在如果我们按此顺序(重新)构建它可以工作。 v4 驱动程序是通过 VS17 File > New Project > .. Wizard thing... 创建的 【参考方案1】:C++ Windows 驱动程序 MSB3030 无法复制文件'',因为找不到
这个问题的原因是ItemGroup
的路径是项目文件中的绝对路径:
<ItemGroup>
<FilesToPackage Include="C:\path of my colleague\foo.xml" ...>
...
</FilesToPackage>
</ItemGroup>
不管你的同事有没有把这个文件加到源码控制中,当你从TFS服务器拉取代码到本地,把代码放到不同的本地文件夹中,绝对路径会给你带来很多麻烦,你需要手动检查 TFS 服务器上该文件的代码,并且您需要在项目中修改该文件的绝对路径。但是这个问题会在你提交代码后你的同事更新后再次出现。因为不能将绝对路径分配给两个不同的路径C:\
和E:\
。
要解决此问题,您需要将源代码中的绝对路径更改为相对路径。一般情况下,我们更喜欢将此文件添加到Solution/Project文件夹中,然后使用MSBuild Macros $(SolutionDir)
/$(ProjectDir)
来指定。
查看Common macros for build commands and properties了解更多详情。
希望这会有所帮助。
【讨论】:
以上是关于C++ Windows 驱动程序 MSB3030 无法复制文件 '' 因为找不到的主要内容,如果未能解决你的问题,请参考以下文章
npm error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装
npm error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装
C++笔记:error MSB6006: “CL.exe”已退出,代码为 2 + VS无法启动程序,系统找不到指定的文件
C++ 中 MSB ->LSB 和 LSB->MSB 的有符号 INT 转换
windows下编译caffe报错:error MSB4062: 未能从程序集 E:NugetPackagesOpenCV.2.4.10......的解决办法