我有一個項目,該項目包括預生成的DLL模塊,內置在過去的一段時間內,使用Visual Studio 9Howto:多個版本的msvcrt9作爲專用SxS程序集?
該項目的EXE現在構建,使用Visual Studio的SP1 9
當我們部署EXE時,我們不想要求管理員訪問權限,所以C-Runtime已經綁定到應用程序的根目錄中。 The Dlls:MSVCRT90.DLL及其清單:Microsoft.VC90.CRT.manifest
現在,EXE和最新版本的運行時清單都是一致的 - 應用程序清單要求msvcrt.dll 9.0.30729.1,並且crt-manifest包含確認msvcrt90.dll是9.0的條目.30729.1
現在,出現問題。我們的應用程序使用的第三方DLL庫與原始msvcrt90.dll版本9.0.21022.8鏈接,並具有此效果的內部清單。
在我們的開發PC上安裝了兩個版本的VS9 CRuntime的應用程序的作品。在我們第一次安裝應用程序的「新鮮」PC上 - DLL無法加載。
現在,我可以做一些祕技 - 一個是將應用恢復到9.0.2 - 從原始源媒體中獲取9.0.2 DLL。這是不理想的,因爲9.0.3是優選的。 或者我努力嘗試重建第三方庫。
我還非常確定,在我們的開發PC上,當第三方庫要求舊的dll時,它會被重定向到新的dll - 它們是二進制兼容的。
應用程序清單和程序集旨在拯救我們所有人免受這種垃圾。 必須可以編輯程序集清單文件,以便可以加載exe和dll。
這是非常接近到什麼香港專業教育學院一直在努力。 但是在哪裏以及如何放置該XML? 我的應用程序有一個嵌入的.manifest文件,文檔說bindingRedirections應該放在app.exe.config文件中。我創建了配置文件,將它放在我的應用程序文件夾中,但沒有看到任何區別。我不知道它甚至被使用。 也許我需要確保assemblyIdentity完全匹配我的應用程序清單assemblyIdentiy。 – 2009-07-03 12:20:31