i_sparkling

C#プロジェクトでRelease/Debugアセンブリを切り替える方法

C#で外部ライブラリを使うときは,グローバルアセンブリキャッシュから選ぶか,プロジェクト参照にするか,ファイルから選ぶかのいずれかになるんだけど, プロジェクト参照の時以外はRelease/Debugでアセンブリの切り替えをすることができない.

まぁ,外部ライブラリをソースからビルドした場合は,外部ライブラリ側のコードにステップインしてデバッグが可能なわけだけど, Release版では最適化が利いてるからうまくステップ実行できない場合もある.

デバッグ時はDebugビルドのライブラリを参照したい場合は一工夫必要みたい.Visual Studio 2010のUI側からは設定できないので プロジェクトファイル(.csprojファイル)を直接書き換える必要がある

たとえば,リリース版のアセンブリがHoge.dllというファイル名で,デバッグ版アセンブリがHoge_d.dllなんて名前の時は以下のようにする.

<Reference Include="Hoge" Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
    <HintPath>path/to/assembly/Hoge.dll</HintPath>
</Reference>
<Reference Include="Hoge" Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
    <HintPath>path/to/assembly/Hoge_d.dll</HintPath>
</Reference>

Reference要素にCondition属性をつけるところがポイント.条件文はプロジェクトファイルの他の場所からコピーしてくればいい.

ちなみにInclude属性はVisual Studio 2010上の表示名みたい.この名前が同じだとUI上はひとつにまとめて表示される. 別の名前にすれば別々の参照アセンブリとして表示される.

Leave a Reply