我們的WinForm項目是基於.NET 2.0開發的,在部署時,發現有些機器沒有.NET 2.0,但是即使這些機器有裝.NET 2.0 以上的版本,也無法運行我們的程序。這就比較蛋疼了。
我們查了一下,發現windows各個版本中自帶的.NET Framework的版本是這樣的:
windows版本 |
.net framework版本 |
winxp |
無 (注:xp sp1 則自帶了 .net 2.0) |
win7 |
.net 3.5(包含.net3.0 .net2.0) |
win8 |
.net 4.5 |
win10 |
.net 4.5 |
在winxp上安裝.NET 2.0 是非常容易的,但是要在win8和win10上安裝.NET 2.0,就不是那么順利了,經常遇到無法降級的情況。
我想,既然高版本的.NET Framework幾乎是完全兼容.NET 2.0的, 那么,有沒有辦法讓基於.NET 2.0的應用直接在高版本的.NET上運行了?
經過一番摸索,終於找到了解決方案,那就是在配置文件中加上所支持的.NET的版本即可。
解決方法
(1)在.NET 2.0程序項目下的應用程序配置文件 App.config 中,
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v2.0.50727"/>
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
這幾行配置的意思是:如果系統中有.NET 4.0+時,就使用.NET 4.0+,否則,就使用.NET 2.0。
(2)重新編譯生成程序。
如此一來,幾乎所有的電腦都可以直接跑我們的.NET 2.0的WinForm程序了,除了那些極少數連補丁都沒打的WinXP系統。