2012-06-22 71 views
0

我使用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程序集之一。但是,我不知道爲什麼相同的用戶控件被編譯爲兩個不同的程序集。也許一個奇怪的循環引用問題?

回答

0

原來,問題是由一個用戶控件U1中時在文件夾B中的第三控制U3引用U1,導致循環引用文件夾中的在文件夾B引用另一個控制U2引起的。 將U2移至文件夾A似乎解決了問題。

相關問題