Pregunta

Estoy encender [assembly: System.CLSCompliant (true)] en el interior de los conjuntos de mi C # solución

.

ahora estoy recibiendo algunas advertencias en el código generado para un Servicio Web de SharePoint.

Aquí es uno de los métodos que no son compatibles con 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]));
    }

¿Cómo puedo eliminar esta advertencia?

Gracias, Keith

¿Fue útil?

Solución

Me gustaría recomendar colocar sus referencias web en un proyecto de biblioteca de clases separado que no está dispuesto a ser compatible con CLS. Hacer referencia a la biblioteca a partir del código principal.

Otros consejos

Puede marcar los métodos no conformes con el atributo [CLSCompliant(false)] para evitar las advertencias, pero que parece que menoscabe el objeto de marcar sus asambleas como compatible en el primer lugar: Es de suponer que desea que el código sea realmente compatible con CLS.

Para hacer cumplir el código, es necesario cambiar el tipo de retorno del método de uint / UInt32 . los tipos sin signo expuestas no son compatible con CLS.

Se podía volver long / Int64 lugar. El tipo long es compatible con CLS y manejará de forma segura cualquier valor uint posible.

Si no puede, o no quiere, edite el código generado (ya sea a añadir el atributo o alterar el tipo de retorno) entonces creo que su única opción es mover ese código para un montaje por separado, no conforme < a href = "https://stackoverflow.com/questions/1140716/how-do-i-handle-cls-compliant-within-a-web-reference/1140773#1140773"> como John sugiere .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top