Я стараюсь объединить исполняемый файл и dll в одном решении. Оба зависят от библиотеки «foo», которая включается в решение два раза — один раз для исполняемого файла, а другой — для dll. Более того, код библиотеки существует два раза в разных папках. «foo» находится под контролем версий, и вполне возможно, что исполняемый файл ссылается на другую версию «foo», чем dll.
Это также справедливо для библиотеки bar, от которой зависит foo.
Поскольку решение помечает каждый проект Guid и записывает его обратно в файлы проекта, у меня возникает следующая проблема:
В одном на версию foo.vcxproj 'bar' ссылается Guid abc, а в другой версии foo.vcxproj 'bar' ссылается на xyz.
Поскольку foo.vcxproj находится под контролем версий, он конфликтует каждый раз, когда я обновляю один из локальных репозиториев.
Кто-нибудь сталкивался с такая же проблема однажды и нашли решение?
Для пояснения приведем несколько выдержек из соответствующих файлов...
mySolution.sln: (список включенных проектов)
Код: Выделить всё
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "App\foo", "foo.vcxproj", "{abc}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "App\bar", "bar.vcxproj", "{def}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DLL\foo", "foo.vcxproj", "{uvw}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DLL\bar", "bar.vcxproj", "{xyz}"
EndProject
Код: Выделить всё
{abc}
...
{def}
Код: Выделить всё
{uvw}
...
{xyz}
[*]в ProjectGuid
[*]в разделе ProjectReference
В итоге у меня есть 2 версии foo.vcxproj.
Я могу управлять ProjectGuid, установив фиктивный идентификатор и игнорирование строк ProjectGuid с помощью .git. Но если вы возитесь с идентификатором в разделе ProjectReference, решение испортится.
Подробнее здесь: https://stackoverflow.com/questions/476 ... e-solution