6

.NET DLL の場所がおかしいことに気付きました。System.ServiceModel.dll の問題をデバッグしようとしていたところ、.NET 4.0 がインストールされていても、ServiceModel DLL の 3.0 バージョンのみが GAC にインストールされていることに気付きました (C:\Windows を調べて確認しました)。 \組み立て)。ただし、「C:\Program Files\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\Profile\Client」に移動すると、4.0 バージョンがすぐそこにあります。では、.NET が 4.0 バージョンを GAC にインストールしないのはなぜでしょうか?

そうでないことを考えると、私の 4.0 プログラムはどうやって 4.0 DLL の場所を知るのでしょうか? 上記で指定したファイル パスは自動的にプローブされますか? 4.0 DLL を使用するアプリを振り返って、DLL をローカルにコピーしていないことを確認したため、GAC から取得する必要があるようです (DLL が存在しないことがわかりました)。 .NETFramework フォルダー。これは私を本当に混乱させてきました...

編集: MystereMan のアドバイスに従い、"Gacutil.exe /l System.ServiceModel" を実行しましたが、まだ 3.0 バージョンしか表示されません。結局、.NET 4 は DLL を GAC にインストールしなかったということですか?

編集 #2 と解決策: 私の PATH にある gacutil.exe は、4.0 アセンブリを表示できない古いバージョンです。コンピューターを検索すると、gacutil.exe の 4.0 バージョンが C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools に見つかりました。それを使用して、ようやく System.ServiceModel.dll の 4.0 がリストされていることがわかりました。助けてくれてありがとう!

ありがとう、

-ロバート

4

1 に答える 1

3

.Net 4.0 では、別の GAC を使用しWindows\Microsoft.Net\assemblyます。

のファイルReference Assembliesは空のスタブであり、さまざまなターゲット フレームワークの Visual Studio で IntelliSense をフィルター処理するためにのみ使用されます。
これらを ILSpy で開くと、すべてのメソッドが空であることがわかります。

于 2012-06-01T22:00:01.403 に答える