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 ==========
何か案は?
誰かがcsprojのプロパティを変更したことがわかりました。
エラーを解決するには:
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相互運用機能の登録にチェックマークを付けると、正常にコンパイルされます。
私にとって、この問題は、Win7x64マシンに移行したときに始まりました。 x64を持たない他のチームメンバーがいるので、これが問題だと思います。 COM相互運用機能が必要なので、オフにすることはできません。 COM相互運用機能の登録(プロジェクトのプロパティ>ビルドページ)のチェックを外し、ビルド後のイベントを追加してCOM登録を行うことで、問題を解決できました。
"%Windir%\Microsoft.NET\Framework\v2.0.50727\regasm" /codebase "$(TargetPath)"
プロジェクトでCOM相互運用機能の登録設定を有効にしているため、ビルド時に同じことが実行されます。この設定には、管理者としてVisual Studioを明示的に起動しない限り、VisualStudioでは使用できない管理者権限が必要です。
次のリンクで利用可能な手順に従って、管理者としてVisual Studioを起動し、プロジェクトのビルドを再試行できます-