問題タブ [assembly-resolution]
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.
asp.net-mvc - なぜ Combres はまだ古いバージョンの System.Web.Mvc を探しているのでしょうか?
MVC 3 RC プロジェクトでCombresを使用していますが、Web サーバーにデプロイするとアセンブリ バインディング エラーが発生します。
System.IO.FileLoadException
ファイルまたはアセンブリ 'System.Web.Mvc, Version= 2.0.0.0 , Culture=neutral, PublicKeyToken=31bf3856ad364e35' またはその依存関係の 1 つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULT からの例外: 0x80131040)
<%= Html.CombresLink("commonJs") %>
私の開発マシンには、GAC に MVC 1 および 2 アセンブリがあるため、問題なく動作します。Web サーバーの GAC には MVC のバージョンがなく、MVC 3 アセンブリをビン展開しています。私のプロジェクトは System.Web.Mvc のバージョン 3.0.0.0 を参照しており、web.config に次のセクションがあります。
私は、このセクションが Combres に代わりにバージョン 3.0.0.0 を使用するように指示すると考えました。アプリケーションが参照を解決できないのはなぜですか?
.net - web.configからアセンブリを参照する方法は?
'System.XML.dll'アセンブリへの参照をweb.configに追加する必要があります(問題の解決策を試すために、ここで説明:拡張メソッドの問題:IXmlLineInfo)。
「アセンブリ」セクションに次の行を追加しようとしました。
それはエラーを引き起こしました:
説明:この要求を処理するために必要な構成ファイルの処理中にエラーが発生しました。以下の特定のエラーの詳細を確認し、構成ファイルを適切に変更してください。
パーサーエラーメッセージ:ファイルまたはアセンブリ'System.Xml、Version = 2.0.5.0、Culture = neutral、PublicKeyToken=7cec85d7bea7798e'またはその依存関係の1つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULTからの例外:0x80131040)
正直なところ、version / Culture/PublicKeyTokenが正しく指定されているかどうかはわかりません。
System.XML.dllのバージョンはいくつかあります。
- C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v3.5 \ Profile \ Client \ System.XML.dll
- C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ Client \ System.XML.dll
- C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.XML.dll
- C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ Silverlight \ v3.0 \ System.Xml.dll
- C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ Silverlight \ v4.0 \ System.Xml.dll
また、フレームワーク、フレームワークx64などのGACにいくつかのアセンブリがあります...
質問1:
どのアセンブリが必要ですか?
質問2:(廃止)
正確なアセンブリバージョンとpublicKeyTokenを確認する方法は?
PS面白いことに、質問を投稿したときに、「publickkeytoken」タグがすでにあり、質問2の回答が含まれていることがわかりました:)
どうもありがとう!
asp.net - ASP.NET アプリでアセンブリの読み込みエラーが発生し、アセンブリが参照されなくなった
Noesis.Javascript アセンブリ (http://javascriptdotnet.codeplex.com) を参照するコードがいくつかあり、Noesis.Javascript.dll の名前を Noesis.Javascript.0.4.dll に変更しました。Visual Studio からこのファイルを参照し、ASP.NET 開発サーバーで Web アプリを起動すると、次のエラーが発生しました。
ファイルまたはアセンブリ 'Noesis.Javascript.0.4' またはその依存関係の 1 つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULT からの例外: 0x80131040)
次に、この参照を削除して、古いバージョンのライブラリを再参照しようとしました。同じエラーが発生しました。次に、この参照を完全に削除し、このライブラリを使用するすべてのコードをコメントアウトしようとしました。それでも同じエラーが発生します。システム トレイのアイコンから ASP.NET 開発サーバーを明示的に閉じようとしましたが、それでも発生します。現在、プロジェクトのどこにもこのアセンブリの参照が見つかりませんが、エラーは解決しません。何が起こっているのでしょうか?見つからないキャッシュはありますか? このエラーを解決するにはどうすればよいですか?
.net - AssemblyResolve は常に発生し、MyAssembly.resources を要求します。
私は WPF アプリケーションを持っていて、AppDomain.AssemblyResolveイベント(ランタイムがアセンブリを見つけられない場合は常にこのイベントが発生します) をサブスクライブしています。MyAssembly が現在の MyAssembly.resources を解決しようとして、何度か呼び出されることに気付きました。アセンブリを実行しています。また、MyAssembly から参照したライブラリ アセンブリに対しても同じことを要求しました (Library.resources を要求しました)。
これは正常ですか?どうすれば修正できますか?私のアプリケーションには問題があります。ライブラリにある一部の xaml ユーザー コントロールを読み込めません。これは関連していますか?
.net - どのアセンブリがどの依存関係をロードしているかを検出する(実行時)
実行時にロードされる特定の依存関係をトリガーしているアセンブリを見つける最も簡単な方法は何ですか?アプリケーションの一部としてロードされる100以上のアセンブリの1つに、古いアセンブリへの迷いの参照があります。
FUSLOGVWを使用すると、ロードされている古いアセンブリを確認できますが、ログには、どのアセンブリがロードされたのかがわかりません。私はCheckASMを使用しました。これにより、プライマリアセンブリの依存関係を参照し、ツリーを探索することができますが、これらはすべて問題ありません。
したがって、実行時に動的にロードされるアセンブリか、どこかの構成ファイルである必要があります。しかし、私は私の人生のためにそれを見つけることができません。
これを行うためのよりスマートな方法があるかどうか疑問に思っていましたか?
c# - アセンブリに必要なアセンブリを取得しますか?
X.dll
プログラムにアセンブリをロードしていますが、どこでもかまいません。X.dll
クラスのインスタンスを作成しますX.A_Class
。しかし、アセンブリにアセンブリ、、およびX
が必要な場合はどうでしょうか。
どうすればこれを検出できますか?
それらを変数に保持せずにロードするにはどうすればよいですか?A
B
C
D
c# - CurrentDomain.AssemblyResolve が「一部の」アセンブリを解決できない
アセンブリ解決に関する私の最後の質問 ( AppDomain.CurrentDomain.AssemblyResolve が <AppName>.resources アセンブリを要求していますか? ) の答えを見つけた後、参照アセンブリを自分のプログラムに埋め込むことができるようになりました。
まず、Program.cs の最初の入り口でアセンブリ リゾルバーをセットアップします。
これが私の実際のリゾルバーです。
これで、私のプログラムはこれらのライブラリ アセンブリを参照します。
- Esent.Collections.dll
- Esent.Interop.dll
- HtmlAgilityPack.dll
- Ionic.Zip.Reduced.dll
- System.Windows.Forms.Calendar.dll
- AxInterop.ShockwaveFlashObjects
- Interop.ShockwaveFlashObjects
- irrKlang.NET4.dll
- ikpMP3.dll
- Nini.dll (解決済み)
上記のリゾルバーを使用します。Esent.Collections、Esent.Interop、HtmlAgilityPack、Ionic.Zip.Reduced、System.Windows.Forms.Calendar、AxInterop.ShockwaveFlashObjects、Interop.ShockwaveFlashObjects を埋め込み、実行時にそれらを解決できます。
この問題は、irrKlang.NET.4、Nini、および ShockwaveFlash アセンブリで発生します。これらのアセンブリを埋め込んで実行時に解決しようとすると、問題が発生します。
irrKlangの場合、irrKlang.NET4アセンブリが管理されていないikpMP3.dllを参照しているため、問題を理解できます。これは、それ自体では見つけることができません。
Nini.dllの場合、実際にこのアセンブリを埋め込むことができ、VSデバッグ/リリース構成を使用して実行すると問題なく動作しますが、エクスプローラーから自分でプログラムを起動すると、プログラムは起動を拒否します(エラーやビットなし)の情報)。
どんな助けでも感謝します。
今すぐ更新 、Marc Gravell の回答に感謝します。Nini.dll をロードできます。
irrKlang 部分については、irrKlang.NET4.dll は ikpMp3.dll を必要とするマネージド アセンブリ (アンマネージド アセンブリ) であるため、実行時に irrKlang.NET4.dll を解決しようとすると、必要な依存関係 ikpMp3 にアクセスできます。これに対する回避策はありますか?
c# - アセンブリの解決に関する例外:修正プログラムを使用して検証不可能な実行可能ファイルをロードしようとしました
必要なアセンブリをプロジェクトに埋め込み、実行時にAppDomain.CurrentDomain.AssemblyResolve
イベントを使用してそれらを解決しています。
irrKlangの.net4-wrapperを除いて、すべて正常に動作します。irrKlangを実行しようとすると、例外がスローされます。
基本的に、CLRがAssembly.Load(byte [])を使用して混合モードアセンブリをロードできないのではないかと思いますが、よくわかりません。
例外メッセージに関連するものは何も見つかりませんでした。
修正プログラムを使用して検証不可能な実行可能ファイルをロードしようとしました(2つ以上のセクションまたはTLSセクションを持つIAT)。
感謝します。
c# - 別のフォルダからのアセンブリ参照を解決する
特定のベンダーのサードパーティアセンブリを参照して使用するアプリケーションを開発しています。開発ボックスでは、ソースツリーの参照フォルダーにこれらの3つのアセンブリがあり、それらを参照してアプリケーションをビルドできます。アプリケーションはビルドされますが、サーバーアプリケーション全体がインストールされていないため実行されませんが、これは問題ありません。
このカスタムアプリケーションをコピーして、参照しているすべてのアセンブリを実行するサーバーでは、次のようなフォルダーにあります。
小さな実行可能ファイルをそのフォルダーにコピーして実行すると、完全に機能しますが、.exeを必要に応じてより適切なフォルダーに配置すると、次のようになります。
それらのアセンブリを解決できないため、機能しません。
app.configでプロービングを使用して、exeが参照を検索する必要があるフォルダーを指定できることはわかっていますが、アセンブリがサブフォルダーになく、完全に異なる場所にある場合があります。
すべてのベンダーアセンブリをアプリフォルダーにコピーしたくありません。参照している3つのベンダーアセンブリだけを配置することはできません。これは、他のアセンブリもロードしているためです。すべて(多くの...)がない限り、そうではありません。仕事。
私は特別なことは何もしていません。アプリドメインを作成したり、リフレクションを介してアセンブリを読み込んだりしていません。アプリケーションの開始時または実行時に必要な参照をCLRに解決させたいだけです。
ありがとう。
編集:ここで最終的な作業コード
.net - .NET 2.0 RTM のみが存在する場合、ランタイムは .NET 2.0 SP1 アセンブリへの呼び出しをどのように解決しますか?
.NET 2.0 SP1 がインストールされたマシン上で、.NET 2.0 に対してアプリケーションを構築しました。アプリケーションは、.NET SP1 に含まれるいくつかの標準 .NET アセンブリ (つまりSystem.Xml.dll
) を参照します。
このアプリケーションを .net 2.0 RTM を搭載したコンピューターで実行すると、アプリケーションは正常に動作し、System.Xml.dll
アセンブリも使用します。しかし、2.0 RTM には存在しないが 2.0 SP1 には存在するメソッドを使用しようとすると、アプリケーションはMethodNotFoundExceptionをスローします。
私の質問は次のとおりです。ランタイムは System.Xml.dll をどのように解決しますか?
アセンブリのバージョンはリビジョン番号が異なります (ただし、メジャー、マイナー、およびビルド パーツは同じです)。つまり、2.0 RTM アセンブリと 2.0 SP1 アセンブリは、アセンブリ バインディング プロセスに関して異なります。ランタイムは System.Xml.dll を見つけようとします2.0.50727.1378
が、しか見つかりません2.0.50727.42
。その後、アセンブリ バインド プロセスは失敗するはずです。これは、Machine.config にパブリッシャ ポリシーまたはリダイレクトが存在しないためです。しかし、バインドは正常に機能します。どうしてですか?
上記の問題に続くもう1つの質問。
すべてのクライアントに、コンピュータに .NET 2.0 SP1 をインストールするよう強制することはできません。.NET 2.0 SP1 から System.Xml.dll を出荷する場合、アプリケーションに付属の System.Xml.dll を使用させるにはどうすればよいでしょうか。
更新 1: System.Xml.dll のバージョンは 2.0.50727.x ではなく 2.0.0.0 のようです。これは、ランタイムが問題を正常に解決する理由を説明しています。ただし、2 番目の質問は依然として当てはまります。SP1 から System.Xml.dll をアプリケーションと共に出荷し、アプリケーションでそれを使用するように強制することはできますか?