2

Visual Studio でコード (コード ライブラリ、コントロール、ユーティリティ、ヘルパー クラスなど) を共有したいと考えています。私は共有アセンブリを意味するのではなく、共有コードを意味します (つまり、アプリケーションと一緒に 1 つのアセンブリ、実行可能アセンブリを出荷したいのです)。

他の開発環境での手法は、マシン上のパスに共通のソース コードを配置することです。IDE には、コード ファイルを検索するためのパスのリストが与えられます。

Visual Studio はコード検索パスをサポートしていません。

バックアップ ハック ソリューションは、ソース コードをすべてのプロジェクトに何度もコピーすることです。ただし、すべてを 1 つのバージョンとして保持するために、ソース管理で共有されます。これは、ソース管理プロバイダーが共有ファイルをサポートする Microsoft Visual SourceSafe である場合にうまく機能します。

ただし、他のソース管理製品 (CVS、Subversion、Microsoft Team Foundation Source Save Server、SVN) は共有ファイルをサポートしていません。

では、他の人はどのようにして実行可能ファイルと一緒に DLL を出荷しないようにしているのでしょうか?


更新 1

これは、単一ファイルの展開の問題です。ClickOnce は、3 つのフォルダー (つまり、複数のファイル) に 18 個のファイルを生成します。

4

4 に答える 4

3

2 つの解決策を提案できます。

  1. Visual Studio では、ファイルへのリンクを追加できます。[既存のアイテムを追加] を選択し、ファイルを選択して、[追加] ボタンの横にある矢印をクリックします。ポップアップが表示されるので、そこから「リンクとして追加」を選択する必要があります。共通コードを 1 つの場所 (フォルダー) に保存できるようになりました。

ここに画像の説明を入力

  1. 共通コードを再利用可能なアセンブリにコンパイルし、プロジェクトで使用します。ILMergeを使用して、展開時にすべてのアセンブリを 1 つにマージします。私は個人的にこのオプションを好みます。
于 2008-11-04T16:13:31.227 に答える
1

私の仕事では、Subversion の外部フォルダーを使用してこの問題を解決し始めています。次のように、ルート フォルダー (または任意のフォルダー) に「外部」プロパティを配置するだけです。

ExternalLib https://yourrepo/SharedLibs/trunk

プロジェクトを更新すると、フォルダ ExternalLib が作成され、リポジトリのコンテンツが取り込まれます。コミットはそれぞれのリポジトリに反映されます。

したがって、バックアップ ハック ソリューションを SVN でも動作させることができます =)

于 2008-11-04T16:33:39.423 に答える
0

アセンブリを共有し、ビルド プロセス中に ILMerge などのツールを使用して、それらすべてを 1 つのバグ アセンブリにマージすることを検討してください。

于 2008-11-04T16:53:07.027 に答える
0

非常に信頼性の高い ClickOnce 配置を使用しています。ClickOnce では、ユーザーには隠されていますが、多くのファイル (DLL を含む) がダウンロードされますが、概念的にはアプリケーションという単一のオブジェクトがあります。共有コードは、共有プロジェクトを通じて処理されます。

しかし、実際に物理的に必要なファイルが 1 つだけの場合、ClickOnce は機能しません...

于 2008-11-04T16:22:29.430 に答える