我使用aspnet_compiler預編譯一個asp.net網站。 然後,我運行aspnet_merge將預編譯的程序集合併成一個。aspnet_merge導致DLL找不到錯誤
不幸的是,aspnet_merge在它的合併過程中沒有包含其中一個程序集。因此,這個大會保持不變。更加不幸的是,這個程序集引用了做的得到合併(現在被刪除)的程序集之一,並且這個引用沒有被aspnet_merge更新。因此,當使用此dll時,我得到一個FileNotFoundException「無法加載文件或程序集」。
到目前爲止,我想通了,預編譯步驟之後,大部分組件被命名爲喜歡
App_Web_xxxxxxxx.dll.
,而有問題的DLL被命名,如:
App_Web_nameofusercontrol.ascx.xxxxxxxx.dll
我想這就是爲什麼aspnet_merge忽略它。我確認aspnet_merge通過使用-log選項忽略,它會生成一個輸入程序集列表。
我打電話aspnet_compiler和aspnet_merge這樣的:
aspnet_compiler.exe -v VirtualDirectoryName -p ActualDirectory c:\precompileoutput
aspnet_merge.exe c:\precompileoutput -o mergeddllname
我目前看反編譯代碼aspnet_merge,試圖找出它使用什麼邏輯,當它決定哪些DLL進行合併,但也許有人之前看過這個問題還是有建議?
我正在尋找一種方式來要麼有aspnet_compiler產生aspnet_merge理解爲一個辦法說服aspnet_merge更新引用任何app_web的* DLL文件它會刪除所有組件,動態鏈接庫。謝謝!
更新: aspnet_merge忽略App_Web_nameofusercontrol.ascx.xxxxxxxx.dll,因爲aspnet_compiler不產生相應的.compiled文件。 此外,usercontrol似乎也被編譯成App_Web_xxxxxxxx.dll程序集之一。但是,我不知道爲什麼相同的用戶控件被編譯爲兩個不同的程序集。也許一個奇怪的循環引用問題?