Como posso corrigir os assemblies do .NET?

Se eu compilar um projeto C # duas vezes, receberei dois conjuntos. Essas montagens não são exatamente as mesmas (usando um diff binário). Posso pensar nas razões pelas quais isso acontece, mas permanece o fato de que a fonte das duas montagens é idêntica.

Estou preocupado em criar um patch entre esses assemblies e aplicar o patch em uma máquina do cliente.

Alguém sabe de uma biblioteca (preferencialmente .NET) ou ferramenta com a qual eu possa criar e aplicar patches?

Idealmente, ele também deve lidar com pequenas alterações, como alterar dependências em um nível de projeto ou ajustar algumas linhas na origem. Ele não precisa ser capaz de lidar com mudanças maiores, porque estou feliz em substituir os assemblies integralmente neste caso.

Atualizar:

Eu acho que um pouco mais de fundo pode ajudar a esclarecer o que eu estou chegando. Eu tenho um servidor de integração contínua construindo meu aplicativo. Eu mudo a versão de arquivo e montagem para refletir o número de compilação e a versão que estou construindo. Eu poderia ter feito diferente, mas esta é a opção que eu gosto.

Isso faz com que as referências de montagem sejam alteradas quando eu construo meu aplicativo, mas estou feliz com isso. Agora estou preocupado em distribuir uma atualização para uma versão lançada anteriormente. Eu construo atualizações usando o InstallShield. Os conjuntos disponíveis para o InstallShield são reduzidos a pequenos patches. Estes não aumentam muito o tamanho da atualização.

Meu aplicativo tem alguns arquivos de dados, que são basicamente arquivos criptografados contendo assemblies. O InstallShield não tem acesso a esses assemblies nem entende meu arquivo. Não sabe como descriptografá-lo e extraí-lo. Eu escrevi minha própria rotina de correção que encontra arquivos alterados no arquivo anterior e os substitui pela nova versão atualizada. Basicamente, uma estratégia de pesquisa e substituição.

O único arquivo contém quase uma centena (e crescente) desses conjuntos e alguns desses conjuntos contêm grandes arquivos de dados como recursos. Esses conjuntos são dependentes de montagens que fazem parte do aplicativo. Eles também são compilados durante a construção da integração contínua. Não compilá-los durante a compilação deixará espaço para problemas de dependência e não estou disposto a tentar e gerenciar isso. Toda vez que eu criar um patch, todos esses conjuntos estão incluídos. Agora estou olhando para opções para diminuir o tamanho do patch, gerando patches para esses assemblies.

questionAnswers(2)

yourAnswerToTheQuestion