Como você altera o tamanho da pilha padrão para o executável executable.net
Descobrimos que um dos nossos assemblies gerados automaticamente está lançando uma StackOverflowException em new (). Esta classe tem (suporta comigo por favor) mais de 400 propriedades simples que são inicializadas (a maioria por padrão (string) etc) em um construtor.
Percebemos que é bom em 64 bits, mas em 32 bits ele vai estrondo!
Precisamos testar se é razoável para nosso caso de uso criar uma pilha padrão maior para nos dar espaço para respirar enquanto fazemos a reengenharia do gerador de código.
Nós esp. interessado em soluções que envolvem app.config, se possível. Mas sou realista, então qualquer coisa seria boa.
Re razões para o fluxo de pilha. Nós reduzimos o erro no construtor em questão. Minhas primeiras impressões também foram do tipo de recursão infinita. No entanto, reproduzimos o erro usando um aplicativo de console de 3 linhas que:
cria uma instância vazia de classe.chama um método não estático (Clone) na classe que primeiro trabalho é criar e esvaziar a instância pronta para passar as propriedades.Ele bate quando atinge o segundo construtor.
Agora depurando através do código-fonte .net, vemos que o estouro da pilha está no Guid.NewGuid () que é passado como o segundo parâmetro para o construtor. A linha real de código é a chamada para a chamada CoCreateGuid () nativa.
Portanto, embora possa ser um bug no CoCreateGuid (), queremos eliminar nosso código do problema. Meu primeiro pensamento é aumentar o tamanho da pilha massivamente e ver se esse erro ocorre novamente. Então, como acho que podemos controlar todos os casos de uso, substituímos o construtor pela inicialização do objeto - pense que isso pode aliviar a pressão na pilha.
Nb Podemos impedir que o erro aconteça removendo apenas a propriedade int da classe.