一部のプログラムをあるサーバーから別のサーバーに移行する必要があります。その過程で、.dll が見つからないことがわかりました。元のサーバーでそれを追跡しました。それは、ファイル システム (ストレージ ディレクトリのように見え、何にもリンクされていない) と GAC の両方にありました。ストレージ ディレクトリから新しいサーバーに .dll を取得し、GACUtil を使用してインストールしようとしましたが、次のメッセージで失敗しました。
Failure adding assembly to cache: Attempt to install an assembly without a strong name
以前のサーバーに正常にインストールされていることは明らかなので、これは奇妙に思えます (2 つの .dll のバージョン番号は同じです)。ただし、この .dll のソース コードを持っていないため、GAC のバージョンが厳密な名前で再コンパイルされ、「ストレージ」のバージョンが更新されていない可能性があります。
考えられる回避策の 1 つは、.dll を手動でインストールすることです。C:\Windows\Microsoft .NET\assembly\ には .NET 4.0 で分離された GAC ディレクトリ構造があり、同じ public を使用して GAC_MSIL\[.dllname]\v###__[PublicKey]\ フォルダーを作成できます。キーを古いサーバーの GAC 実装として使用し、そこに .dll ファイルを配置します。ただし、.dll は間違いなく .NET 4.0 (または .NET 3.5 でさえ、私は思いません) でコンパイルされていません。または、それを機能させるにはどのような変更を加える必要がありますか?
ディレクトリ構造が公開されていないため、WindowsエクスプローラーGUIを備えた「古い」GACに何かを手動でインストールする方法がわかりません。この回答(https://stackoverflow.com/a/382318/1675729)は、手動インストールの同様の方法を試みることができる基本的な構造があることを示しているようです-これが機能する場合、誰かが私にいくつかの詳細情報を提供できますかその構造にアクセスする方法について?
もちろん、弱い名前の .dll を GAC にインストールする方法があれば、それが理想的です。この .dll は、特定の目的 (および名前) を持ち、1 つのプログラムによってのみ使用されるため、.dll 地獄の問題を引き起こすことはありません。ただし、これを行う方法はわかりません。また、GAC の目的とは完全に相反するように思われるため、情報が不足していても不思議ではありません。
私はありとあらゆる提案にオープンであり、喜んで私ができる情報をさらに提供します - ここで注意すべき重要なことはわかりません.
どうもありがとう!