加载时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互操作
  • 进程内并行执行