2014年4月5日土曜日

[開發環境] 應用程式開發之開發環境版本

在程式開發中,經常會遇到版本的問題。

這邊筆記主要記錄開發環境的版本對應關係。

這裡所提的版本,有四個部分:

  • 作業系統OS的版本(Windows XP、Vista、7、8、8.1...)
  • .NET Framework的版本(1.0、1.1、2.0、3.0、3.5、4.0、4.5、4.5.1...)
  • C++的版本(C++98、C++03、C++0x、C++11...)
  • Visual Studio的版本(2002、2003、2005、2008、2010、2012、2013...)

Visual Studio 和 C++ 的版本

在不同的C++版本中,有許多不同的語法,Visual Studio 所支援的程度也不相同。
目前確定是 Visual Studio 2013也還沒有完整的支援C++11。
Visual Studio版本支援C++版本
Visual Studio 2005C++03/部分C++0x
Visual Studio 2008C++03/部分C++0x
Visual Studio 2010更多的C++0x
Visual Studio 2012部分的C++11
Visual Studio 2013更多的C++11
除非開發時使用到相當複雜的用法,不然幾乎沒有太大的差別。

在C++各版本中,某些敘述語法是無法向上相容的,

VS2013 所使用的敘述有時候在 VS2012 是會無法解讀的。

同樣的情況也會發生在其他的版本中。

Visual Studio 的版本所伴隨的功能一直增加,使得開發作業變得越來越容易。

因為許多原因而持續使用舊版本的 Visual Studio 對於開發者來說,可能會比較辛苦。



根據不同的 Visual Studio 版本,所使用的 .NET Framework 版本也不同。

雖然 Visual Studio 每個版本皆有一定範圍的 .NET Framework版本可以選擇。

不過根據編譯器的版本還是會有些問題。

Visual Studio 和 .NET Framework 的版本

Visual Studio對應 .NET Framework附註
Visual Studio.NET 20021.0
Visual Studio.NET 20031.1
Visual Studio 20052.0
Visual Studio 20082.0, 3.0, 3.5
Visual Studio 20104.0安裝 .NET Framework 3.5 即可選擇 2.0, 3.0, 3.5
Visual Studio 20124.0, 4.5安裝 .NET Framework 3.5 即可選擇 2.0, 3.0, 3.5
Visual Studio 20134.5.1安裝 .NET Framework 3.5 即可選擇 2.0, 3.0, 3.5
2.0、3.0、3.5 三個版本可以完全共存。3.5 有包含 2.0 和 3.0。

2.0 或 3.0 所開發的程式,基本上可以在 3.5 SP1 下完整使用。

4.0 和 4.5 無法共存。4.0 和 4.5.1 也無法共存。

在 4.0 的環境中安裝 4.5 會被直接把 4.0 升級取代成 4.5。

4.0 所開發的程式,除了極少部分的程式,幾乎都可以在 4.5 或 4.5.1中正常執行。



OS 和 .NET Framework 的版本

OS版本和各版本的 .NET Framework 的對應關係
OS版本1.01.12.03.03.54.04.54.5.1
2000VVV-----
XPVVVVVV--
Server 2003VVVVVVV--
Server 2003 R2VVVVVVVV--
Vista-VVVVVVVVV (SP2)
Server 2008-VVVVVVVVV (SP2)
7--VVVVVVVVV (SP1)
Server 2008 R2--VVVVVVVVV
8--VV V-VVV
Server 2012--VVV-VVV
8.1--VVV--VV
  • 符號
    • -: 無法安裝
    • V: 可以安裝
    • VV: 標準配備
基本上,由於 3.5 有包含 2.0 和 3.0,所以由這幾個版本的 .NET Framework 所做出來程式,

都可只安裝 3.5 即可執行。

4.0、4.5、4.5.1 所開發的程式,除了極少部分的 4.0,基本上可以在有安裝 4.5.1 的機器上執行。

