Tipo de valor opcional para parâmetro opcional <nomedoparâmetro> não é compatível com CLS
Um procedimento está marcado como <CLSCompliant(True)> mas declara um parâmetro Opcional (Visual Basic) com valor padrão de 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.Também se aplica aos valores padrão dos parâmetros opcionais.
Os seguintes tipos de dados Visual Basic não são compatíveis com CLS:
Quando você aplica o atributo 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 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: BC40042
Para corrigir este erro
Se o parâmetro opcional deve ter um valor padrão desse tipo específico, remova CLSCompliantAttribute.O procedimento não pode ser compatível com CLS.
Se o procedimento deve ser compatível com CLS, altere o tipo deste valor padrão para o 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.