Как я могу исправить сборки .NET?

Если я скомпилирую проект C # дважды, я получу две сборки. Эти сборки не совсем одинаковы (с использованием бинарного сравнения). Я могу думать о причинах, почему это так, но факт остается фактом, что источник для двух сборок идентичен.

Я заинтересован в создании патча между этими сборками и применении патча на клиентском компьютере.

Кто-нибудь знает библиотеку (желательно .NET) или инструмент, с помощью которого я могу создавать и применять патчи?

В идеале он также должен обрабатывать небольшие изменения, такие как изменение зависимостей на уровне проекта или настройка нескольких строк в источнике. Это не должно быть в состоянии справиться с более крупными изменениями, потому что я рад заменить сборки в этом случае полностью.

Обновить:

Я думаю, что немного больше информации могло бы помочь прояснить, к чему я клоню. У меня есть сервер непрерывной интеграции, создающий мое приложение. Я изменяю версию файла и сборки, чтобы отразить номер сборки и версию, которую я собираю. Я мог бы сделать это по-другому, но этот вариант мне нравится.

Это приводит к изменению ссылок на сборки при создании приложения, но я доволен этим. Сейчас я занимаюсь распространением обновления до ранее выпущенной версии. Я строю обновления с помощью InstallShield. Сборки, доступные для InstallShield, уменьшены до небольших исправлений. Это не сильно увеличивает размер обновления.

В моем приложении есть несколько файлов данных, которые в основном представляют собой зашифрованные архивы, содержащие сборки. InstallShield не имеет доступа к этим сборкам или не разбирается в моем архиве. Он не знает, как расшифровать и извлечь его. Я написал свою собственную программу патчей, которая находит измененные файлы в предыдущем архиве и заменяет их новой обновленной версией. В основном стратегия поиска и замены.

Один архив содержит почти сотню (и продолжает расти) этих сборок, а некоторые из этих сборок содержат большие файлы данных в качестве ресурсов. Эти сборки зависят от сборок, которые являются частью приложения. Они также компилируются во время непрерывной интеграции. Если вы не скомпилируете их во время сборки, у вас появятся проблемы с зависимостями, и я не хочу пытаться справиться с этим. Каждый раз, когда я создаю патч, все эти сборки включены. Сейчас я смотрю на варианты, чтобы уменьшить размер патча путем создания патчей для этих сборок.

Ответы на вопрос(2)

Ваш ответ на вопрос