2009-07-16 4 views
0

J'active [assembly: System.CLSCompliant (true)] à l'intérieur des assemblys de ma solution C#.Comment gérer CLS-conforme dans une référence Web?

Je reçois maintenant quelques avertissements dans le code généré pour un service Web SharePoint.

Voici l'une des méthodes qui ne sont pas conformes CLS:

/// <remarks/> 
    [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.microsoft.com/sharepoint/soap/GetItem", RequestNamespace="http://schemas.microsoft.com/sharepoint/soap/", ResponseNamespace="http://schemas.microsoft.com/sharepoint/soap/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] 
    public uint GetItem(string Url, out FieldInformation[] Fields, [System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")] out byte[] Stream) { 
     object[] results = this.Invoke("GetItem", new object[] { 
        Url}); 
     Fields = ((FieldInformation[])(results[1])); 
     Stream = ((byte[])(results[2])); 
     return ((uint)(results[0])); 
    } 

Comment puis-je supprimer cet avertissement?

Merci, Keith

Répondre

0

Je vous recommande de placer vos références Web dans un projet de bibliothèque de classes distinct qui n'est pas défini pour être compatible CLS. Référencez cette bibliothèque depuis votre code principal.

1

Vous pouvez marquer les méthodes non conformes avec l'attribut [CLSCompliant(false)] pour éviter les mises en garde, mais qui semble vaincre l'objet de marquer vos ensembles comme conformes en premier lieu: Je présume que vous veulent que le code soit réellement conforme à CLS. Pour rendre le code conforme, vous devez modifier le type de retour de la méthode de uint/UInt32. Les types non signés exposés ne sont pas conformes CLS. Vous pouvez renvoyer long/Int64 à la place. Le type long est conforme à la norme CLS et traitera toute valeur uint. Si vous ne pouvez pas, ou ne voulez pas, éditer le code généré (soit pour ajouter l'attribut ou modifier le type de retour) alors je pense que votre seule option est de déplacer ce code vers un ensemble séparé et non conforme as John suggests.

Questions connexes