C ++ Windows Driver MSB3030 не удалось скопировать файл "", потому что он не был найден - PullRequest
0 голосов
/ 05 ноября 2018

VS2017, SDK / WDK, проект C ++

у нас есть решение (драйвер) для c ++, которое совместно используется разработчиками через Team Foundation Services - visualstudio.com (теперь называется azure devops?).

Когда я получаю последний исходный код и хочу перестроить решение, я получаю две ошибки MSB3030: «Не удалось скопировать файл« C: \ путь моего коллеги к его файлу », потому что он не был найден».

Мне показалось странным, что на одной из двух ошибок я увидел путь моего коллеги к его компьютеру. Он работает на 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 Наборы \ 10 \ build \ WindowsDriver.common.targets (1699,5): ошибка MSB3030: Не удалось скопировать файл «C: ...», поскольку он не был найден.

Я установил Any CPU на x64, потому что это не имеет никакого смысла для c ++.

1 Ответ

0 голосов
/ 06 ноября 2018

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), чтобы указать его.

Проверьте Общие макросы для команд и свойств сборки для получения дополнительной информации.

Надеюсь, это поможет.

...