C ++ Windows驱动程序MSB3030无法复制文件“”,因为未找到

时间:2018-11-05 15:13:50

标签: c++ visual-studio msbuild visual-studio-2017

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 ++没有任何意义。

1 个答案:

答案 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了解更多详细信息。

希望这会有所帮助。