通常、アプリケーションで使用するすべての.dllファイルを.exeファイルと同じ場所に配置する必要があります。私はライブラリを他の専用のフォルダに置いて、私のアプリにどこを探すかをapp.configやそのようなパスで表示するだけです。これはどうすればいいですか?.dllファイルを使用する.exeファイルと区別する方法
答えて
app.configの<probing>
elementを使用して、依存関係を探す場所を指定できます。私はこれがディスク上の任意の場所ではなく、EXEの場所の下にあるディレクトリでなければならないと信じています。
詳細については、"Locating the assembly through codebases or probing"を参照してください。
私はディスク上ではなく、アプリケーションのディレクトリのサブディレクトリではない – agnieszka
その場合、 1)GACです。 2)Assembly.LoadFrom(手動で行う)。 3)codeBase要素を調べますが、あなたの状況をカバーするかどうかはわかりません。 –
Reflectionを使用して、指定されたパスからdllをロードし、そこにあるすべてのクラスとメソッドにアクセスできますが、これは大変な作業です。あなたはまた、インテリセンスの利益を失うことになるが、それは可能であるが、以下を参照してください
もGAC考えてみましょう - その目的は、アセンブリを保持することである。)
でもgacはコンピュータに属していますので、そのアプリケーションを使用するすべてのコンピュータ上のコンピュータのgacにアセンブリを置く必要がありますか? – agnieszka
を実際にスーツという他のいくつかの方法があります私のニーズは最高です。リフレクション(assebly.loadfrom)を使用することは不愉快で、私のコードには多くの変更が必要になります。しかし、ハンドラをappDomain.AssemblyResolveイベントに追加し、要求されたアセンブリが見つからない場合はその位置を表示することができます。
static void Main()
{
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
return Assembly.LoadFrom("C:\\TestAssembly.dll");
}
これは実行時にDLLの検索でいくつかのCPU時間を投資するとパフォーマンスの問題につながると思います – Uday
GACを使用するか、すべての従属DLLをEXEで配布することをお勧めします。さもなければ、不明瞭なバージョニングバグやアプリケーションが突然動かなくなったり、何もしなくなったりする危険性があります。
また、共有コードがネットワーク共有上にある場合は、おそらく各コンピュータのセキュリティ設定を変更する必要があることを忘れないでください。
よろしくお願いいたします。
以下のコメントを参照してくださいoliver hannapiの答え – agnieszka
- 1. nsisスクリプトを使用してexeファイルを別のexeファイルにバンドルする方法
- 2. Windowsとdllを区別する方法
- 3. のVisual Studio - .exeファイルは、すべての使用dllファイルをインストール
- 4. C#別のexeファイル間で異なるDLLを共有する
- 5. 外部の.dllで.exeファイルを作成する方法
- 6. ファイルを取得する方法DLLまたはEXEの説明
- 7. .exeファイルと.dllファイルのバッチセットバージョン番号
- 8. プロジェクトexeファイルを作成する方法、すべてのランタイムDLLファイルを含める方法
- 9. CSVファイルとの区別方法
- 10. Bash:ワイルドカードを使用してファイルとディレクトリを区別する
- 11. Outlook 2010のインラインイメージと添付ファイルを区別する方法[C#]
- 12. 通常のファイルとシンボリックリンクを区別する方法は?
- 13. ファイルURIとcontentprovider URIを区別する方法は?
- 14. fitnesseを使用してexeファイルを実行する方法
- 15. APKファイルを区別する
- 16. シングルEXEで.configファイルと.msiファイルをマージする方法
- 17. exeファイルのファイルと製品のバージョンを変更する方法
- 18. bashシェルでpstファイルとdbxファイルを区別する適切な方法
- 19. リリース管理:.exeファイルを別の場所にコピーする方法
- 20. C++でフォルダとファイルを区別する
- 21. C++ .exeでDLLをコンパイルする方法
- 22. .dllファイルをJavaコードで使用する方法は?
- 23. cs。 exeファイル。ファイル、別のコンソールアプリケーションプログラム
- 24. .netプロジェクト用の.exeファイルの作成方法と使い方は?
- 25. htacessにファイルとIDを区別させる方法
- 26. csファイルを別々のDLLにコンパイルする方法
- 27. rundll32.exeを使用してバッチからDLL呼び出し可能ファイルを作成する方法
- 28. 誰かが私がdllファイルにexeファイルをembeddすることができますどのようにDLL
- 29. java ISO-8859-1とUTF-8をエンコードするファイルを区別する方法は?
- 30. 実行中の別のexeファイルに依存してexeファイルを実行する方法
私はなぜこれをやっているのですか?理由は、各アプリケーションのこれらのdllを独立して更新することができる場合、多分wcfのWebサービスがより良いソリューションを提供するかもしれませんか?正直、 – Calanus
?私は言われた;)私たちは同じライブラリを使用してアプリケーションを失っていると彼らは1つの場所にそれらを保つためには – agnieszka