2016-09-15 161 views
0

我已經在這個問題上摔跤了幾個星期了。我所有的DLL都被正確引用,被設置爲Copy Local,並且我可以從我的本地機器構建我的應用程序到我們的構建機器。 「我的本地和構建箱都安裝了Azure SDK 2.9,但是在我們的臨時環境中運行應用程序後,我們得到.NET程序集未被複制到bin文件夾中

」無法加載文件或程序集「Microsoft.Practices.EnterpriseLibrary.Common,Version = 5.0.505.0 ,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依賴項之一,系統找不到指定的文件。「

我使我們的分級機上的融合日誌,這裏是輸出:

=== Pre-bind state information === 

LOG:顯示名稱= Microsoft.Practices.EnterpriseLibrary.Common,版本= 5.0.505.0,文化=中性公鑰= 31bf3856ad364e35 (完全指定的) LOG:應用平臺=文件:/// F:/ sitesroot/3/ LOG:初始PrivatePath = F:\ sitesroot \ 3 \倉

調用組件:(未知)。

LOG:此綁定在默認加載上下文中啓動。 LOG:使用應用程序配置文件:F:\ sitesroot \ 3 \ web.config LOG:使用主機配置文件:D:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet.config LOG:使用機器配置文件從D:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ config \ machine.config。 日誌:後策略參考:Microsoft.Practices.EnterpriseLibrary.Common,Version = 5.0.505.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35 LOG:試圖下載新的URL文件:/// D:/Windows/Microsoft.NET /Framework64/v4.0.30319/Temporary ASP.NET文件/ public_ [我的DLL] /80b18788/752a457e/Microsoft.Practices.EnterpriseLibrary.Common.DLL。 日誌:試圖下載新的URL文件:/// D:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/public_ [my DLL] /80b18788/752a457e/Microsoft.Practices.EnterpriseLibrary。通用/ Microsoft.Practices.EnterpriseLibrary.Common.DLL。 日誌:試圖下載新的URL文件:/// F:/sitesroot/3/bin/Microsoft.Practices.EnterpriseLibrary.Common.DLL。 日誌:試圖下載新的URL文件:/// F:/sitesroot/3/bin/Microsoft.Practices.EnterpriseLibrary.Common/Microsoft.Practices.EnterpriseLibrary.Common.DLL。 日誌:試圖下載新的URL文件:/// D:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/public_ [my DLL] /80b18788/752a457e/Microsoft.Practices.EnterpriseLibrary。 Common.EXE。 日誌:試圖下載新的URL文件:/// D:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/public_ [my DLL] /80b18788/752a457e/Microsoft.Practices.EnterpriseLibrary。通用/ Microsoft.Practices.EnterpriseLibrary.Common.EXE。 日誌:試圖下載新的URL文件:/// F:/sitesroot/3/bin/Microsoft.Practices.EnterpriseLibrary.Common.EXE。 日誌:試圖下載新的URL文件:/// F:/sitesroot/3/bin/Microsoft.Practices.EnterpriseLibrary.Common/Microsoft.Practices.EnterpriseLibrary.Common.EXE。

當我到D:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET,該DLL不存在,所以它顯然看在這個DLL的「錯誤」的地方。

我正在使用VS 2013.任何人有任何想法?

編輯:當我從我的本地生成時,我可以確認bin文件夾正在清除之前,重新複製一些DLL回到該文件夾​​。奇怪的是,成功複製到那裏的DLL不再在我的代碼或配置文件中的任何地方被引用。我也有一個後期構建腳本,但我確認這些舊的DLL並未在那裏引用。

第二個編輯:

我發現企業庫DLL上的臨時實例之一,但它不是在錯誤指的是目錄。我們有一個Web項目,它引用了另一個實際上是Azure Cloud Service的項目。所以看起來該服務的文件夾是在Temporary ASP.NET Files文件夾下創建的,但它是空的。

的DLL是在這裏:

d:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \臨時ASP.NET文件\ ROOT \ 59a01799 \ 5b6b1a2 \裝配\ DL3 \ 11d624d2 \ 4e820e1f_4413d201

我認爲「root」是Web應用程序。錯誤正在尋找此文件夾中:

d:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET文件/ [我的服務類庫]/060e4c2a/e3b3457e/

爲Microsoft.Practices.EnterpriseLibrary.Common.DLL。我們爲引用的Web項目和服務類庫都有一個「包」文件夾,它們都包含所有必需的DLL。所以我認爲有一種設置可能在服務類庫中仍然指向根Web應用程序項目文件夾來查找DLL,我只是無法弄清楚它是什麼。

+0

似乎您在暫存環境中缺少MS Enterprise Library,您是否允許安裝它? [Microsoft企業庫5.0](https://www.microsoft.com/en-us/download/details.aspx?id=15104) – sly

+0

雖然我得到了這個錯誤的所有我的引用,包括新添加的Redis的SessionStateProvider我們正在將此應用程序轉換爲。我不相信Redis DLL依賴於正在安裝的EL DLL,所以我不認爲我看到的Redis引用的錯誤與EL沒有處於分期階段有關。...... – Ben

+0

檢查是否你打這個MSBuild的限制,http://stackoverflow.com/questions/36270073/msbuild-referencedependencypaths-does-not-contain-nth-dependencies –

回答

0

所以問題是,在Web項目中引用的服務庫的預生成腳本中,前開發人員編寫了一個文件複製程序,以手動將某些DLL複製到bin文件夾。我將這些DLL添加到構建定義和中提琴下的腳本,它工作。

感謝大家的回覆。

相關問題