2011-10-06 11 views
4

私はプラグインアーキテクチャを実装するこのC#Visual Studioソリューションを用意しています。デバッグビルドをビルドする際には、いくつかのプラグインをメインアプリケーションにコンパイルする必要があります。リリースビルドをビルドするときは、これらの.csファイルをそのまま残しておきます。Visual Studioでのデバッグとリリースビルドのビルドアクションが異なります

デバッグおよびリリースビルド用のプラグインファイルに異なるビルドアクションを指定する方法はありますか?デバッグビルドで "コンパイル"に設定し、リリースビルドで "なし"に設定したいと思います。

答えて

4

プラグインは通常別々のアセンブリになっているので、プラグインごとに個別のプロジェクトを作成します。

プロジェクトの場合、構成でビルドするかどうかを定義できます。Visual StudioでConfiguration Manager(メニュービルド)を開きます。左上のコンボボックスで、のリリースまたはのデバッグの設定を選択し、ビルドのチェックボックスをリストの随意選択リストに設定します。

編集:それ以外の場合は手動で.csprojファイルを編集して、除外したい項目に条件の属性を追加する必要があります。これを行うには

<Compile Condition="'$(Configuration)' == 'Debug'" Include="Program.cs" /> 
+0

私の一部であなたの答えを編集しませんでしたか? –

+0

@サイモン:いいえ。私は言葉遣いが静かであることを認めなければなりませんが。 – Stephan

+0

@SimonMourierはい、あなたの答えの後30秒 - 私はそれが偶然だったと信じています。 – ANeves

6

、あなたは、手動で.csprojを変更する必要がありますデバッグビルドにのみ必要なファイルに対応するCompile XML要素にCondition XML属性を追加します。このように:

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
     ... 
    </PropertyGroup> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
     ... 
    </PropertyGroup> 
    <ItemGroup> 
    <!-- Add the Condition attribute here, on each of your debug only files 
    Pick up one of the configuration definition configuration above --> 
    <Compile Include="DebugOnlyClass1.cs" Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "/> 
    <!-- normal compilation --> 
    <Compile Include="Class1.cs" /> 
    <Compile Include="Properties\AssemblyInfo.cs" /> 
    </ItemGroup> 
    ... 
</Project> 
関連する問題