2009-08-17 15 views
8

私はVisual Studioソリューションとプロジェクト構成に関していくつかの助けが必要です。Visual Studioソリューションを構成するベストプラクティス

私はいくつかのプロジェクトの解決策を持っています。これらはすべてC#で書かれており、GUIで使用するライブラリとしてコンパイルされています。これらのライブラリの中には、他のライブラリとの依存関係もあります。たとえば、TestExecutiveにはLoggingFrameworkが必要で、CommunicationsにはLoggingFrameworkも必要です。

どのような方法で整理できますか?ライブラリのバイナリを一つの場所に保持するために、アセンブリというフォルダを考えています。次のようなものがあります。

Solution 
    | 
    |-- TestExecutive 
    |-- LoggingFramework 
    |-- assemblies 

他にも問題があります。プロジェクトの1つは、ネイティブのC DLLを使用します。この図書館はどこに置く必要がありますか? librarieのアセンブリや最終的な実行可能ファイルで?

EDIT:

[OK]を、今私は、WinFormsのプログラムを実行していると仮定します。私はソースコードとバイナリが混在しています。どの機能を私が配布できるものを生成するために必要としますか?つまり、すべてのライブラリと設定ファイルで、ソースコードはありません。以前はNullsoftのインストーラを使ってこの作業を行っていましたが、Visual Studioがその作業を手助けできるかどうかはわかりません。

+1

プロジェクトの種類の1つがインストーラプロジェクトです。それをソリューションに追加するだけです。 Web全体またはMSDNに散在するチュートリアルがたくさんあります。 – Clyde

+0

完全なソースコードサンプルを扱う最終的な解決策はどれですか? – Kiquenet

答えて

8

ここにいくつかのこと:

  1. 一つのプロジェクトが別に依存している場合、あなたは、Visual Studioでその依存関係を設定することができます。プロジェクトを右クリックして[プロジェクト依存関係]を選択します。

  2. ソリューションの一部ではない他の.NETアセンブリ(サードパーティのツールなど)については、私がここに示したものを正確に示します。フォルダをプロジェクトに平行に配置します。次に、 "Copy Local"をtrueに設定して、それぞれのプロジェクトでアセンブリ参照を設定し、正常に動作します。

  3. ネイティブのC dllの場合は、少し異なります。ソリューションエクスプローラの参照セクションに直接参照はありません。コンパイラは、あなたのp/invokeの参照やそのようなものをチェックするためにdllを見るつもりはありません。 DLLは、トップレベルのWebプロジェクトまたはwinformsプロジェクトの配備の一部であることを確認するだけです。これは、CSSファイルや画像などのコンテンツファイルです。ただ、プロジェクト内のファイルとして追加し、「ビルドアクション」を確認してくださいがコンテンツに設定されているので、Visual Studioがちょうど展開

5

の一部として、ファイルをコピーするために知っている私は少し私の解決策のフォルダを設定しましたあなたとは違って。トップレベルには次のフォルダがあります。

\build 
\lib 
\src 

ビルドフォルダにはビルドスクリプト(NAnt、MSBuildなど)があります。任意のサードパーティ製のアセンブリ(または私が解決策でビルドしていないもの)は、適切なサブフォルダのlibフォルダに入れられます。たとえば、私はlog4net、NUnit、RhinoMocksの各フォルダをlibフォルダに持っています。それぞれにはその依存関係に必要なファイルが入っています。 srcフォルダには、ソリューションとすべてのプロジェクトファイルがあります。

私はこの構造が好きです。なぜなら、プロジェクトコードとプロジェクトに必要な他のものとを明確に区別しているからです。また、私は通常、カスタムビルドタスクをセットアップして、結果として得られたアセンブリのアセンブリを\ deployまたは\ lib \フォルダにコピーします。この方法では、ビルドされたアセンブリやプロジェクト全体を取得するために、\ src \ bin \\フォルダを探す必要はありません。しかし、これはあなたの質問の範囲を少し超えているようです。

Btw ...私は自分自身でこの構造を思いついたわけではありませんが、私はTree Surgeonを使って始め、そこから私のプロセスを進化させたと思います。

+0

EDITの範囲外ではありません;-)情報をありがとうございます。 – yeyeyerman

+0

ツリーサージェン "開発ツリー"ブログシリーズは本当に良いです。 –

+0

これらの投稿を掘り起こすのに私はしばらく時間をかけました。あなたはそれらを見つけることができます[ここ](https://mikebroberts.com/articles/how-to-setup-a-net-development-tree/)。 – Ryogi

関連する問題