2009-10-20 100 views
1

我得到歡樂的類型或命名空間名稱「Something」在名稱空間「Something else」中不存在(您是否缺少程序集引用?)'錯誤。您是否缺少程序集參考?

我所得到的是一個包含該網站本身在其網站依賴其他幾個自定義項目沿網站項目。我遇到的問題是網站所依賴的其中一個項目,我們稱之爲A.它依賴於不同的定製項目,稱爲B.

因此,B是解決方案的一部分,而我可以成功建立B. A有一個對B的引用,似乎沒有任何錯誤(沒有小的黃色三角形感嘆號)。網站本身在Bin文件夾中也有A和B的dll。它也有一個dll.refresh文件,這是不正確的(錯誤的路徑)。但是,手動糾正dll.refresh似乎沒有效果。從網站的bin文件夾中刪除這些文件也沒有效果。

我也試着從溶液中除去A和B,然後readding他們。我也嘗試刪除A對B的引用,然後再次添加它(從項目選項卡和手動瀏覽到.dll本身)。

我這個標記可視源安全,以及由於項目工作,直到我從源代碼控制的最新版本,所以這個問題是絕對相關的一些變化作出我的同事(有意或無意)之一。我懷疑它是由項目的不同文件系統佈局引起的,但我不確定,如果是這種情況,我不明白爲什麼我無法解決問題。

這融合日誌的結果,我不完全理解它。

 
    *** Assembly Binder Log Entry (10/20/2009 @ 1:43:06 PM) *** 

    The operation failed. 
    Bind result: hr = 0x80070002. The system cannot find the file specified. 

    Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll 
    Running under executable C:\Windows\SysWOW64\inetsrv\w3wp.exe 
    --- A detailed error log follows. 

    === Pre-bind state information === 
    LOG: User = NT AUTHORITY\NETWORK SERVICE 
    LOG: DisplayName = A, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 
    (Fully-specified) 
    LOG: Appbase = file:///C:/source/ProjectRoot/Project/Website/ 
    LOG: Initial PrivatePath = C:\source\ProjectRoot\Project\Website\bin 
    LOG: Dynamic Base = C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\6db59b13 
    LOG: Cache Base = C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\6db59b13 
    LOG: AppName = 1601d5b6 
    Calling assembly : ProjectBO, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. 
    === 
    LOG: This bind starts in default load context. 
    LOG: Using application configuration file: C:\source\ProjectRoot\Project\Website\web.config 
    LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework\v2.0.50727\Aspnet.config 
    LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config. 
    LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). 
    LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/6db59b13/1601d5b6/A.DLL. 
    LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/6db59b13/1601d5b6/A/A.DLL. 
    LOG: Attempting download of new URL file:///C:/source/ProjectRoot/Project/Website/bin/A.DLL. 
    LOG: Attempting download of new URL file:///C:/source/ProjectRoot/Project/Website/bin/A/A.DLL. 
    LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/6db59b13/1601d5b6/A.EXE. 
    LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/6db59b13/1601d5b6/A/A.EXE. 
    LOG: Attempting download of new URL file:///C:/source/ProjectRoot/Project/Website/bin/A.EXE. 
    LOG: Attempting download of new URL file:///C:/source/ProjectRoot/Project/Website/bin/A/A.EXE. 
    LOG: All probing URLs attempted and failed. 


從這條線來看:「LOG:初始PrivatePath = C:\源\ ProjectRoot \項目\網站\ BIN」它看起來像它的dll後會在網站的垃圾桶,而不是之後的打算dll與項目A相關聯。但是,我沒有看到任何提及B.無論如何,希望這會有所幫助,我會繼續關注融合,順便說一下,酷的工具!

+0

部署它並使融合日誌運行。它會告訴你它在哪裏尋找你的DLL,這將幫助你確定問題。這是我避免像鼠疫這樣的網站項目的原因之一。在WAP中沒有問題。 – Will 2009-10-20 20:39:24

+0

呃,當你說'部署它'時,它究竟構成了什麼?我已經通過IIS(7.0)設置好了,這樣我就可以瀏覽到像http://dev.project.com/這樣的東西,並且我可以訪問該網站。這是'部署'? – Trajanus 2009-10-20 20:46:01

回答

0

原來隊友改名爲命名空間,所以我真的是缺少程序集引用,我只認爲我沒有。感謝Will的幫助。

+0

NP。您可以在寬限期後將其標記爲答案。 – Will 2009-10-21 12:20:03

1

在這種情況下,Fusion日誌始終是一個很好的起點。

如果我不得不猜測,你的一個隊友已經將B的項目(正確方法)的引用更改爲B的實際副本(通過瀏覽到B項目的Bin文件夾並添加對在那裏找到的DLL的引用) 。

清潔解決方案,刪除提及從A B,建B,添加項目引用到B,重建和測試A.

如果這能解決問題,請收集您的同事和他們解釋直接引用DLL的危險。

+0

這沒有奏效。爲了達到110%的清晰度,我假定當您說'清理您的解決方案'時,您的意思是右鍵點擊解決方案文件並選擇乾淨的解決方案選項。當你說要爲B添加項目引用時,我假設你是指瀏覽特定項目(在這種情況下是B),並通過項目選項卡在「引用」下添加引用。我還沒有能夠讓Fusion獲得在VS編譯的結果,但是我已經得到了在IE中查看網站的結果,我會在上面發帖。 – Trajanus 2009-10-20 20:26:11

+0

這就是我所說的添加對項目的引用:http://i36.tinypic.com/2ueslxt.png – Will 2009-10-20 20:37:06

+0

好吧,是的,這就是我添加引用的方式。 – Trajanus 2009-10-20 20:40:07

2

我時的「.NET框架4客戶端配置文件」一個目標框架的一個項目,是引用了「.NET框架4" 的目標框架項目得到這個錯誤。

希望這有助於某人,如果不是原來的海報。