2017-07-25 33 views
0

我一直在努力與Visual Studio今天,但我不能得到它的工作。Visual Studio構建ASP.NET MVC Web與舊的dll參考

的問題是每當我試圖建立或重建我的ASP.NET MVC Web項目,然後我得到了以下錯誤:

無法加載文件或程序集「System.Web.Mvc」或之一它的依賴關係。定位的程序集清單定義與程序集引用不匹配。 (異常來自HRESULT:0x80131040)

我發現問題是由於以前提到的dll文件被複制到「Bin」文件夾中作爲構建過程的一部分。當我查看該文件的詳細信息時,發現它與我的代碼中的引用相比是次要版本(4.0.20710.0)。

我忘了提及這個解決方案由4個項目組成:主項目(這是網站)和3個小項目,它們被編譯成dll並作爲區域動態添加到網站中。

這是我已經檢查到現在爲止:

主要項目的web.config(片段)

 <dependentAssembly> 
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" /> 
    </dependentAssembly> 

主要項目packages.config(片段)

<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" /> 

主要項目視圖的web.config(片段)

<system.web> 
<httpHandlers> 
    <add path="*" verb="*" type="System.Web.HttpNotFoundHandler" /> 
</httpHandlers> 

<!-- 
    Enabling request validation in view pages would cause validation to occur 
    after the input has already been processed by the controller. By default 
    MVC performs request validation before a controller processes the input. 
    To change this behavior apply the ValidateInputAttribute to a 
    controller or action. 
--> 
<pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
    <controls> 
    <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> 
    </controls> 
</pages> 

而且我已經檢查了我的小項目上面提到的相同的文件,但沒有運氣,直到如今。讓它工作的唯一方法是運行網頁並手動從bin文件夾中刪除dll並複製正確的版本。

我需要這個由Visual Studio自動完成,因爲每次我在不同的計算機中檢出項目時都會遇到同樣的問題。

我希望你能幫助我。謝謝。

回答

0

如果您的項目中的參考文獻是正確版本,則需要檢查的一件事是Copy Local屬性。這是確定引用的dll是否被複制到bin文件夾的設置。

要在解決方案資源管理器中檢查,請展開References,然後右鍵單擊參考System.Web.Mvc並單擊屬性。確保Copy Local = True