問題タブ [assemblybinding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - configを使用してプライベートフォルダ内の複数のアセンブリバージョンを操作するにはどうすればよいですか?
次のような構造で、アプリケーションのプライベートフォルダーに保存する必要がある同じアセンブリの複数のバージョンがあるシナリオがあります。
私の問題は、.Netランタイムが古いバージョンのいずれかを要求されると、常に最新バージョンを検出し、ビルド番号の不一致が原因で失敗してから、より適切な一致をプローブしようとすることです。
アセンブリには強い名前が付けられており、app.configでこの構成を使用しています。
うまくいけば、私がここで見逃したことがあります。AppDomain.AssemblyResolveイベントをリッスンすることで、これをコードで解決できることはわかっていますが、純粋な構成ソリューションを確認したいと思います。
更新:それで、ケントが想定したタイプミスであるバグを見つけました。culture="netural"
である必要がありますculture="neutral"
。とはいえ、タイプミスがなければ、codeBase
各バージョンを指す要素を使用する場合、解決はうまく機能します。このシナリオでは、プロービング要素が機能していないようです。
.net - 別のアセンブリ名への BindingRedirect
BindingRedirectを使用して、YourAssembly.dll 1.1.0.0 を 1.2.0.0 にリダイレクトできます。
アセンブリ名が異なる場合、これが可能かどうかは誰にもわかりません。
例えば
YourAssembly1.dll (v1.1) は YourAssembly2.dll (v2.8) にリダイレクトされます
c# - WindowsImpersonationContext の下のアセンブリ バインディング。FileLoadException を防ぐ方法は?
保護されたネットワーク共有間で多くのファイルを移動および作成するため、多くの偽装を行う必要があるアプリケーションがあります。メソッドがユーザー、ドメイン、パスワード、および偽装コンテキストで実行する必要があるコードを含むデリゲートを受け取る単純な静的クラスを作成しました。
私が遭遇した問題は、CLR がこのコンテキストで参照されたアセンブリにバインドしようとしたときです。「アクセスが拒否されました」というメッセージとともに FileLoadException がスローされます。
これは、偽装されたユーザーがファイル システムの下の *.DLL ファイルに対して十分な権限を持っていないことが原因であると思われます。たとえば、偽装ブロックの直前に無害なコードを書くことができます。これは、コンテキストが偽装されたユーザーに切り替わる前に、問題のアセンブリから型をロードする以外に何も実行しません。これはうまく機能します。しかし、私はこれがエレガントな解決策であるとは本当に考えていません.偽装で使用できる型について心配し始める必要がありますtypeof()
か?
これをさらにイライラさせるのは、ローカルの開発マシンでこの問題に遭遇しないことです。この問題が発生するのは、アセンブリがベータ環境に出荷されたときです。また、ベータ環境からファイルのアクセス許可を読み取って、ロケーション マシンでそれらを模倣しようとするアクセス権がありません。
いずれにせよ、私はこの解決策を試しました:
サイコロはありません。で始まる行を除いて、「アクセスが拒否されました」という例外が引き続き発生しAssembly.Load
ます。
注目すべき興味深い点の 1 つは、ビルド サーバーから同じ例外が発生していたことです。上記のソリューションにより、ビルドサーバーで修正されました。ベータ環境ではありません。
ここで何が欠けていますか?ありがとう。
.net - 新しいバージョンが利用できない場合、.NET アプリの assemblyBinding は古いバージョンで動作しますか?
アプリで使用されている新しいバージョンのアセンブリにアセンブリ バインディングを指定しましたが、うまく機能しています。
しかし、私のクライアント マシンの 1 つで、そのアセンブリの新しいバージョンが見つからず、代わりに古いバージョンが存在します。アプリを実行しようとすると、新しいバージョンが見つからないと表示されますが、これは正常だと思います。問題は、新しいバージョンが利用できない場合、古いバージョンを使用するように .NET フレームワークに指示するにはどうすればよいかということです。
目的は、クライアント マシンにインストールされているアセンブリのバージョンに応じて自動的に機能する一意の構成ファイルを作成することです。次のように機能する独自の構成ファイルが必要です。
- 参照されたアセンブリにバージョン 1 がある場合は、そのバージョン 1 を使用します。
- 参照されたアセンブリにバージョン 2 がある場合は、そのバージョン 2 を使用します。
- ...など
参照されているアセンブリのインストール済みバージョンに応じて、実行時に assemblyBinding 情報を変更しないようにしています。
何か案は?ありがとう。
.net - 異なる公開キー トークンを使用した .Net アセンブリ バインディング リダイレクト
公開キー トークンが古いバージョンでは null で、新しいバージョンでは設定されている場合、参照されているアセンブリの異なるバージョン間でアセンブリ バインド リダイレクトを実行することは可能ですか?
たとえば、2 つのアセンブリがあります...
と
次のアセンブリ バインディング リダイレクトは、Asp.Net の web.config で機能する必要があります...
asp.net - 一定時間後にアセンブリ FileLoadException (アクセスが拒否されました)
しばらく (数日間) 正常に動作する Web アプリケーションがあり、その後、外部 dll を参照するクラスをインスタンス化するときに FileLoadException をスローし始めます。
- Assembly静的メソッドを使用してアセンブリを明示的にロードしていません。参照されたライブラリからクラスをインスタンス化するクラスをインスタンス化しているだけです。
- Process Monitor を実行して、アプリケーション パスを監視しました。エラーが発生したソースコードファイルに対して「PATH NOT FOUND」という結果しか得られません(デバッグモードでコンパイルされているため、これはスタックトレースをダンプするときにエラーが発生した行を表示しようとする.NETの一部にすぎないと思います)
- これは、社内の専用サーバーで実行されています。アプリケーションは、同じ参照 dll を使用して構築された別の Web サイトと共に、.NET 3.5 アプリケーション プールで実行されています。他の Web サイトにはより多くのトラフィックがありますが、このエラーは発生しません。
- アプリケーションは 3 つの Web サーバー間で負荷分散されており、3 つすべてである時点でこの問題が発生します。
Web サーバーの 1 つで、アセンブリ バインディングのログ記録をオンにしました。スタック トレースは次のようになります。
私はファイル ロードの例外のデバッグにあまり詳しくないので、どんな助けでも大歓迎です (デバッグのために他に何ができるかなど)。
ありがとう。
app-config - 別のコンピューターでアプリケーションを実行している場合の MissingMethodException
.NET Framework 3.5 をターゲットにして Visual Studio 2010 でアプリケーションをコンパイルし、それをクライアント サーバーに展開したところ、次のエラーが表示されるという問題がありました。
探しているメソッドは次のとおりです: XslTransform.Transform Method (IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)
(サポート対象: 4、3.5、3.0、2.0、1.1 )
assemblyBinding
次のような要素を使用して、同じ DLL の .NET Framework 4.0 バージョンへのリダイレクトを設定しようとしました。
しかし、アプリケーションが実行されなくなり、イベント ログに次のように記録されます。
EventType clr20r3、P1 myapplication.exe、P2 3.85.12.27583、P3 4be9757f、P4 system.configuration、P5 2.0.0.0、P6 4889de74、P7 1a6、P8 136、P9 ioibmurhynrxkw0zxkyrvfn0boyyufow、P10 NIL。
要約すると、(1) アプリケーションがリストされたメソッドを見つけられない理由と、(2) System.Xml の .NET 4.0 バージョンにリダイレクトできない理由を知っている人はいますか?
どんな助けでも大歓迎です、私は完全に立ち往生しています!
要求された app.config:
.net - アセンブリ バインディング ログ ビューアー (fuslogvw) がバインディングをログに記録しない
Assembly Binding Log Viewer (fuslogvw) が、マシンにインストールされているフレームワークのどのバージョンのバインディングもログに記録していません。
カスタム ログの場所、デフォルトのログの場所、デフォルトのカテゴリ、およびネイティブ イメージ カテゴリを使用してみました。
Assembly Binding Log Viewer は数か月前に動作しました。私は64ビットマシンを使用しており、実行しています:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64\FUSLOGVW.exe
asp.net-mvc - ASP.NET MVC 2: アプリが両方のバージョン (1 と 2) を参照するのはなぜですか?
自分の ASP.NET MVC 2 プロジェクトの DLL を Reflector で開いたところ、System.Web.Mvc への参照が 2 つあることに気付きました。1 つはバージョン 1.0.0.0 用で、もう 1 つは 2.0.0.0 用です。csproj ファイルや web.config ファイルのどこにも v1 への参照はないようですが、アプリを実行しようとするとエラーが発生しますCould not load file or assembly 'System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
v1 への依存はどこから来るのでしょうか?
visual-studio-2010 - アセンブリバインディングリダイレクトとコード分析
Visual Studio2010のMvc3.0.0.0プロジェクトでDotNetOpenAuth(System.Web.Mvcバージョン1.0.0.0を参照)を使用しています。
次のようにアセンブリバインディングリダイレクトを使用しています:-
次のエラーが発生するコード分析を除いて、すべて正常に動作します。-
CA0001:モジュールXの読み取り中に次のエラーが発生しました:アセンブリ参照を解決できません:System.Web.Mvc、Version = 1.0.0.0、Culture = neutral、PublicKeyToken=31bf3856ad364e35。
と
CA0058:参照されているアセンブリ'System.Web.Mvc、Version = 1.0.0.0、Culture = neutral、PublicKeyToken=31bf3856ad364e35'が見つかりませんでした。このアセンブリは分析に必要であり、Xによって参照されました。
コード分析ツールにアセンブリバインディングのリダイレクトを尊重させる方法はありますか?