2010-06-07 40 views
0

我試圖設置一個web應用程序(在ii7/win7上的32位,32位設置已啓用,一切都編譯爲x86,使用vs2008),但顯然有一些dll發生模塊加載問題。我一直在觀看procmon和fusion日誌,但是我沒有看到缺少dll的名字。生成一個asp.net的web應用程序的dll需求列表

我是一個完全新手到asp.net(但在其他平臺上相當沉重的經驗)。

我知道我可以在一個二進制文件上調用depends.exe來查看依賴關係是什麼,但是如何爲asp.net做到這一點?具體而言,是否有可能獲得iis7爲我的應用程序加載的dll列表?

更新:我手動吹走了我的應用程序的所有二進制文件,並重建(乾淨似乎沒有伎倆,我猜)。它現在有點工作。或者至少它會越來越細緻。

回答

1

一個asp.net web項目的dll不應該依賴任何不屬於默認.net運行時或在項目中明確引用的內容。我會從審查參考文獻開始。 Noramlly一個asp.net web項目有一個bin文件夾,其中包含編譯後的網站/ web應用程序以及它所依賴的任何dll(除了.net運行時)。這通常由用於創建項目的編程工具完成。

如果你仍然沒有找到罪魁禍首,你可以嘗試使用Filemon(http://technet.microsoft.com/en-gb/sysinternals/bb896642.aspx),並使用它來觀察IIS,看看它正在尋找什麼文件,沒有找到。

另一個選項是檢查應該包含在網站/應用程序中的web.config文件。它是一個XML文件,通常有一個Assemblies部分列出應該加載的程序集。例如,你可能會看到:

<assemblies> 
    <add assembly="MySql.Data, Version=6.2.3.0, Culture=neutral, 
    PublicKeyToken=C5687FC88969C44D"/> 
</assemblies> 

這意味着代碼要使用MySQL.Data.dll,特別是DLL的6.2.3.0版本。可以同時安裝不同版本的.Net dll文件。所以你可能有所需的DLL,但不是Web.Config文件中指定的正確版本。

+0

這是一個堅實的建議(雖然filemon現在是procmon的一部分),我基本上正在嘗試這樣做。我想知道是否有辦法以某種方式獲得更多的調試信息。像每個正在打開的dll架構,自動? 無論哪種方式投票,因爲你是對的。 – 2010-06-07 14:48:52

+0

關於你的編輯:這是一個很好的觀點。我chceeked了,但它完全可能是我的.net安裝程序在這臺機器上被破壞。這是我第二週用win7。我會研究潛在的dll不匹配(即一些來自net2.0,一些來自3.5) – 2010-06-07 16:09:14

+0

希望它有幫助。我沒有想法。 – 2010-06-07 17:38:28