Fehler/Warnungen svcutil.exe zum erstellen von proxy-Klassen für mehrere WCF-Dienste
Ich Schreibe ein .NET 3.5-app und die Kontrolle sowohl über den WCF-Dienst und-client.
Ich bin mit svcutil zum generieren von proxy Klassen für meine Dienste, die Kombination mehrerer Dienste, da Sie teilen Datentypen.
svcutil /out:ServiceReference.cs /noconfig /namespace:*,Global.ServiceReference
/tcv:Version35 http://localhost:12345/first.svc http://localhost:12345/second.svc
Die mehr ernstes problem ist die Fehler-ich habe ein Klasse erstellt wird zweimal, was viele der "Mehrdeutigkeit zwischen 'Global'.ServiceReference.MyClass.MyField' und 'Global'.ServiceReference.MyClass.MyField' " Fehler. Beachten Sie, dass gerade jetzt, in dieser Klasse ist nur auf die in EINEM der Dienste, aber in der Zukunft wird es sein, einen Verweis von mehr.
Den beiden generierten Klasse Aussehen:
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="MyClass", Namespace="http://schemas.datacontract.org/2004/07/MyService.Util")]
public partial class MyClass : object, System.Runtime.Serialization.IExtensibleDataObject
{
//fields
}
und
[System.CodeDom.Compiler.GeneratedCodeAttribute("svcutil", "3.0.4506.2152")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.datacontract.org/2004/07/MyService.Util")]
public partial class MyClass
{
//same fields
}
Basierend auf den Parametern angewendet, das hat etwas zu tun mit dem DataContractSerializer gegen den XmlSerializer, aber ich weiß nicht wirklich verstehen, was diese bedeuten.
Zweite problem ist, dass svcutil gibt eine ganze Bootsladung von Warnungen der form:
Error: There was a validation error on a schema generated during export:
Source:
Line: 1 Column: 10415
Validation Error: The simpleType 'http://schemas.microsoft.com/2003/10/Serialization/:guid' has already been declared.
Diese Fehler passieren, auch mit zwei sehr einfache Dienstleistungen. Zum Beispiel, wenn der service #1 hat
[OperationContract]
public string test(int test)
{
return "test";
}
- und service #2 hat
[OperationContract]
public int Ping(string test)
{
return 23;
}
...Ich bekomme die Warnungen. Es ist wie ein 100 von Ihnen, alle beschweren sich über verschiedene globalElements, globalAttributes, oder simpleTypes wie guid, Dauer, char, etc.
Wenn ich einen der Dienste zu haben ist nur noch leere Parameter - /Rückgabewert-Typ, ich habe nicht die Warnungen. Das ist wirklich verwirrend, da dies der einfachste test. Ohne benutzerdefinierte Typen überhaupt, svcutil ist barfing. Keine Ahnung, was hier Los ist?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Etwas in der XSD-Dateien verursacht svcutil zum aufrufen der XmlSerializer zu generieren, die einige Ihrer Arten. Leider geben die Freigabe zwischen DataContract-und XmlSerializer ist nicht verfügbar, so dass Sie am Ende mit duplizierten Arten. Da wie es aussieht, bist du wahrscheinlich mit DC ausschließlich auf dem server, es könnte gerade genug, um in Kraft svcutil Aufenthalt im DC-Modus und nicht Umfallen zu XmlSerializer, etwa so:
Die Warnungen sind normal, wenn Sie gemeinsam Typen und die Liste mehrere Dienste ich habe mit dieser Methode seit über einem Jahr. Ein Dienstprogramm, das die Erzeugung der Klasse überhaupt oder ist es das erstellen nichts.