我有一個VC++託管的應用程序,它是根據VC80.CRT版本8.0.50727.762構建和測試的。我驗證了內嵌清單指向762,並且構建機器具有762作爲最新的VC80.CRT版本。指導一個VC++應用程序使用較舊的VC80.CRT版本
該應用程序現在也運行在既具有762也具有更高版本的運行時(4053)的機器上。
兩臺機器,順帶說一句,是XP專業版SP2;第二臺機器(可以說是4053)擁有.NET 3.0。
該應用程序適用於4053機器,我想我明白,由於SxS下的VC80.CRT伴隨的發佈者策略,應用程序爲應用程序加載4053而不是762。
由於各種原因,我不想進入,我一直在試圖強制它使用762版本,迄今沒有成功。
無論如何,在研究文獻後,我想我理解決定要加載的目標版本的鏈:app config - > publisher policy - > machine config。
所以我已經下了myapp.exe.config文件(見下文)myapp.exe附近;請注意publisherPolicy的設置爲「no」以避免鏈接的第二步。
該應用程序仍然加載4053,而不是762.也許這是由於機器配置文件說什麼,但我甚至不能開始弄清楚該文件的內容應該是什麼意思 - 當然沒有任何對VC80.CRT或其中任何msvc [x] 80.dll庫的引用。
我預計,指的是一箇舊版本的組件將是比較容易做到,關鍵是要克服「DLL地獄」 - 即使裝配出版商感覺就像保證(通過發行政策)的向後兼容性。
任何人都可以發光嗎? 謝謝
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b">
</assemblyIdentity>
<publisherPolicy apply="no" />
<bindingRedirect oldVersion="*" newVersion="8.0.50727.762"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
我不知道任何人說已經能夠想出解決辦法。看起來最不起眼的是張俊峯,這個寫得很爛的傻瓜。文件是悲慘的和不準確的。放棄所有希望,解決真正的問題。 – 2010-01-16 02:19:03