Re[19]: скопировать в outputdir фал xml документации
От: MadHuman Россия  
Дата: 14.12.22 10:43
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, MadHuman, Вы писали:


MH>>тогда нужно возвращаться на исходную и уточнять что же вам надо и достигать одинакового понимания

S>у меня есть солюшн, в котором есть C# проект и С++ проект.
S>Шарповому проекту нужна .dll/.so, которая является результатом сборки C++ проекта. Она должна лечь рядом с шарповой .dll
S>X зависит от проекта Y.
S>https://github.com/evilguest/linq2d/blob/master/Linq2d.Tests/Linq2d.Tests.csproj#L46

S>X = Linq2d.Tests.csproj

S>Y = SauvolaBinarizeCPP.vcxproj

S>Могу изложить ещё подробнее. Смотрите, у проекта Linq2d.Tests две зависимости: https://github.com/evilguest/linq2d/blob/master/Linq2d.Tests/Linq2d.Tests.csproj#L45:L46

S>Первая — от шарпового проекта. Наличие этой зависимости обеспечивает мне корректное копирование Linq2d.dll и других результатов сборки проекта Linq2d.csproj в результаты сборки проекта linq2d.Tests.
S>Мне нет никакой нужды руками прописывать в проекте Linq2d.Tests никакие "переложи в OutputDir для Linq2d.Tests.csproj всякие Linq2d.dll, Linq2d.pdb, собранные в проекте Linq2d.csproj". И если я, скажем, пойду в проект Linq2d, и поменяю в нём настройки OutputDir, то у меня сборка Linq2d.Tests всё равно пройдёт корректно. Потому что — магия.
S>Вторая зависимость — от C++ проекта.
S>Но SauvolaBinarizeCPP.dll сама никуда не копируется. Почему я должен руками в проекте Linq2d.Tests хардкодить расположение OutputDir и состав файлов SauvolaBinarizeCPP.vcxproj? Это как-то нелогично.
S>Я же не просто так для красоты поставил на него ProjectReference.
понятно. ну значит для C++ проектов даже при подцеплении его в ваш X через ProjectReference, не обеспечивает автоматическое корректное копирование его артифактов билда в аутпут X.
правильный способ (а это исправление неправильного поведения) требует сильно углубиться в анализ билда C++ проекта и анализ — как .Net проект подтягивает зависимости себе от другого. непростой путь.
тут я думаю лучше — завести ишью в репу сишарпа (или спп) — пусть чинят.

есть вариант проще. в X вы можете подцепить ссылки на готовые дллки от Y (как итемы проекта). и Y не подцеплять, пусть отдельно компилится и в некую шаред папку ложит артефакты.
либо ссылки на дллки от Y подцепить явно на его аутпут.
после того как в Х это проделаете, эти дллки (от Y) автоматом будут подтягиваться в аутпут Х (а также в аутпут тех проектов кто подцепит Х).
чтоб разрулить разноплатформенность у подцепленных ссылок прописать Condition (аналогично как вы прописали для таргета по копированию).
по моему норм.
Отредактировано 14.12.2022 10:45 MadHuman . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.