Есть ли инструмент для компиляции «выборочных» сборок, содержащих только определенные типы? - PullRequest
1 голос
/ 06 ноября 2010

Скажем, у меня большой проект, содержащий типы от A до Z.

Что, если по какой-либо причине я хочу упаковать и распространить просто типа A среди некоторых клиентов?

Очевидно, что я не могу просто безоговорочно скомпилировать A в свою собственную DLL; это может зависеть от некоторых других типов в моем проекте. Но вряд ли это зависит от каждого типа в моем проекте.

Я предполагаю, что это какой-то инструмент, который может проверить A, определить его зависимости и каким-то образом скомпилировать минимальную DLL-библиотеку только с типами, требуемыми для типа, который я хочу (A), и не более.

Так, например, если A зависит от функциональности, предоставляемой B и C, а B зависит от D, но C и D не имеют дополнительных зависимостей (кроме, возможно, A, B или друг с другом), этот инструмент будет принимать от A до D и компилировать только эти типы в DLL для меня, как я считаю нужным.

Доступны ли такие функции в Visual Studio? Если нет, есть ли какая-нибудь надстройка или внешний инструмент, способный сделать это? Кстати, то, о чем я спрашиваю, даже разумно, или вы считаете, что что-то подобное было бы плохой идеей?

Очевидно, я всегда мог сделать это вручную; просто кажется, что это было бы много работы (и если это плохая идея, ну, тогда просто забудьте об этом).

1 Ответ

1 голос
/ 06 ноября 2010

Это звучит как идеальная проблема для файла make. Я не знаю, как бит .NET сыграет в этом роль, но для классической модели C вы можете сделать что-то вроде этого:

clean :
    del *.obj

libA.lib : A.obj
    makelib *.obj

libB.lib : B.obj
    makelib *.obj

...

A.obj : B.obj C.obj
    compile A.cs

B.obj : C.obj D.obj
    compile B.cs

C.obj : 
    compile C.cs

D.obj : 
    compile D.cs

...

Запустите make clean A, и вы должны получить все, что вам нужно для А, и ничего более.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...