3

VS2005 と VB.NET を使用しています。

私が作成したデータストアの API であるプロジェクトがあります。コンパイルすると、 が作成されますapi.dll

同じソリューションに、コンパイル時に作成される API プロジェクトへのプロジェクト参照を持つ 2 番目のプロジェクトがありますwrapper.dll。これは基本的に、アプリケーション固有の API のラッパーです。その他のアプリケーションで使用する場合は、新しいアプリケーションwrapper.dllにコピーする必要がwrapper.dllあります。ラッパープロジェクトをそれ自体にコンパイルして、1つだけを移動api.dllできるようにするにはどうすればよいですか?api.dlldll

4

4 に答える 4

1

2 つのアセンブリをマージするには、おそらくILMergeなどのツールを使用する必要があります。

于 2008-08-27T18:39:33.507 に答える
1

もっと簡単な方法があります。api.dll のソース ファイルを指す、wrapper.dll プロジェクトにショートカット (Visual Studio でリンクされたファイルと呼ばれる) を作成するだけです。これにより、ソースが直接 wrapper.dll にコンパイルされます。

于 2008-08-27T18:41:13.130 に答える
1

@Jas、これは Visual Studio の特別な機能です。この手順の概要は、このブログ エントリ「Shareing a Strong Name Key File Across Projects」と呼ばれます。この例は、厳密な名前のキー ファイルを共有するためのものですが、どの種類のファイルでも機能します。

簡単に言うと、プロジェクトを右クリックし、[既存の項目を追加] を選択します。リンクするファイルのディレクトリを参照し、ファイルを強調表示します。[追加] または [開く] (Visual Studio のバージョンによって異なります) を押す代わりに、そのボタンの右側にある小さな下矢印をクリックします。Visual Studio 2003 を使用している場合は [開く] または [ファイルをリンク] のオプションが表示され、2005 を使用している場合は [追加] または [リンクとして追加] のオプションが表示されます (2008 についてはわかりません)。いずれにせよ、「リンク」という言葉を含むものを選択してください。次に、プロジェクトは基本的にファイルを参照します。元のプロジェクトと「リンク」したプロジェクトの両方からアクセスできます。

これは、wrapper.dll と api.dll のすべての機能を含むアセンブリを作成する便利な方法ですが、新しいファイルを api.dll に追加するたびにこの手順を繰り返す必要があります (ただし、wrapper.dll は除きます)。 dll)。

于 2008-08-28T10:56:44.860 に答える
0

api.dll をリソースとして wrapper.dll にコンパイルできると思います。次に、api.dll からそのリソースに手動でアクセスし、手動でロードします。ディスクから手動でアセンブリを読み込んだので、ストリームからアセンブリを読み込んでも違いはありません。

テキストまたはxmlファイルを含めるのと同様に、プロジェクトにdllをファイルとして含めてみます(コンパイル用のプロジェクト参照に加えて)。次に、ビルド アクションを「埋め込みリソース」に設定します。wrapper.dll 内では、Assembly オブジェクトを使用して、他の埋め込みリソースと同様に api.dll にアクセスします。次に、Assembly.Load http://msdn.microsoft.com/en-us/library/system.reflection.assembly.load.aspxを使用してアセンブリをロードすることもできます。

于 2008-08-27T18:51:32.230 に答える