ich die in dieser Frage beschriebenen Schritte befolgt haben:Kann laden .NET nicht von Ruby dll
Und so, ich habe diese C# -Code:
using System;
using System.IO;
namespace ComLib
{
public class LogWriter
{
public void WriteLine(string line)
{
using (var log = new StreamWriter(File.OpenWrite(@"c:\log.file")))
{
log.WriteLine(line);
}
}
}
}
Unter einer Lösung genannt: den folgenden ruby-Code RubyToCSharp
überprüfte ich die Register for COM interop
in VS und erstellt:
require "win32ole"
lib = WIN32OLE.new('RubyToCSharp.ComLib.LogWriter')
lib.WriteLine('calling .net from ruby via COM, hooray!')
Und jetzt habe ich versucht, diesen Rubin von Powershell zu laufen und ich erhalte immer diese Fehlermeldung:
./exmpl.rb:4:in `initialize': unknown OLE server: `RubyToCSharp.ComLib.LogWriter' (WIN32OLERuntimeError)
HRESULT error code:0x800401f3
Invalid class string
from ./exmpl.rb:4:in `new'
from ./exmpl.rb:4:in `<main>'
Irgendwelche Gedanken auf, was ich hier bin verpasst?
EDIT
Nach der Überprüfung, ob meine dll-Register war this SO question nach, Es scheint, dass in der Tat ist meine dll registriert, aber immer noch, geschieht der gleiche Fehler.
wirklich verwirrt hier ...
Danke für die Antwort Joe, Paar der Dinge: 1) [Assembly: ComVisible (false)] könnte in der Datei AssemblyInfo.cs und werden alle Klassen com sichtbar (ich habe dies konfiguriert) bei meinem Projekt. 2) Ich muss verstehen, wenn es über VS15 registriert ist, bedeutet dies, dass diese DLL über das gesamte Betriebssystem verfügbar ist? oder ist es nur im VS15 dir "lebendig"? – Itzik984
Die Einträge in der Registrierung, die für COM erforderlich sind, werden im gesamten Betriebssystem vorausgesetzt, dass Sie VS als einen erhöhten Administrator ausführen. Ein schneller Trick zu testen, ob es funktioniert, ist ein VBS-Skript zu schreiben: 'Dim obj' ' set obj = Create ("ComLIb.LogWriter") '' MsgBox Type-Name (obj) ' Haben sie Probleme beim ... Run es über c: \ windows \ system32 \ wscript.exe und über c: \ windows \ SysWow64 \ wscript.exe standardmäßig sollte es mit dem in der SysWow64 Verzeichnis erfolgreich . Dieser wird Ihnen sagen, ob er korrekt registriert wurde. –
Ok, danke nochmal ... Habe immer noch keine Ahnung, was hier schief läuft. scheint, dass ich alles so mache, wie ich sollte. – Itzik984