VS2017,SDK / WDK,C ++项目
我们有一个c ++解决方案(驱动程序),可以通过Team Foundation Services-visualstudio.com(现在称为azure devops?)在开发人员之间共享。
当我执行获取最新的源代码并想要重建解决方案时,出现两个MSB3030错误: “找不到文件“我的同事的C:\ path他的文件”,因为找不到。”
我发现奇怪的是,我在两个错误之一中看到同事的电脑路径。他在C:\上工作,我在E:\
上工作正在卸载项目,我看到他的路径在这里设置:
<ItemGroup>
<FilesToPackage Include="C:\path of my colleague\foo.xml" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<PackageRelativeDirectory>
</PackageRelativeDirectory>
</FilesToPackage>
由于MSB3030,我们无法构建此解决方案。首先,我们必须分别清理特定的项目,重新构建,然后再构建另一个项目,等等。要按照正确的顺序手动执行一些步骤,反复试验,喝咖啡,将香蕉扔到PC上并祈祷猴子输出正确编码。
有人看到关于MSB3030错误的类似信息吗? 在我的电脑上,我看到了我同事的路,但是他没有看到我的路(奇怪!)。
C:\ Program Files(x86)\ Windows 套件\ 10 \ build \ WindowsDriver.common.targets(1699,5):错误MSB3030: 无法找到文件“ C:...”,因为找不到该文件。
我将Any CPU设置为x64,因为它对c ++没有任何意义。
答案 0 :(得分:0)
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)
进行指定。
检查Common macros for build commands and properties了解更多详细信息。
希望这会有所帮助。