10

ASP.Net で記述された XML Web サービスが動作しています。ここで、特定のフォルダーにある特定のアセンブリを参照する必要があります。たとえば、そのフォルダー内の無数の dll を bin フォルダーにコピー/複製したくc:\NotMyCode
ありません。

CopyLocal=falseWeb サービスで参照されるアセンブリの を保持しようとしました。その結果、アセンブリの FileNotFound 例外が発生しました。に切り替えるとCopyLocal=true、参照されている DLL が bin フォルダーにコピーされ、動作します。

私の質問は次のとおりです: bin フォルダーまたはその下のサブフォルダーにないアセンブリを参照するにはどうすればよいですか? セキュリティ ポリシー ファイルをどこかで変更する必要がありますか? このようなことをしたいと思ったのは私が初めてではないと思うので、誰かがすでにこの問題を解決していると思います。

(IIS ASP.net 構成パネルで管理者ユーザーになりすまそうとしましたが、うまくいきませんでした。)

更新: GAC にもインストールできません。例えるなら、この Web サービスは、Starteam などのサードパーティ アプリに簡略化されたビューを提供しています。そのフォルダー内のすべてのバイナリをbinフォルダーにコピーしたり、GACにインストールしたりすることはできません(する必要はありません..したくない..)

4

5 に答える 5

4

AppDomain.CurrentDomain.AssemblyResolveイベント をいつでも使用して、

Assemly.Load(Path.Combine(@"c:\NotMyStuff",args.Name.Substring(0, args.Name.IndexOf(",")) + ".dll"))

詳細については、リンクを参照してください。

于 2012-04-09T16:06:42.093 に答える
0

参照されたアセンブリをいつでも GAC に配置できれば、場所は問題になりません。コンポーネントを GAC (C:\windows\assembly) にドラッグするか、GACUtil.exe を実行してインストールできます。

この記事が役立つかもしれません。「アセンブリ読み込みのベスト プラクティス」について説明しています。

最初は、web.config の runtime/assemblyBinding の要素を使用できると思って<probing privatePath="bin\debug"/>いましたが、プローブでは、ルート ロケーションの下のサブディレクトリしか指定できません。

于 2009-07-30T12:06:07.137 に答える
0

コード内で特定のアセンブリ パスを参照することもできると思います。

AppDomain.CurrentDomain.AppendPrivatePath("C:\\NotMyCode");

Global.asax Application_Start でそれを行うと、うまくいくはずです。

于 2009-07-30T12:25:19.233 に答える
-1

GAC を入れて、そこからアクセスできます。

于 2009-07-30T12:16:25.333 に答える