是否有工具来编译仅包含某些类型的“选择性”程序集?

时间:2010-11-06 00:09:26

标签: .net compiler-construction dependencies .net-assembly

假设我有一个包含AZ类型的大型项目。

如果出于某种原因,我想将 类型A打包并分发给某些客户,该怎么办?

显然我不能无条件地将A编译成自己的DLL;它可能取决于我项目中的其他类型。但它不太可能依赖于我项目中的每个类型。

我想象的是一些工具可以检查A,识别它的依赖关系,并以某种方式编译一个只有我想要的类型所需类型的最小DLL(A)而不再

例如,如果A取决于BC提供的功能,而B取决于DCD没有其他依赖项(除了可能AB或彼此之外),此工具将A通过D并编译只有那些类型成为我认为合适的DLL。

Visual Studio是否提供此类功能?如果没有,是否有一些加载项或外部工具能够做到这一点?顺便说一下,我问的是合理的,还是你认为这样的事情会是一个坏主意?

显然我总是可以手动完成;它看起来似乎是很多工作(如果开始时这是一个坏主意,好吧,那就忘了它。)

1 个答案:

答案 0 :(得分:1)

这听起来像是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,您应该获得A所需的一切,仅此而已。