加载时SideBySide免注册COM失败
我正在尝试创建一个没有COM注册的Delphi应用程序使用的C#COM服务器。
该过程在ms博客上进行了描述- 基于.NET的组件的免注册激活:演练
我创建了必需的清单文件,并将它们链接到程序集。
App Manifest:
和程序集清单:
那些工作正常(我认为)。 sxs不会报告任何错误。 clsid对于com-class也是正确的。 但是在启动应用程序时,它会因为exception0x8013101b而崩溃。
删除清单并在未找到类的exception中运行诅咒的应用结果。 让com-class注册的应用程序开始正常,没有任何错误。
例外可能会说“错误的框架版本”。
我试图在类清单中指定运行时。 但这并没有解决问题。
什么导致例外?
我该如何解决这个问题?
解决了。
程序Fuslogvw.exe给了我正确的方向。 此工具显示assembly的装载过程。
要启用它,您需要创建一个注册表项。
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion dword ForceLog = 1
生成的报告显示了这个(对不起德国框架):
LOG: DisplayName = vorg.wpfclient, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (Fully-specified) === LOG: Diese Bindung startet im default-Load-Kontext. LOG: Der Assembly-Download wurde durchgeführt. Datei-Setup wird begonnen: E:\work\VOrg\bin\vorg.wpfclient.dll. LOG: Die von der Quelle ausgeführte Setup-Phase beginnt. LOG: Der Assemblyname ist: Vorg.WpfClient, Version=1.0.0.0, Culture=neutral, PublicKeyToken=174d633867192b66. WRN: Der Vergleich des Assemblynamens führte zum Konflikt: PUBLIC KEY TOKEN. ERR: Der Assemblyverweis entsprach nicht der gefundenen Assemblydefinition. ERR: Das Setup der Assembly konnte nicht abgeschlossen werden (hr = 0x80131040). Die Suche wurde beendet.
我没有在清单中指定公钥令牌。 现在我做! 来自microsoft的清单的模式文件是错误的! 它将版本和其他一些属性显示为可选。
我还在com清单中指定了运行时。 也可以通过app.config文件指定框架版本。
- 免费注册COM / .Net互操作
- 进程内并行执行