22

c#コマンドラインを使用してプロジェクト(.csproj)を構築し、msbuild.Net2.0 ランタイムをターゲットにしたいと考えています。

2 tagsプロジェクト xml ファイルに関心があることがわかりました

<Project ToolsVersion="4.0" ... 

<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>

私は疑問に思っていた

  • ToolsVersion 4.0 は、.Net2.0 ランタイムと互換性のあるコードを生成できますか?
  • コマンド ラインを使用して、プロジェクト ファイルからターゲット フレームワーク タグを上書きできますか (/ToolsVersionコマンド ライン スイッチはこれを実現しますか?

具体的には、プロジェクト ファイルを変更せずに、コマンド ラインでこれを実現したいと考えています。

現在、私はこのようなことをしています

msbuild myproj.csproj /p:Configuration=Release
4

1 に答える 1

23

これを機能させるには、msbuildのコマンドライン引数が必要です。

msbuild.exe MyProj.proj /p:TargetFrameworkVersion=v2.0;Configuration=Release /tv:3.5

したがって、projファイルとToolsVersionの値をオーバーライドします。

使用されているmsbuildバージョンのデフォルトを確認するには、Visual Studioコマンドプロンプト([スタート]メニュー> [Microsoft Visual Studio 2010]> [Visual Studio Tools]にあります)を起動し、msbuildと入力します。出力の最初の行には、BuidEngineversionが保持されます。

Microsoft(R)ビルドエンジンバージョン4.0.30319.1

msdnドキュメントから:

MSBuildは、タスク、ターゲット、およびツールのツールセットを使用してアプリケーションを構築します。通常、MSBuildツールセットには、microsoft.common.tasksファイル、microsoft.common.targetsファイル、およびcsc.exeやvbc.exeなどのコンパイラが含まれています。ほとんどのツールセットを使用して、アプリケーションを複数のバージョンの.NETFrameworkおよび複数のシステムプラットフォームにコンパイルできます。

インストールされているフレームワークのバージョンの環境変数を確認することもできます。VisualStudioの set Fコマンドプロンプトから、次の結果が得られます。

Framework35Version = v3.5
FrameworkDir = c:\ Windows \ Microsoft.NET \ Framework \
FrameworkDIR32 = c:\ Windows \ Microsoft.NET \ Framework \
FrameworkVersion = v4.0.30319
FrameworkVersion32 = v4.0.30319

ToolSetの説明
ToolSetVersion

于 2012-08-17T10:01:18.303 に答える