

ある.NetFramework4.0向けの Visual Studio のソリューションを  
IDE上から実行しようとしたところ、

[code]

    アセンブリ "XXX.dll" を登録できません - アクセスが拒否されました。管理者としてアプリケーションを実行しているか確認してください。レジストリ キー 'HKEY_CLASSES_ROOT\XXX.XXXDef' へのアクセスが拒否されました
    
[/code]

という、メッセージが出力され、ビルドに失敗しました(ビルドそのものは成功していて、COM登録に失敗したようですが)

このソリューションは  
プロジェクト1(実行ファイル.exe)  
プロジェクト2(関数集.dll)  
という構成になっていて、  
プロジェクト1がプロジェクト2を参照しています  
管理者権限でVisualStudioを実行すればエラーは発生せずに実行できるし、他のマシンに  
exeとdllをコピーすれば、Regsvr32でdllをわざわざ登録しなくても動作します

質問なのですがそもそも．NetFramework用のライブラリをCOM登録する意味はあるのでしょうか


CC BY-SA 3.0
2017-01-13T01:45:23.673
31805
2017-01-13T04:31:47.883
15047
question
c# visual-studio com
.NETFrameworkのCOM登録について


プロジェクト2(関数集.dll) のプロジェクトの設定で「アセンブリを COM 参照可能にする」にチェックがついてたりしませんか？

※今手元でVisualStudioを起動出来ないので具体的な場所までは提示できません。すみません


CC BY-SA 3.0
2017-01-13T02:09:27.750
31806
2017-01-13T02:09:27.750
7343
31805
answer


[.NETアセンブリ―をCOMオブジェクトとしてシミュレートさせる](https://msdn.microsoft.com/ja-
jp/library/f07c8z1c.aspx)ことで、.NET
Framework以外で動作するCOMオブジェクトを参照可能な環境(例えばVBA)から.NETで実装したオブジェクトを使用することが可能になります。

またCOM相互運用の可否はプロジェクトのプロパティページの「ビルド」タブにある「COM相互運用機能の登録」で設定できます。


CC BY-SA 3.0
2017-01-13T04:31:47.883
31810
2017-01-13T04:31:47.883
5750
31805
answer