web-dev-qa-db-ja.com

Visual Studio 2010-TYPE_E_REGISTRYACCESS

VS2010ソリューションを構築していますが、出力ウィンドウに1つのプロジェクトだけでエラーが発生します。

エラータブ:

Error   161 Cannot register type library "D:\Sites\Website\MyPortal.Website.Controllers\bin\Debug\MyPortal.Website.Controllers.tlb". Error accessing the OLE registry. (Exception from HRESULT: 0x8002801C (TYPE_E_REGISTRYACCESS)) MyPortal.Website.Controllers

出力タブ:

Compile complete -- 0 errors, 153 warnings
  MyPortal.Website.Controllers -> D:\Sites\Website\MyPortal.Website.Controllers\bin\Debug\MyPortal.Website.Controllers.dll
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(3341,9): warning MSB3214: "D:\Sites\Website\MyPortal.Website.Controllers\bin\Debug\MyPortal.Website.Controllers.dll" does not contain any types that can be registered for COM Interop.
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(3341,9): error MSB3213: Cannot register type library "D:\Sites\Website\MyPortal.Website.Controllers\bin\Debug\MyPortal.Website.Controllers.tlb". Error accessing the OLE registry. (Exception from HRESULT: 0x8002801C (TYPE_E_REGISTRYACCESS))
========== Rebuild All: 8 succeeded, 1 failed, 0 skipped ==========

何か案は?

17
Junior M

誰かがcsprojのプロパティを変更したことがわかりました。

エラーを解決するには:

  • プロジェクトを右クリックするだけです。
  • 選択ビルドタブ
  • 出力セクションに移動します
  • チェックを外すCOM相互運用機能に登録
24
Junior M

Register For Com interopを設定する場合、管理者として実行する必要があることがわかりました。

管理者がコンパイルしようとしないと、次のようなエラーが発生しました。

アセンブリ "C:\ TFS\Project\Src\ProjectAddin\bin\Debug\ProjectAddin.dll"を登録できません-アクセスが拒否されました。アプリケーションを管理者として実行していることを確認してください。レジストリキー 'HKEY_CLASSES_ROOT\CLSID {3A6192EA-3C9C-39EB-99A3-3DBFF8CA118F}'へのアクセスが拒否されました。

上記のレジストリキーが存在しなかったので、作成してからコンパイルしようとすると、次のようになります。

タイプライブラリ "C:\ TFS\Project\Src\ProjectAddin\bin\Debug\ProjectAddin.tlb"を登録できません。 OLEレジストリへのアクセス中にエラーが発生しました。(HRESULTからの例外:0x8002801C(TYPE_E_REGISTRYACCESS))

解決

COM相互運用機能の登録をオフにすると、エラーはなくなります。

Shiftキーを押しながらVisualStudioを右クリックし、管理者として開き、プロジェクトを開きます。 Com相互運用機能の登録にチェックマークを付けると、正常にコンパイルされます。

33
Jeremy Thompson

私にとって、この問題は、Win7x64マシンに移行したときに始まりました。 x64を持たない他のチームメンバーがいるので、これが問題だと思います。 COM相互運用機能が必要なので、オフにすることはできません。 COM相互運用機能の登録(プロジェクトのプロパティ>ビルドページ)のチェックを外し、ビルド後のイベントを追加してCOM登録を行うことで、問題を解決できました。

"%Windir%\Microsoft.NET\Framework\v2.0.50727\regasm" /codebase "$(TargetPath)"
10
Rory

プロジェクトでCOM相互運用機能の登録設定を有効にしているため、ビルド時に同じことが実行されます。この設定には、管理者としてVisual Studioを明示的に起動しない限り、VisualStudioでは使用できない管理者権限が必要です。

次のリンクで利用可能な手順に従って、管理者としてVisual Studioを起動し、プロジェクトのビルドを再試行できます-

デフォルトで管理者としてVisual Studioを実行する方法

3
SoftEngi