2012-04-08 56 views
0

我有一個解決方案,它具有引用某些第三方.Net程序集的類庫。這些第三方程序集依賴於非.Net程序集。非.Net程序集不會複製到bin文件夾,這會導致錯誤「無法加載xxx程序集或其某個依賴項」。所以我創建了一個預生成事件,將它們複製到bin文件夾,並解決了這個問題。MVC應用程序無法加載程序集

然後,當我在同一個解決方案中從一個控制檯項目引用我的項目時,我得到了同樣的錯誤,所以我在控制檯項目中使用預生成事件做了同樣的事情。這又解決了問題。

現在,當我從同一個解決方案中的MVC應用程序引用類庫項目時,我得到了同樣的錯誤。但是使用在其他兩種情況下工作的相同預構建事件並不能解決Web應用程序的問題。我試過使用開發服務器和IIS,但得到相同的錯誤。我也嘗試在Global.asax的Application_Start()中爲AssemblyResolve添加一個處理程序來查看正在發生的事情,但它不會觸發。

我需要將文件放在Web應用程序的bin目錄以外的其他位置嗎?

的Win 7,IIS 7,VS 2010,.NET 4中,MVC 3

回答

1

這並不在ASP.NET工作的原因是因爲在ASP.NET中的臨時文件夾管理組件get shadow copied所以在運行時無法找到非託管庫。爲了找到它們,它們需要存在於作爲PATH環境變量一部分的文件夾中。或者將它們放在c:\windows\System32\Inetsrv文件夾中。