PresentationCore.dll中和WindowsBase.dll中使用PresentationCore和WindowsBase DLL文件都包含在Microsoft .NET Framework 3.0中,每個DLL的兩個版本安裝到硬盤:兩個x64和x86環境
- 的64位版本下的C:\ Program Files文件\參考大會\微軟\框架\ 3.0
- 在C的86版本:\程序文件(x86)\參考大會\微軟\框架\ 3.0
在添加對這些dll的引用之前,我們的ASP.NET web應用程序能夠編譯爲「任何CPU」,並且可以在32位或64位模式下運行而不會出現問題。通過標準,比方說,PresentationCore添加的引用之後「添加引用」對話框(添加引用 - > .NET - > PresentationCore),該網絡應用程序失敗與以下錯誤64位模式時:
Could not load file or assembly 'PresentationCore' or one of its dependencies. An attempt was made to load a program with an incorrect format.
顯然這是因爲64位應用程序池試圖加載PresentationCore DLL的32位版本,並且無法加載。
現在,我這個有點困惑...
- 其他.NET框架的dll似乎無縫的x64和x86版本之間進行切換(從Microsoft.NET/Framework64或加載Microsoft.NET /框架)。爲什麼PresentationCore和WindowsBase有什麼不同?
- 爲什麼Visual Studio中似乎只提供我在‘添加引用’對話框中的「.NET」選項卡下的32位版本?如果我想要64位版本,我必須「瀏覽」它。
- 有沒有什麼簡單的方法來自動選擇了正確的DLL,就像似乎發生了其他.NET Framework庫?
我們總是可以寫一點MSBuild xml,它會在構建時根據目標環境的位數自動交換引用,但這似乎是我們不應該爲.NET Framework dll所做的事情。是什麼賦予了?
謝謝!
您確定沒有使用Browse添加引用嗎?你有沒有嘗試刪除它,然後再次添加? – svick
是的,很確定。是的,我們嘗試刪除它並重新添加它幾次。 –
我通過在應用程序池高級設置中啓用「啓用32位應用程序」來解決此問題。 – Nippysaurus