Regasm-und Com-Interop-false negatives

Ich bin versucht zu, dass unsere Bibliothek über COM, aber scheinen zu kämpfen, die Werkzeuge, die mehr als das eigentliche problem. Unabhängig davon, wie Schreibe ich meine COM-ausgesetzt-Klasse bekomme ich die Warnung: "XXX.dll enthält keine Arten, die registriert werden können, die für COM-interop" (das markierte Projekt für COM-interop Registrieren in den Projekt-Eigenschaften). Auch die einfache Klasse unten (als einzige Klasse in einer assembly signiert ist und markiert mit ComVisible(false)) immer noch die Warnung weiterhin besteht:

  [Guid("77699130-7D58-4d29-BE18-385871B000D1")]
  [ComVisible(true)]
  public interface IExample
  {
    string GetText();
    void SetText(string text);
  }

  [Guid("F91E5EE1-D220-43b5-90D1-A48E81C478B7")]
  [ComVisible(true)]
  public class Example : IExample
  {
    private string m_text = "default text";

    public string GetText()
    {
      return m_text;
    }

    public void SetText(string text)
    {
      m_text = text;
    }
  }

Habe ich versucht zu laufen regasm von der Befehlszeile aus auf die Ausgabe, die gerne Staaten "Arten erfolgreich registriert". Allerdings, ausgeführt mit der Option /verbose wechseln keine zusätzlichen Informationen angezeigt werden (ich scheine zu erinnern, dass es Listen mit den Namen oder vielleicht nur die Zahl der registrierten Arten). Auch versucht mit regasm mit der Option /regfile Schalter generieren Sie ein regfile, die generiert diese:

[HKEY_CLASSES_ROOT\ComExample.Example]
@="ComExample.Example"

[HKEY_CLASSES_ROOT\ComExample.Example\CLSID]
@="{F91E5EE1-D220-43B5-90D1-A48E81C478B7}"

[HKEY_CLASSES_ROOT\CLSID\{F91E5EE1-D220-43B5-90D1-A48E81C478B7}]
@="ComExample.Example"

[HKEY_CLASSES_ROOT\CLSID\{F91E5EE1-D220-43B5-90D1-A48E81C478B7}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="ComExample.Example"
"Assembly"="COMInteropTesting, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8568e57f6b170d6c"
"RuntimeVersion"="v2.0.50727"

[HKEY_CLASSES_ROOT\CLSID\{F91E5EE1-D220-43B5-90D1-A48E81C478B7}\InprocServer32\1.0.0.0]
"Class"="ComExample.Example"
"Assembly"="COMInteropTesting, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8568e57f6b170d6c"
"RuntimeVersion"="v2.0.50727"

[HKEY_CLASSES_ROOT\CLSID\{F91E5EE1-D220-43B5-90D1-A48E81C478B7}\ProgId]
@="ComExample.Example"

[HKEY_CLASSES_ROOT\CLSID\{F91E5EE1-D220-43B5-90D1-A48E81C478B7}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

Ich bin kein COM-Assistenten, der jede Maßnahme, die Eintragung aber sieht gültig für mich. Aber nichts scheint in der Registrierung angezeigt, beim ausführen von regasm auf die Montage.

Also meine Frage ist, ob ich etwas fehlt in meinem einfachen Beispiel, um die Registrierung der Arbeit, bin ich zu sehen, falsche Angaben und die Registrierung eigentlich richtig und wie kann ich besser bestimmen, wenn die COM-Registrierung funktioniert tatsächlich

BEARBEITEN:
Mit den änderungen vorgeschlagen, die von Kev ich konnte nicht umhin, die Warnungen von VS2008, aber ich konnte tatsächlich etwas registriert in der Registrierung mit regasm direkt (nichts in der registry aus der VS2008-integration).

Habe ich dann versucht zu entfernen, die einfach-Klasse, so hatte ich eine leer-Montage. Läuft regasm auf dieser meldete sich nicht jede Art von Warnungen, nur "Arten erfolgreich registriert". Sehe ich Warnungen wie "RegAsm : Warnung RA0000 : Keine Typen wurden registriert" beim ausführen von RegAsm auf einige meiner anderen Baugruppen, die fälschlicherweise als ausgesetzt COM. Was ist Los hier, kann ich darauf Vertrauen, nichts außer der Registrierung und dem, was über die on/off-Warnungen von regasm?

  • Welche version von Windows baut Ihr auf? XP, Vista, Win7? 32bit/64bit?
  • Ich bin auf XP (32 bit)
  • Leider ich don ' T haben eine Kopie von XP zu versuchen, diese auf :(. Ich kann das problem nicht reproduzieren Sie mit.
  • Danke, dass Sie so beharrlich, Kev. Eine Rück-Führung der KOM ausgesetzt Typen und ein Neustart geholfen, mit dem einfachen Beispiel. Kämpfen noch immer mit dem herausstellen der Arten für größere Baugruppen obwohl.
Schreibe einen Kommentar