Ich versuche, in COM-Interop SoCOM Interop, DllImport gegen das Hinzufügen eines Verweises
zu bekommen, gibt es ein einfaches Beispiel:
SpeechLib.SpVoice voice = new SpVoice();
voice.Speak("Hello sucker!",SpeechVoiceSpeakFlags.SVSFDefault);
Natürlich habe ich Bezug auf% windir hinzufügen % \ system32 \ speech \ common \ sapi.dll vorher, und VS fügt Interop.SpeechLib.dll dem Projektordner hinzu, und jetzt muss ich diese 200kb-Bibliothek mit meiner einfachen 4kb-Anwendung verteilen.
Kann ich [DllImport] anstelle eines Verweises verwenden, da die Sprachbibliothek in den meisten Fällen bereits auf dem Computer eines Clients angezeigt wird?
Können Sie mir zeigen, wie Sie den obigen Code mithilfe der DllImport-Technik neu schreiben?
wird nicht funktionieren - die verwalteten Code beruht auf der Interop. – sharptooth
Dies funktioniert, aber anstatt 'Copy Local' auf' false' zu setzen, setzen Sie 'Embed Interop Types' auf 'true' und die von Ihnen verwendeten Typen werden Teil der Assembly, in diesem Fall wird' Copy Local' zu 'false' und kann nicht geändert werden. – nurchi