也就是說如果機器同時存在 3.5 和 4.5.1 兩個版本,則應該就可以執行 2.0 ~ 4.5.1 的每個版本。

.NET Framework 的支援期限

.NET
Framework
版本
延長支援
結束日期
實際
結束日期
標準搭載
作業系統
開發工具
2.0 SP22016/04/122020/01/14
依據 3.5 SP1
Windows Server 2003 R2Visual Studio 2005
3.0 SP22011/07/122020/01/14
依據 3.5 SP1
Windows Vista SP2
Windows Server 2008
Expression Blend
3.5 SP12020/01/14
依據 OS
2020/01/14
依據 OS
Windows 7
Windows Server 2008 R2
Visual Studio 2008
4.02020/09/08
依據 VS 2010
2020/09/08
依據 VS 2010
-Visual Studio 2010
4.52023/01/10
依據 OS、VS
2023/01/10
依據 OS、VS
Windows 8
Windows Server 2012
Visual Studio 2012
4.5.12024/04/09
依據 VS 2013
2024/04/09
依據 VS 2013
Windows 8.1
Windows Server 2012 R2
Visual Studio 2013


相關來源:

.NET Framework のサポート期限

[C#][.NET]アプリケーション開発と保守における考慮事項

.NET Framework のバージョンの互換性

.NET Framework 4.5と下位バージョンの互換性がカオス

.NET Framework のバージョンおよび依存関係

Windows 8 / Windows Server 2012 用の .NET 4.5.1

.NET Framework 4.0 と 4.5 は CLR のバージョンが異なる

.NET Framework 4.5 のインストールにより Visual Studio 2010 が起動するビルドツールが 64 bit 版に変化する場合がある

Microsoft Visual Studio 大集合

.NET Framework のサポート概要

Microsoft Visual C++ Wikipedia



[Visual Studio] 複數版本的Visual Studio共存

Visual Studio 多個版本共存的筆記。

雖然這麼說,不過是VC++的東西。

在C++的開發中,include directory 和 library directory 雖然可以在每個專案中各自設定,

但也可以全域的方式設定。

此篇筆記是在記錄以全域方式設定 include directory 和 library directory,

使所有的專案都可以使用這樣的設定。

在 Visual Studio 中,2010、2012、2013這三個版本的MS Build都沒有改變,

所以基本上這三個版本都是共用這一個 Property sheet 設定。

在預設路徑下, property sheet 可以在下方的路徑中找到

32位元的專案
C:\Users\<user-name>\AppData\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props
64位元的專案
C:\Users\<user-name>\AppData\Microsoft\MSBuild\v4.0\Microsoft.Cpp.x64.user.props
用來區分VS版本的方法為 Condition 屬性,

直接將 Condition 屬性增加到 IncludePath 和 LibraryPath 下即可。

<?xml version="1.0" encoding="utf-8"?> 

<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <ImportGroup Label="PropertySheets">
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup />
  <PropertyGroup>
    <IncludePath>$(IncludePath);C:\opencv248\build\include</IncludePath>
  </PropertyGroup>
  <PropertyGroup>
    <LibraryPath Condition=" '$(VisualStudioVersion)' == '11.0'">$(LibraryPath);C:\opencv248\build\x86\vc11\lib</LibraryPath>
    <LibraryPath Condition=" '$(VisualStudioVersion)' == '12.0'">$(LibraryPath);C:\opencv248\build\x86\vc12\lib</LibraryPath>
  </PropertyGroup>
  <ItemDefinitionGroup />
  <ItemGroup />

</Project>

VisualStudioVersion 10.0 為 VS 2010

VisualStudioVersion 11.0 為 VS 2012

VisualStudioVersion 12.0 為 VS 2013

事實上 Condition 屬性也可以直接加在 PropertyGroup 標籤中。




來源: http://www.rainyman.net/nest/?p=759