Visual Studio 2008 Verwenden SvcUtil.exe und wenn "Nein" gibt es irgendein Nachteil mit svcutil?
Nach ein wenig googeln es gibt keine definitive Antwort, ob Visual Studio 2008 verwendet svcutil.exe oder nicht? Visual Studio 2005 habe es, aber die RTM-Versionen von Visual Studio 2008 verwenden svcutil? Ein paar blogs sagen es nicht (und machen es scheinen, überraschend)
- SVCUtil & VS2008
- Äquivalent svcutil.exe Befehl für VS2008 Dienstverweis Hinzufügen
- SVCUtil Generieren WCF-client und das angegebene Feld Problem
und andere Seiten sagen es tut.
Den Grund ich Frage ist, dass wir die Verflachung unserer WCF-wsdl-mit einem benutzerdefinierten Endpunkt Verhalten-Erweiterung (eine Implementierung von IWsdlExportExtension/IEndpointBehavior) und mit der abgeflachten wsdl über Visual Studio 2008 Add-Referenz gibt uns Kompilierungsfehler, wie es ist das duplizieren von Typen/Klassen. Der Verweis Hinzugefügt wurde, ohne Fehler. SvcUtil, auf der anderen Seite, wirft die doppelte Klasse in einem separaten namespace, die behebt der build-Ausgabe.
So SvcUtil funktioniert, aber Visual Studio 2008 nicht auf einige unserer glätten wsdls. Wir sind gut mit continueing zu verwenden svcutil wenn das Add Service Reference in Visual Studio nicht funktioniert, aber Frage mich, ob jemand weiß, ob es irgendwelche Auswirkungen auf dies zu tun. Ich konnte keine Beweise dafür, dass wir "sollte nicht" mit svcutil, nur, dass es nicht so einfach, wie Sie mithilfe der Add Service Reference in Visual Studio 2008.
- Es ist ein Nachteil. Wenn Ihre WSDL-Zugang über HTTPS und das Zertifikat "ungültig" (abgelaufen oder generiert für einen anderen hostname - sagen Sie, auf einem cluster und Ihre admins haben einen schlechten job 🙂 VS, lassen wir Sie ignorieren das Problem und Fragen Sie, ob Sie fortfahren möchten, während svcutil.exe funktioniert nicht bei allen (außer den Hostnamen Problem kann umgangen werden durch tweaking svcutil.exe.config-Datei).
Du musst angemeldet sein, um einen Kommentar abzugeben.
svcutil und VS2008 schließlich rufen Sie in der gleichen bit der WCF-code. Ob es der tatsächliche exe oder Aufrufe in eine dll ist nur eine Kleinigkeit. Wenn überhaupt, dann bevorzuge ich die Kommandozeilen-tool, da es ermöglicht, mehr Flexibilität (oder vielleicht habe ich einfach die Kommandozeile mögen ;-p).
Beachten Sie, dass WCF wieder verwenden können bestehende Typen, die beide über die IDE und von der Befehl-Linie (/r?). Aber diese Art von namespace-Problem ist nur eines von vielen Dingen, die ich lieber über die Verwendung der Kommandozeilen-version.
Habe ich noch nie gesehen, dass irgendein Grund zu glauben, dass Visual Studio ruft svcutil.exe oder wsdl.exe. In beiden Fällen die Konsolen-Anwendungen und Visual Studio verwenden .NET Framework-code, um Ihre Arbeit zu tun.
Berücksichtigen, dass einige Fehler, die auftreten, während eine "Add Service Reference" - Befehl in der Visual Studio - "Fehler" - Fenster, und nicht in den Output-Fenster. Es ist notwendig, rufen Sie eine Visual Studio-API, um Meldungen in der Fehler-Fenster, die svcutil.exe nicht tun konnte.
Dies ist eine alte Frage, und es kam, als ich war auf der Suche nach etwas ähnliches, so werde ich erwähnen, was ich gefunden habe.
In diesem blog-post behauptet, dass VS2008 nicht svcutil für die Generierung des proxies. Ich Stimme ihm zu, als svcutil erscheint nicht im taskmanager Prozesse-Liste, wenn Sie einen Dienst hinzufügen Referenz. Sie produzieren auch eine deutlich andere Leistung - zum Beispiel svcutil nicht produzieren proxies, die bereit sind, für den Verbrauch in einer Silverlight-Anwendung, die Sie haben zu schneiden Sie einen angemessenen Betrag von Sachen, die aus Ihnen (wie Schnittstellen oder Objektreferenzen, die nicht verfügbar sind, in den Versammlungen, die silverlight verwenden kann*).
Immer noch, es ist nicht schwer zu schreiben, eine kleine app, die Anrufe svcutil zu tun, die harte Arbeit und dann eine sauber bis auf die generierten Dateien.
*es kann möglich sein, dieses Problem vermeiden, indem Sie angeben, eine andere framework-version, mit der
/targetClientVersion
- Schalter, aber ich habe nicht versucht, dass noch.Ich würde eher sagen, Visual Studio 2008 ist nicht mit svcutil.exe.
Naja, zumindest nicht direkt.
Ich verwendet habe, Process Monitor, um zu sehen, welche Anwendungen ausgeführt werden, auf meinem Rechner, während das hinzufügen eines neuen Dienstes Verweis auf mein Projekt und konnte nicht finden, "svcutil" im log.
Ich würde sagen, dass Visual Studio 2008 verwenden, svcutil zum generieren von proxy-code.
Als Beweis, einfach nur Visual Studio verwenden, um die Generierung von proxy-code aus, und öffnen Sie die Referenz.cs (vorausgesetzt, es war erzeugt in C#) - Datei ist, wird dieser header in der Datei:
Jetzt mit svcutil Befehlszeile, die zum generieren der proxy-code. Öffnen Sie die generierte Datei, und Sie werden sehen, die genau die gleiche Kopfzeile.
Daneben, wenn man sich die verfügbaren Optionen in Visual Studio 2008 beim hinzufügen der service Referenz-jede option entspricht einem svcutil argument.