web-dev-qa-db-ja.com

regtlibv12はどうなりましたか?

Visual Studio 11/2012 ProfessionalがインストールされたパーティションにWindows 8のクリーンインストールを行っていますが、regtlibv12.exe内にC:\Windows\Microsoft.NET\Framework\v4.0.30319が見つかりません。

以下は、.Net 4.0(およびregtlibv12)を使用したWindows 7パーティションのスクリーンショットです。

Windows 7 - .Net 4

以下は、.Net 4.5(およびregtlibv12なし)を搭載したWindows 8です。

Windows 8 - .Net 4.5

regtlibv12は.Netフレームワークの一部ではなくなりましたか? .Net 4.0もインストールする必要がありますか? 4.5の上に.Net 4.0をインストールするとどうなりますか?どちらもハードドライブの同じ場所に移動し、4.5は4.0を効果的に上書きします。Windows8では4.5がデフォルトでデフォルトでインストールされます。4.0をインストールしてから、4.5を再インストールしてregtlibv12戻る?

ありがとう

30
JMK

フレームワークの一部ではありませんでした。そして、それは完全に文書化されていません。しかし、それは非常に一貫したうわさがあります。多くのプログラマーがv2.0.50727またはv4.0.30319ディレクトリでそれを見つけ、それが登録の問題を解決できることを理解しました。フォーラムの投稿の多くはそれについて言及しています。

これらのフォルダーに表示される正確な方法は、リバースエンジニアリングするのが困難です。私が見た唯一のパターンは、フレームワークを自分でインストールしたときに存在するということです。また、フレームワークがマシンにプリインストールされている場合は存在しません。やや理にかなっていますが、フレームワークディレクトリには、登録が必要な.tlbファイルがいくつかあります。これらには、クライアントコードが依存する可能性のある.NET [ComVisible]型の型情報が含まれています。タイプライブラリが登録される通常の方法は、通常のCOMサーバーに埋め込まれていないため、これらの.tlbファイルには適用されません。登録情報が通常のWindowsセットアップにロールアップされるため、.NETのプリインストールされたバージョンではツールは不要であるとさらに推測します。

ツールに依存するようになった場合、別のマシンから.exeをコピーする以上のことはできません。または、もう一方の端から使用する必要がある理由に対処して、もう必要ないようにします。

  • regasm.exeで/ tlbオプションを使用し忘れた場合の回避策です。クライアントコードが別のスレッドからCOMインターフェイスを使用しようとすると、実行時にTYPE_E_CANTLOADLIBRARYエラーが発生する可能性があります。タイプライブラリは、標準のマーシャラーがメソッドの引数をマーシャリングするために必要なタイプ情報を提供します。/tlbオプションを使用して修正してください。

  • これは、COMサーバーを[プロジェクト+参照の追加]の[COM]タブに表示するための回避策です。そのタブには、登録されているタイプライブラリが一覧表示されます。ただし、ビルドサーバー以外では適切な回避策ではありません。コードはコンパイルできますが、登録が完了していないため実行できません。これを行う適切な方法は、作成者が提供するインストーラーを使用するか、ピンチでRegsvr32.exeを使用して、タイプライブラリとCLSIDキーの両方を登録することです。

  • タイプライブラリを登録しないCOMサーバーの回避策です。上記と同様ですが、タイプライブラリの登録はオプションであり、通常、サーバーを実行するマシンではなく、開発マシンでのみ必要です。タイプライブラリを使用できるほとんどのツールには、TypeLibレジストリキーに依存するのではなく、タイプライブラリを明示的に追加する方法があります。 Visual Studio IDEの場合も同様です。代わりに[参照]タブを使用して、.tlbファイルを直接選択できます。

38
Hans Passant