問題タブ [global-assembly-cache]
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.
exception - System.IO.FileLoadException. アクセシビリティを読み込めませんでした。バージョン = 2.0.0.0
最近この問題が発生しましたが、マシンにインストールしたものが原因である可能性があります。思い出せないけど。ときどき、Microsoft .NET Framework のメッセージ ボックスがコンピュータに表示され、次のように表示されます。
「アプリケーションのコンポーネントで未処理の例外が発生しました。[続行] をクリックすると、アプリケーションはこのエラーを無視して続行を試みます。
ファイルまたはアセンブリ 'Accessibility, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' またはその依存関係の 1 つを読み込めませんでした。指定されたアセンブリ名またはコードベース"
.net 4.0 フレームワークを再インストールしてみました。それを再インストールするための.net 2.0フレームワークのダウンロードが見つかりません。gacutil /uf アクセシビリティを使用してその dll を強制的にアンインストールしようとしましたが、うまくいきません。また、アクセシビリティ dll がインストールされている場所を確認し、それを他のマシンと比較しましたが、global.config と web.config を含むすべてが同じです。
この例外は、マシン上の 1 つのプロセスだけで発生するわけではありません。これは私の GAC の問題であるため、このアセンブリを使用するすべてのアプリケーションで同じ例外がスローされます。
Fusion でバインディング ロギングをオンにすると、詳細から次のことがわかります。
どんな助けでも大歓迎です。
msvcrt - Vista (SP2) 64 ビットの場合: C/C++ ランタイム (CRT) アセンブリ キャッシュがアプリに表示されないのはなぜですか?
VC++ および Windows のエキスパートの皆様、こんにちは。;)
まず、私のバックグラウンド: Vstudio、C & C++、Windows。あらゆる種類の可能性、フォーラム、修正、さらには O/S プラットフォームの変更を 5 日間試した後、ここに投稿する (またはウィンドウから飛び出す!) ことにしました。私の実際の開発作業を保持 !! . :)
Soo.. シナリオ: 問題が発生している開発マシン: OS: SP2 を適用した Windows Vista 64 ビット (ただし、VMWare を使用して実行している 32 ビット XP SP2 仮想マシンで同じ問題が発生しています。開発 IDE: SP1 を適用した Visual Studio 2008出力 Binary type: .DLL (開発用のプラグインになる運命です。IDE は RealStudio と呼ばれます)
問題/問題: VStudio 2008 を使用して 32 ビット C++ DLL を開発しています。これには、ASDCP (オーディオ/ビデオ コーデック処理に使用される) と呼ばれる中規模から大規模な C++ ライブラリが含まれます。 Win32、Linux、MacOS などでビルドするためのビルトイン サポート。
現在、ASDCP ライブラリは C++ 標準ライブラリ (MSVCP90.dll および .lib ファイルに格納されています) を利用しています。そのため、独自のプラグイン (DLL) を作成し、ASCP ライブラリを使用せずに呼び出し元アプリ (RealStudio、別の開発 IDE と呼ばれる) を許可すると (したがって、C++ 標準ライブラリがリンクされる必要はありません)、正常に動作します。 . しかし、ASDCP ライブラリからコードを追加し、C++ ランタイム ライブラリの STATIC Link(/MT) を選択してから、プラグインをロードして RealStudio を実行すると、メモリ リークが発生し、おそらく「アクセス違反」が発生します。おそらく、さまざまな DLL 間の不一致が原因です。
さて、この投稿に対する私の質問は、VStudio 2008 で CRT を動的にリンクしてから、RealStudio を実行してプラグインを読み込もうとすると、Microsoft.CRT の Side-by-Size ASSEMBLY CACHE を見つけることができないということです。 .VC90!! すべてのマニフェスト ファイルを操作し、マニフェスト ファイルを DLL に埋め込み、WinSxs アセンブリ キャッシュ内の CRT のバージョンを (約 10 回!) チェックし、マニフェスト ファイル/依存関係のニーズに対応しました。
しかしどういうわけか... RealStudio (RunAs Admiistrator) が CRT 9 DLL (特に MSVCP90.dll) をロードできません。私は MSDN や他のフォーラムで約 15 時間を費やして、同様の問題や解決策を検討し、Microsoft のフォーラム モデレーターが推奨する解決策を実装しました。しかし、役に立たない。
では、関連する CRT 依存関係の Assembl キャッシュを「参照」してロードするために、64-Windows (Vista SP2) で実行される 32 ビット C++ DLL をどのように取得しますか??????
ヘルプ!?!?!お願いします..
私が再び正気になるのを助けてくれて、前もって深く感謝します!
ディネシュ
gac - Pascalスクリプト(InnoSetup)を使用してGACに登録できますか?
InnoSetupを使用して、作成したアプリケーションをインストールしています。私のクライアントは、このInnoSetupアドオンを使用して、インストール時に最新のDLLをダウンロードするように要求しています。
http://www.sherlocksoftware.org/page.php?id=50
十分に単純です。思い通りに動作しましたが、[ファイル]セクションがないと(スクリプトに組み込むのではなくダウンロードするため)、ダウンロードしたDLLをGACに登録する方法がわかりません。[ファイル]セクションで、フラグgacinstallを使用していました。
[ファイル]を使用しなくなったので、Pascalスクリプトを使用してDLLをGACにインストールする方法があるかどうか疑問に思いました。
これが私のセットアップスクリプトの関連部分です:
ご協力いただきありがとうございます。
asp.net - グローバル アセンブリ キャッシュ - コードベースの質問による展開
基本的に、さまざまなアプリ プールで多くの ASP.NET サイトを実行する多くのサーバーがあります。更新は 2 週間ごとに行われます。私の基本的な質問は次のとおりです。
独立したサーバー上でクラス ライブラリの最新バージョンを管理している URL で GAC コードベース機能を使用することは、これらすべてのサーバー上のすべてのサイトを簡単に更新するための良い方法ですか?
これで発生する可能性のある一般的な落とし穴や潜在的な問題はありますか?
ダウンロード キャッシュはユーザー単位で使用されると読みました。この場合、サーバー上のすべてのサイトは、単に ASP.NET ユーザー ダウンロード キャッシュ内のバージョンを使用するのでしょうか?
更新はサイトの開始時にのみ行われますか? 1 つのサイトが再起動され、他のすべてのサイトがダウンロード キャッシュ内のバージョンを使用している場合はどうなりますか?
この方法で .aspx/.js/.css/.ascx ファイルも管理する方法はありますか?
wix - アンインストール時に孤立したWiX条件付き機能/コンポーネント
編集:以下のコメントの1つで問題をよりよく要約したので、自分自身を引用します…</ p>
パッケージがインストールされているときは真であるが、削除されているときは真ではないという条件があります。MSIは、条件付きコンポーネントをインストールし、アンインストールで削除したことを覚えていると思っていましたが、そうではありません。私は、A)この孤立したコンポーネントをクリーンアップする適切な方法、およびB)将来この問題から保護するための最良の方法を見つけようとしています。
私の質問は要約すると、製品がアンインストールされた後に孤立した機能/コンポーネントを削除するだけで安全ですか?そして、もしあれば、私が孤立していると信じているコンポーネントをまだ参照しているものをチェックする方法はありますか?そして、将来これが起こらないようにインストーラーを修正するにはどうすればよいですか?
ライブラリFooをインストールするためのwixプロジェクトがあります。このインストーラーは、デフォルトでFoo.dllのコピーをGACとフォルダーに配置Program Files\Reference Assemblies\Foo\<version>
します。インストーラーは2つのレジストリキーも追加します。1つは将来のインストールで再利用するためにFooフォルダーのパスを格納するカスタムキーで、もう1つはインストール<version>
されたライブラリの検索に完全なフォルダーパスを含めるようにVisual Studioに指示し、Fooがに表示されるようにします。 「参照の追加」ダイアログ。Fooライブラリの複数のバージョンを一度にマシンにインストールできます。各バージョンはFooの<version>
下の適切なフォルダにあります。
Foo 2.0.0にはテストをすり抜けたバグがあり、Foo 2.0.1にはバグ修正が含まれており、他の変更はありませんでした。バグ修正が唯一の変更であったため、GACにポリシーファイルを追加して、Foo2.0.0の参照をFoo2.0.1にリダイレクトすることが決定されました。このポリシーファイルは、新機能内の新しいコンポーネントとしてインストーラーに追加されました。Foo2.0.1がインストールされたときにFoo2.0.0を検出して削除するために、アップグレードタグが追加されました。ポリシー機能のインストールは、Foo2.0.0が検出されることを条件として行われました。すべてが機能しているようで、Foo2.0.1がプッシュされました。
1年後、今度はライブラリコードではなく、インストーラーのセットアップでバグに気付かなかったことがわかりました。Foo 2.0.1が2.0.0を置き換えてからアンインストールすると、ポリシーファイルは孤立し、GACに残りますが、他のすべてのファイルとキーは削除されます。私はこれをWindowsのクリーンインストールでテストし(仮想マシンは非常に便利な場合があります)、問題を再現できることを確認しました。つまり、コンポーネントへの追加の参照が侵入して、コンポーネントが遅れないことを確認しました。
これはすべて元々WiX3.0で行われていましたが、最近WiX3.5の使用に移行しました。WiXコードは次のようになります。
.net - GAC管理用のツールはありますか?
グローバル アセンブリ キャッシュでアセンブリを表示、追加、削除するための GUI はありますか?
.net - グローバルアセンブリキャッシュの参照
Oracleデータベースと通信するためにNHibernateを使用する必要があるプロジェクトがあります。
私の職場の多くのプロジェクトはNHibernateを使用しているため、NHibernateアセンブリはグローバルアセンブリキャッシュに配置されました。これは私が完全には理解していないツールです。私の調査から、私は以下を集めました:
- グローバルアセンブリキャッシュは、多くのプロジェクトによって参照されるdllの中央リポジトリです。これにより、DLL地獄の問題が回避されます。dllの新しいバージョンがリリースされると、キャッシュ内で1回更新され、それを参照するすべての.NETプロジェクトが新しいバージョンを使用するようになります。
- アセンブリキャッシュにアセンブリへの参照を追加することはできません。「GACに登録されているアセンブリは、[参照の追加]リストに表示されません」。ただし、レジストリを切断することで、強制的に表示させることができます。
- アセンブリキャッシュにアセンブリへの参照を簡単に追加できます。「[参照の追加]ウィンドウを使用して、GACにインストールしたアセンブリへの参照を追加するだけです」。([参照の追加]ウィンドウにGACアセンブリが表示されないため、これを信じない傾向があります)。
- 私の職場のいくつかのプロジェクトには、GACの多くのアセンブリへの参照があります。これらのアセンブリは[参照の追加]メニューに表示されないため、前任者がレジストリマングリング手法を使用していなかったことを私は知っています。それでも、それらは明らかにGACに由来します-それらのファイルパスはC:\ Windows\assemblyのサブディレクトリです。
ポイント2は明らかに他の3つと矛盾しますが、それが単に誤りであれば、ライブラリを参照するのに問題はありません。私のGACアセンブリが[参照の追加]ウィンドウのどこにも見つからないという現実を確実に反映しています。
私は2つのことを知りたいです:
- 開発者はいつGACを使いたいと思うでしょうか?レジストリのトリックなしでは参照できないライブラリは何が良いのでしょうか?
- レジストリに触れることなく、前任者がGACのライブラリを参照するためにどのような手順を実行しましたか?
gac - 特定のアセンブリが GAC に登録されているアプリケーションを特定する方法は?
gacutil.exe を使用して特定のアセンブリ (この場合は log4net.dll ですが、同様のケースにも当てはまるはずです) を削除しようとすると、アプリケーションで必要なアセンブリが原因でアクションが失敗します。ただし、実際に必要なアプリケーションを特定する方法がわかりません。出力は、要件が MSI データベース / Windows インストーラーに記録されていることを示しているように見えるため、一部のユーティリティは、MSI データベースに登録されているすべての GAC アセンブリを一覧表示できるように思われます (log4net でエントリを検索することもできます)。 .dll) または、特定の GAC アセンブリを指定できるようにすると、依存関係が一覧表示されます (理想的には、関連する依存関係チェーンが存在する場合:)
ありがとう!
c# - GAC に新しいアセンブリを登録した後、Visual Studio で dll が見つかりません
Visual Studio コマンド プロンプトで次のコマンドを実行して、いくつかのアセンブリをグローバル アセンブリ キャッシュに登録しました。
その後、DLLが見つからないため、Visual Studioで何もコンパイルできません。Silverlight プロジェクトをコンパイルしようとすると、次のようなエラー メッセージが表示されます。 . "
すべての参照を更新しましたが、テキスト エディターにエラーは表示されません。
誰か助けてくれませんか?
更新: .NET Framework のインストールを修復しましたが、問題は引き続き発生します