Tipo de retorno da função '< NomeDoProcedimento >' é não compatível com CLS
Um procedimento Function está marcado como <CLSCompliant(True)> mas retorna um tipo que está marcado como <CLSCompliant(False)>, não está marcado, ou não se qualifica porque ele é um tipo incompatível.
Para um procedimento para ser compatível com o CLS (Common Language Specification) (CLS), ele deve usar somente tipos compatíveis com CLS.Isso se aplica aos tipos de parâmetros, o tipo de retorno e os tipos de todas as suas variáveis locais.
Os seguintes tipos de dados Visual Basic não são compatíveis com CLS:
Quando você aplica o CLSCompliantAttribute a um elemento de programação, você define o parâmetro isCompliant do atributo para True ou False para indicar compatibilidade ou incompatibilidade.Não há padrão para este parâmetro, e você deve fornecer um valor.
Se você não aplicar o CLSCompliantAttribute a um elemento, ele vai ser considerado incompatível.
Por padrão, essa é uma mensagem de aviso.Para informações sobre como ocultar avisos ou tratar avisos como erros, consulte Configurando Avisos (Warnings) no Visual Basic.
ID de erro: BC40027
Para corrigir este erro
Se o procedimento Function deve retornar esse tipo específico, remova o CLSCompliantAttribute.O procedimento não pode ser compatível com CLS.
Se o procedimento Function deve ser compatível com CLS, altere o tipo de retorno para o tipo mais próximo compatível com CLS.Por exemplo, no lugar de UInteger Você poderá usar Integer Se você não precisa o intervalo de valores acima de 2.147.483.647. Se você precisar de intervalo estendido, você pode substituir UInteger com Long.
Se você estiver interfaceando com objetos de automação ou COM, tenha em mente que alguns tipos têm larguras de dados diferentes do que em .NET Framework.Por exemplo, int é geralmente 16 bits em outros ambientes.Se você estiver retornando um inteiro de 16 bits para tal um componente, declare-o como Short em vez de Integer no seu código gerenciado Visual Basic.