(Msbuild .net version target)
常に最新の.Net環境を使う事ができればいいのですが、どーしても未だに.Net3.5の環境とか残っています。
もちろん、最新の4.5.2の環境もあります。
そんな時どうします?
1つは、ターゲットランタイム別にプロジェクトを作成してリンクファイルでCSファイルを共有する方法。
ちょっと手間はかかりますが、バージョン別に新機能を盛り込めたり、一般的な方法だと思います。
とは別にMsBuilsを使用してバージョンを指定しビルドすることも可能です。
そもそも.Netバージョンってどこで決まるの?
正確には、ターゲットフレームワークバージョンといいます。
VisualStudio上で確認
csprojファイルで確認
VisualStudioでビルドしてできたDLLをデコパイルしてみる
な感じ。
4.5ってなってますね。
Msbuildでターゲットフレームワークバージョンを指定する
ターゲットフレームワークバージョンを4.0に変更してビルドしてみます。
SET MSBUILD="C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"
%MSBUILD% ClassLibrary1.csproj /p:TargetFrameworkVersion=v4.0 /p:Configuration=Release /t:Rebuild
/p:TargetFrameworkVersion=v4.0
ビルドパラメーターでTargetFrameworkVersionを指定します。
ビルドしてできたDLLをデコパイルしてみる
ちゃんと4.0になっていますね。
(∩´∀`)∩ワーイ
ただ、この方法だと、開発時に4.0と4.5での言語バージョンを意識しないといけません。
4.5で導入されたasync/awaitを使用していると当然ですが、4.0でビルドした時には構文エラーになります。
そろそろ4.0は卒業したい。
まだ3.5もやっている。
ちなみに、デコンパイラはJustDecompileを使用しています。www.telerik.com
ILSpyも軽量シンプルでいいですがこっちのほうが好きです。