4

さて、先日この質問をしましたが、あいまいさのため閉鎖されました。もっと具体的にしようと思います。プロジェクトで、たとえばC#(Visual Studioを使用)で、dllへの参照を追加し([参照]-> [参照の追加]を右クリック)、そのdllの場所はC:\ Blah\Fooにあります。ここで、ビルドされたexeを別のマシンに移動する場合、dllの場所はexeと一緒である必要がありますか、それともC:\ Blah \ Fooにある必要がありますか?ありがとうございました。

4

5 に答える 5

7

説明した方法で参照を追加すると、その参照が出力フォルダー(exeファイルと同じ)にコピーされます。参照(F4)のプロパティを確認すると、「ローカルコピー」というオプションが表示されます。これがtrueに設定されている場合、DLLはEXEファイルと同じ出力フォルダーにコピーされます。

ローカル設定をコピー

したがって、アプリケーションを別のマシンにデプロイするときは、exeとそれが参照するすべてのDLLをデプロイメントの場所にコピーする必要があります。Windowsは、いくつかの場所でDLLを検索します。最初の場所は、EXEファイルと同じフォルダーです。

于 2012-09-17T18:04:47.733 に答える
2

通常、アセンブリをアプリケーションと同じフォルダーに配置するだけで、デフォルトのプローブパスに配置され、(ほとんどのアプリケーションで)検出されますが、アプリケーションの種類に応じて、他にも多くのオプションがあります。参照を定義するときに、「ローカルにコピー」するオプションがあります。これにより、アセンブリがアプリケーションの出力フォルダーにコピーされます。これをに設定したままにするTrueと、アセンブリ(DLL)は.exeを使用して実行され、通常は「正常に機能」します。

ランタイムが使用する完全なプロセスについては、MSDNの「ランタイムがアセンブリを見つける方法」で説明されています。特に、「コードベースまたはプロービングによるアセンブリの検索」というタイトルのトピックでは、アセンブリがどのように詳細に配置されるかについて説明します。これは、多くの要因によって異なります。

于 2012-09-17T18:04:03.677 に答える
1

DLLはexeファイルである必要があります。このリンクを見て、DLLの.NET検索の場所を確認してください。参照されたDLLをロードするために場所が検索される順序は何ですか。

于 2012-09-17T18:03:27.123 に答える
1

dllは、GACにインストールすることも、EXEとともに同じディレクトリに存在することもできます。

編集:上記は、参照を解決するためのほんの2、3の場所です。

于 2012-09-17T18:03:55.610 に答える
0

参照を追加するときは、このアセンブリのcsprojにパスを追加します。このdllを参照できることを確認する必要があります。

デプロイするときは、dllがBinディレクトリにコピーされるため、別の質問になります。

デプロイする場合は、csprojでアセンブリのパスを確認し、アセンブリをデプロイしていることを確認してください

注意:CopyLocalあなたのrefrenceのプロパティを確認してください

2その他の解決策:

GAC Global Assembly Cacheアセンブリを共有するために使用できます

ツール:Gacutil.exeアセンブリを設定するため

于 2012-09-17T18:04:20.810 に答える