Visual Studio C++ 2015: несколько версий одной и той же библиотеки в одном решении?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Visual Studio C++ 2015: несколько версий одной и той же библиотеки в одном решении?

Сообщение Anonymous »


Я стараюсь объединить исполняемый файл и 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
App\foo.vcxproj:

Код: Выделить всё

{abc}
...


{def}


DLL\foo.vcxproj:

Код: Выделить всё

{uvw}
...


{xyz}


Проблема в том, что идентификаторы, указанные в файле .sln проектам, также записываются в файлы .vcxproj в двух местах:


[*]в ProjectGuid
[*]в разделе ProjectReference


В итоге у меня есть 2 версии foo.vcxproj.

Я могу управлять ProjectGuid, установив фиктивный идентификатор и игнорирование строк ProjectGuid с помощью .git. Но если вы возитесь с идентификатором в разделе ProjectReference, решение испортится.

Подробнее здесь: https://stackoverflow.com/questions/476 ... e-solution
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»