Translate

segunda-feira, 17 de fevereiro de 2014

Erro "The CIL generator found errors and could not save the new assembly".

Olá pessoal!

Hoje quero compartilhar com vocês a solução para um problema que ocorre na compilação CIL do AX2012.

Quando encontrei este erro pela primeira vez e pesquisei sobre ele descobri diversas opções para soluciona-lo, a grande maioria delas funciona, mas a que mais utilizo não encontrei descrita em nenhum lugar e por isso vou compartilhar ela com vocês.

Fiquem a vontade para sugerir outros métodos ou mesmo criticar este usado por mim, eu não sou desenvolvedor e esta solução me foi indicada por um desenvolvedor que descobriu e também utiliza este metodo!

Então, primeiramente, vamos ao erro!

Em determinados momentos, por diversas razões, se faz necessário compilar o CIL, ou IL, do AX2012, seja de forma automática ao efetuar o deploy de um novo serviço seja de forma manual. Durante esta compilação é exibida a seguinte mensagem:

"The CIL generator found errors and could not save the new assembly"


A grande maioria das soluções encontradas na Web diz que você deve parar o serviço de AOS do AX e deletar determinados arquivos, tomem muito cuidado para não deletar arquivos errados!

No meu caso eu escolhi fazer o seguinte:

Acesse o AX, depois acesse a "AOT" e em "Data Dictionary" procure pela "Table" "SysXppAssembly" e abra as propriedades dela.





Altere as seguintes propriedades:
Systemtable
Visible
AOSAuthorization

E deixe-as da seguinte forma:
Systemtable = Yes
Visible = Yes
AOSAuthorization = None

E salve as alterações!






Agora o próximo passo é acessar esta tabela. Depois de salvar clique com o botão direito sobre ela e clique em abrir.

Nesta tabela existe uma enorme quantidade de dados, todas as referencias a codigos executados em CIL são guardadas aqui!

No meu caso, e quero deixar bem claro, NO MEU CASO, eu deletei todos estes registros. Isso mesmo "no MEU caso eu deletei todos os registros desta tabela"!!!

E digo mais, este foi meu ultimo recurso para resolver problemas que estava enfrentando em um determinado projeto. Já havia tentado de tudo e nada havia resolvido meu problema.

Um outro ponto de extrema importância, a cada tentativa e alteração um novo backup full era gerado pois mesmo não sendo ambiente de produção eu não podia de forma alguma perder dados ou customizações deste ambiente.

Após deletar os dados desta tabela eu compilei toda a AOT, depois compilei o CIL Full e também sincronizei o banco de dados.

Não tive a necessidade de reiniciar o serviço de AOS do AX.

Novamente devo dizer, não sou desenvolvedor, agradeço a um DEV que me passou esta dica e com quem tive a honra de trabalhar! A compilação completa da AOT e do CIL foram escolhas minhas, assim como a sincronização do banco de dados!

Depois de tudo feito e de saber que já não tinha mais o erro, EU optei por reiniciar o AOS!!!

Este foi o método que eu escolhi seguir, método que funcionou pra mim quando precisei. Não sei ao certo se é correto, se é o melhor ou se estou certo ao dizer e fazer tudo o que está descrito acima, mas como sempre funcionou pra mim, continuo com ele!

Até a próxima pessoal!