2009-06-30 38 views
3

私は、社内で使用されているプログラムを作成します。私は、私が多くのプロジェクトで参照するいくつかのサポートDLLを作成しました。 (例えば、一般的なデータアクセスヘルパー) すべてのプログラムディレクトリに "datatools.dll"のコピーを持っているのではなく(デフォルトの動作であるようです)、私は多くのプログラムから参照できる1つのコピーを持っていたいと思います。私自身のsystem32ディレクトリのようなもの。VS展開プロジェクトで共有DLLを参照する

プロジェクトに「参照パス」を追加しました。私はプロジェクトとその後のプロジェクトをコンパイルします。インストーラは正常に動作します。共有DLLは参照パスにあります。 しかし、プログラムを実行するとエラーが発生します。 "System.IO.FileNotFoundException:ファイルまたはアセンブリ 'datatools.dll、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = null'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。" datatools.dllをexeと同じフォルダに移動すると、プログラムは問題なく実行されます。

共有DLLを作成して共有場所を使用することはできますか? これはちょっと悪い考えですか?

答えて

3

あなたは、.NETを使用している場合は、この種の問題のための典型的なアプローチは、それらを展開することである(、VS2k8を使用して、プロジェクトのプロパティタブで見て)に署名「日とGACに

+0

お返事ありがとうございました。私はVS2k8を使用しています。私はSignオプションを見て、あなたとYuliyは言いましたが、それが私の頭の上にあることを恐れています。 私は、ユーザーのマシンに複数のコピーを置いています。 – mohnston

+0

私はそれに署名しなくてもいいのかどうかわかりませんか?私は、これらの一般的なDLLは、私のアプリケーションのフォルダではなく、隔離されたフォルダにある必要があることを意味します。 DLLの中には、独自のdllではないものがあります。そのため、sigingは問題です。 – Denish

+0

最後の解決策があるかどうか私にmohnstonを教えてください – Denish

2

それらを置くことができます共有アセンブリをGAC(グローバルアセンブリキャッシュ)に、理想的には独自の展開プロジェクトとして使用できます。

1

マルチプロジェクトソリューションのようですね。 DataTools.dllアセンブリを参照するすべてのプロジェクトが正しい(新しい)場所を指していることを確認します。

IDEに応じて、古いリファレンスを削除してビルドして(クラッシュするのを見て)、新しい場所から再追加するような、ファンキーなものを試してみる必要があります。

関連する問題