Streetw☆です。。。
「あとで調べます2」について調べたんですが、長くなっちゃったのでもう一度だけエントリをお願いしました。
何度もごめんなさいorz
「対象のフレームワーク」の指定について、どなたかが仕組みなどについてブログにまとめられていた(確かどこかでセッションされてたと書かれてたような)と思って探してたのですが、まだ見つけられません;_;
検索してたら、代わりにこんな資料を見つけました。
「MSBuild で特定の .NET Framework を対象にする」
ちょっと長いけどそこから引用します。
「ツールセットのバージョンは、Project 要素 (MSBuild) の ToolsVersion 属性を使用してプロジェクト ファイルに指定できます。・・・ソリューションまたはプロジェクトをコマンド ラインでビルドする場合、msbuild.exe に対して ToolsVersion を指定すると、すべてのプロジェクトとそのプロジェクト間の依存関係がその ToolsVersion に基づいてビルドされます。ソリューション内の各プロジェクトの Project 要素 (MSBuild) に固有の ToolsVersion が指定されていても、その値は無視されます。」
Σぬ~!?
TargetFrameworkVersionの他にToolsVersionなんてあるんですか~
#「ツールセット」については、リンク先を見てください。
「対象のフレームワーク」で ".NET Framework 2.0" を指定しても、プロジェクトファイルをメモ帳で開いて見てみると、ToolsVersionは "3.5" になってました。
ちょっとドキドキしながら、これを "2.0" に変更して保存し、Visual Studio 2008を起動してビルドを実行してみました。そして「出力」ウィンドウを見ると・・・
------ すべてのリビルド開始: プロジェクト: WindowsFormsApplication1, 構成: Debug Any CPU ------
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Csc.exe /noconfig ・・・(オプションが続く)・・・
2.0のCsc.exeでコンパイルされてますよ!
ということは、「その1」のコードは "A" が表示されるはずですよね?
実行(≧∇≦)!!
メッセージボックス> B
・・・orz
あれ??
Visual Studioが何か悪さしてるの?と疑って、MSBuild.exeにプロジェクトファイルを渡してビルドしてもらいました。
・・・でも結果は同じ。ちょっと、ちょっとちょっと。ノシ
あきらめムードで
v3.5\MSBuild.exe /toolsversion:2.0 プロジェクトファイル
を実行して、できたのを実行しました。
メッセージボックス> A
Σわ、不意打ち。
そういえば、今回のMSBuild.exeの実行時のメッセージは、さっきとどこか違ってました。
これって、「対象のフレームワーク」を2.0にすればToolsVersionも2.0になって、それがちゃんと機能すればいいのかなとか少し思ったんですが、そうだとvarとか使えなくなっちゃうし、デバッグのとき何かあるかもしれないからダメなのかも、とか考えたりしました。
えっと、この話は何か参考になりましたでしょうか?
わたし的にはこんな細かなことはあまり重要じゃないです、実はw
でも、もしかしたらみんな知らないことなのかも、って思うとワクワクしたりしましたww
ところで、すとりのRSS登録してくれた人っています?w
では♪