Pergunta

Estou ligando [assembly: System.CLSCompliant (true)]. Dentro das assembleias de minha solução C #

Agora estou recebendo alguns avisos dentro do código gerado para um serviço Web SharePoint.

Aqui é um dos métodos que não são compatíveis com 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]));
    }

Como posso remover esse aviso?

Obrigado, Keith

Foi útil?

Solução

Eu recomendo que você coloque suas referências na web em um projeto de biblioteca de classe separada que não está definido para ser compatível com CLS. Referência que a biblioteca do seu código principal.

Outras dicas

Você pode marcar os métodos não conformes com o atributo [CLSCompliant(false)] para evitar os avisos, mas que parece derrotar o objeto de marcar seus conjuntos como compatível em primeiro lugar: Provavelmente, você quer o código para realmente ser compatível com CLS.

Para tornar o código cumprir, você precisa mudar o tipo de retorno do método de uint / UInt32 . tipos não assinados expostas não são compatíveis com CLS.

Você poderia voltar long / Int64 . O tipo long é compatível com CLS e irá lidar com segurança qualquer valor uint possível.

Se você não pode, ou não, editar o código gerado (para adicionar o atributo ou alterar o tipo de retorno), então eu acho que sua única opção é mover esse código para um conjunto separado, não-conformes < a href = "https://stackoverflow.com/questions/1140716/how-do-i-handle-cls-compliant-within-a-web-reference/1140773#1140773"> como John sugere .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top