2010-11-06 42 views
1

假設我有一個包含AZ的大型項目。是否有編譯僅包含某些類型的「選擇性」程序集的工具?

如果出於某種原因想要將某些客戶打包並分發只需類型A會怎麼樣?

顯然我不能無條件地將A編譯到它自己的DLL中;它可能取決於我的項目中的其他類型。但它不太可能取決於每個類型在我的項目中。

我在設想的是一些工具,它可以檢查A,確定它的依賴關係,並以某種方式編譯一個最小的DLL,只包含我想要的類型(A)所需的類型,不再需要。

因此,例如,如果A取決於由BC提供的功能,和B取決於D,但CD沒有額外的依賴(除了可能AB,或對方),此工具將採取A通過D和編譯只是那些類型到我認爲合適的DLL做。

這樣的功能是否可以通過Visual Studio?如果沒有,是否有一些插件或外部工具能夠做到這一點?順便說一句,我問的是甚麼是合理的,或者你覺得像這樣的東西會是一個壞主意?

顯然我總是可以手動做到這一點;看起來好像會有很多工作(如果開始時不好主意,那麼就把它忘記吧)。

回答

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,你應該得到你需要一個並沒有什麼更多的東西。

相關問題