Tipo de parâmetro '<parametername>' não é compatível com CLS
Um procedimento é marcado sistema autônomo <CLSCompliant(True)> declara um parâmetro, mas com um tipo que está marcado sistema autônomo <CLSCompliant(False)>, não está marcada ou não está qualificada a 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: BC40028
Para corrigir este erro
Se o procedimento deve ter um parâmetro deste tipo particular, remova o CLSCompliantAttribute. O procedimento não pode ser compatível com CLS.
Se o procedimento deve ser compatível com CLS, alterar o tipo desse parâmetro do tipo compatível com CLS mais próximo.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 componente, declare-o como Short em vez de Integer no seu código gerenciado Visual Basic.