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

问题描述 投票:0回答:1

假设我有一个大型项目,其中包含类型

A
Z

如果出于某种原因,我想打包并分发 just 类型

A
给某些客户怎么办?

显然我不能无条件地将

A
编译成它自己的DLL;它可能取决于我的项目中的一些其他类型。但它不太可能取决于我项目中的每个类型。

我设想的是一些工具,可以检查

A
,识别其依赖关系,并以某种方式编译一个最小的DLL,其中仅包含我想要的类型(
A
)所需的类型,仅此而已。

例如,如果

A
依赖于
B
C
提供的功能,并且
B
依赖于
D
,但是
C
D
没有额外的依赖关系(除了可能的
A
) 、
B
或彼此),这个工具会将
A
D
并将 仅这些类型 编译到 DLL 中,供我按照我认为合适的方式进行处理。

通过 Visual Studio 可以使用此类功能吗?如果没有,是否有一些插件或外部工具能够执行此操作?顺便问一下,我问的是否合理,还是你觉得这样的事情是个坏主意?

显然我总是可以手动执行此操作;看起来这会需要很多工作(如果一开始这是一个坏主意,那么就忘记它吧)。

.net dependencies .net-assembly
1个回答
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 所需的一切,仅此而已。

© www.soinside.com 2019 - 2024. All rights reserved.