Некоторые компоненты слабо связанного кода находятся в одной сборке. Хотелось бы контролировать отсутствие между ними циклических ссылок на этапе компиляции, не разбивая сборку. Наиболее логичным решением выглядит использование нескольких проектов сборок, которые потом компилируются в одну сборку. Циклические ссылки предотвращаются стандартным механизмом работы проектов, а сборка сливается.
Есть ли такая технология для Microsoft Visual Studio?
Ответ
Вы можете попробовать компилировать не в целую сборку (.dll), а в объектный файл (.netmodule). Для этого нужно или строить при помощи msbuild, либо открыть файл проекта вручную, найти строку вида
Затем, для компоновки модулей в assembly вам нужно вручную вызвать компоновщик. Например, в каком-либо post-build step'е:
call "%VS120COMNTOOLS%vsvars32.bat"
set M1=$(SolutionDir)Module\$(OutDir)Module.netmodule
set M1PDB=$(SolutionDir)Module\$(OutDir)Module.pdb
set M2=$(SolutionDir)Main\$(OutDir)Main.netmodule
set ENTRY=Main.Program.Main
link /ltcg /assemblymodule:"%M1%" "%M2%" /entry:%ENTRY% /subsystem:CONSOLE /out:"$(SolutionDir)Program.exe" /debug
copy /b %M1% "$(SolutionDir)"
copy /b %M1PDB% "$(SolutionDir)"
Разумеется, вам придётся подставить нужные пути вручную.
Вот большое исследование по теме вопроса.
(Уверен, это всё можно автоматизировать при помощи msbuild, но я не знаю, как именно.)
Комментариев нет:
Отправить комментарий