2011-06-29 9 views
26

いくつかの共通ライブラリを共有する複数の製品があります。これらのライブラリは別個のソリューションの一部です(したがって、TFSによって独立して構築することができます)。しかし、問題は開発中です。共通ライブラリを変更し、バイナリにコンパイルし、共通の場所にコピーし、製品ソリューションをコンパイルします。visual studio 2010条件付きリファレンス

これを避けるため、実際には条件付き参照が可能であるかどうか疑問に思っています。したがって、デバッグ構成ではプロジェクト参照として参照しますが、リリース構成ではバイナリ参照となります。

+1

私が気づいている良い方法はありません。過去に私は複数のソリューションを使用してきました...主なアーキテクチャ上の変更を行っている場合はすべてを参照する「マスター」ソリューションを使用し、個々のプロジェクトでのみ作業する場合はプロジェクトソリューションを分離します。一般に、PITA。 –

+0

これは '.csproj'ファイルを手動で修正することで可能です。 – SLaks

+0

これを行うには、ビルドプロセスを変更します。 MsBuildのようなツールを使用してください。 –

答えて

39

これを行うには、プロジェクトファイルを直接編集することで条件付き構成で行うことができます(VS IDEはこれを行いません)。

はたとえば、あなたが "選択" の要素を使用して、このような何かを行う可能性があります:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" > 
    <PropertyGroup> 
     <!-- ... --> 
    </PropertyGroup> 
    <Choose> 

     <When Condition=" '$(Configuration)'=='Debug' "> 
      <ItemGroup> 
       <ProjectReference Include="..\stuff\MyStuff.csproj"> 
        <Project>{4c7bbe47-8d84-45d4-95f0-f640ba59563c}</Project> 
        <Name>MyStuff</Name> 
       </ProjectReference> 
      </ItemGroup> 
     </When> 

     <When Condition=" '$(Configuration)'=='Retail' "> 
      <ItemGroup> 
       <Reference Include="MyStuff.dll" /> 
      </ItemGroup> 
     </When> 

    </Choose> 
    <!-- Rest of Project --> 
</Project> 

MSDNはmore information about using conditional constructsを持っています。

+0

これらのプロジェクトはソリューションの一部でもある必要がありますか? –

+0

私はそう信じますが、 "リリース"のケースではそれはまだうまくいくはずです。彼らはリリースビルドでは実際には参照されていないので、問題ではない、見つからないと表示されるはずです。 – Matt

4

あなたはNuGetを見てすることがあります:

NuGet

NuGetは、プロセスを簡素化上の.NETプラットフォームの意図のためのフリーでオープンソース開発者の集中パッケージ管理システムです開発中にサードパーティ製のライブラリを.NETアプリケーションに組み込む方法

(あなたはこの場合には、自分の第三者だろう場所)

注:これはあなたの条件付きの参照を与えていないだろうが、それは、共通のコンポーネントをアップデート楽でしょう。