たまに、複数の .NET バージョンでモノが欲しい時がある。
その際、複数のプロジェクトファイル(.NET バージョン違い)に同じソース群を参照させる。
その手順のメモ。
※元となるプロジェクトファイルは「MyLibrary.csproj」、バージョンは .NET 4.0 とする。
※複数プロジェクトで中間ファイル出力先がかぶることは、Visual Studio でビルド失敗する原因の 1 つ
中間ファイル出力先は、IntermediateOutputPath で構成設定毎に指定することも可能。
ただし、中間ファイル出力先を変更しても、「obj\Debug」「obj\Release」などのフォルダは作られる・・・
その際、複数のプロジェクトファイル(.NET バージョン違い)に同じソース群を参照させる。
その手順のメモ。
※元となるプロジェクトファイルは「MyLibrary.csproj」、バージョンは .NET 4.0 とする。
- プロジェクトファイル(csproj/vbproj)を複製
MyLibrary.csproj → MyLibrary_net35.csproj - バージョン変更する方のプロジェクトファイルの /Project/PropertyGroup/TargetFrameworkVersion を変更
・MyLibrary_net35.csproj<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <!-- 中略 --> <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
- 両方のプロジェクトファイルに /Project/PropertyGroup/BaseIntermediateOutputPath + BaseOutputPath を追加し、/Project/PropertyGroup[@Condition]/OutputPath を変更
(中間ファイルとバイナリの出力先の変更)
・MyLibrary.csproj
・MyLibrary_net35.csproj<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <BaseIntermediateOutputPath>obj\net40\</BaseIntermediateOutputPath> <BaseOutputPath>bin\net40\</BaseOutputPath>
・両方<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <BaseIntermediateOutputPath>obj\net35\</BaseIntermediateOutputPath> <BaseOutputPath>bin\net35\</BaseOutputPath>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <!-- 中略 --> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == '{構成設定}' ""> <!-- 中略 --> <!-- 必要に応じて $(Platform) もパスに組み込む(マルチプラットフォーム等) --> <OutputPath>$(BaseOutputPath)\$(Configuration)\</OutputPath>
- Visual Studio で変更したプロジェクトファイルを再読込
- Visual Studio で複製したプロジェクトファイルを追加読込
ソリューションを右クリック → [追加] → [既存のプロジェクト] - .NET のバージョンに合わせたコード修正
備考
バイナリ出力先を分けるのは当然として、中間ファイル出力先を分けておかないと、Visual Studio の挙動がおかしくなることがある。リビルドでないと、ビルド成功しなかったり・・・※複数プロジェクトで中間ファイル出力先がかぶることは、Visual Studio でビルド失敗する原因の 1 つ
中間ファイル出力先は、IntermediateOutputPath で構成設定毎に指定することも可能。
ただし、中間ファイル出力先を変更しても、「obj\Debug」「obj\Release」などのフォルダは作られる・・・
0 件のコメント:
コメントを投稿