いくつかのプロジェクト間でC#クラスのソースコードを共有します
-
28-09-2019 - |
質問
アプリケーションの内部ログを処理するクラスを作成しました。今、私はこのクラスを別の新しい完全に独立したプロジェクトで使用したいと思います。
ファイルを新しいプロジェクトフォルダーに単純にコピーすることもできますが、維持するために1つのコピーのみを使用して、すべての変更が時間の経過とともに両方のプロジェクトに適用されるようにしたいと思います。
「既存のファイルの追加」を使用できますが、次の開発者が必要であることを知っているようにファイルをどこに配置できますか。私はかつてこれのために「共有」フォルダーを持っていましたが、一度にそのフォルダーが次の開発コンピューターに持ち込まれませんでした。
これを整理するための最良の方法は何ですか。これにより、新しいメンテナーにとって最も理にかなっており、プロジェクトでのリンクが壊れたリスクを最小限に抑えます。
解決
このようにこのクラスを持つライブラリプロジェクトを作成することができます。そのプロジェクトへの参照を追加することだけです。
オプションがない場合は、「右クリック - >既存のアイテムの追加 - >リンクの追加」を使用できます。この方法では、コードのコピーは1つだけですが、複数のプロジェクトに存在できます。
他のヒント
共有するクラスライブラリが最良のソリューションです。
ただし、コピーするのではなく、リンクとしてVSプロジェクトにファイルを追加できます。これを行うには、既存のアイテムの追加ダイアログの追加ボタンのドロップダウンを使用します。
実際にソースコードを共有する必要がある場合、たとえば、同じアセンブリの同時32ビットと64ビットビルド(ネイティブコードに依存する場合には必要な場合があります)がある場合、与えられた回答を使用できます。このスレッドで: Visual Studioのプロジェクト/ソリューション間でコードをどのように共有しますか?
(2つのプロジェクトの間にコードファイルを「リンク」する」を探してください。)
ロギングコードを別のアセンブリに分割します。
その後、そのロガーを使用するプロジェクトにそのアセンブリを含めることができます。
それはすべてを素晴らしく、きれいに保ち、各コピーを心配する必要があるのではなく、1つのコードを維持する必要があります。
このクラスを含む新しいアセンブリを作成します。
その後、他のすべてのプロジェクトはこのアセンブリを参照して、内部のクラスを使用できます。
クラスを一意の名前空間に配置し、使用する必要があるすべてのプロジェクトへのリンクとしてファイルを追加します。クラスを使用するユニークな名前空間の使用ステートメントを使用することを確認してください。そうしないと、すべての使用を完全に資格を付ける必要があります。このような状況では、これは、プロジェクト間で共有したい独自のコードの一部である不必要なクロスアセムプリファレンスを生成しないため、アセンブリよりもはるかに好ましいと思います。
バージョンシステムを使用してこれを行うこともできます。
通常、ソリューションとメインプロジェクトを使用してディレクトリを作成し、このディレクトリをSVNにコミットします。その後、すべての共有ライブラリはSVN:外部 - を使用してリンクされます。そのため、すべてのプロジェクトは同じソリューションディレクトリに存在します。
コミットした後、誰でもすべての外部依存関係を使用して動作ソリューションをチェックアウトできます。