Если я дважды скомпилирую проект C #, я получу две сборки. Эти сборки не совсем одинаковые (с использованием двоичной разницы). Я могу думать о причинах, почему это так, но факт остается фактом: исходный код для двух сборок идентичен.
Я занимаюсь созданием патча между этими сборками и применением патча на машине клиента.
Кто-нибудь знает библиотеку (желательно .NET) или инструмент, с помощью которого я могу создавать и применять исправления?
В идеале он также должен обрабатывать небольшие изменения, такие как изменение зависимостей на уровне проекта или настройка нескольких строк в исходном коде. Он не должен быть в состоянии справиться с более крупными изменениями, потому что я рад полностью заменить сборки в этом случае.
Обновление:
Я думаю, что немного больше информации поможет прояснить, к чему я клоню. У меня есть сервер непрерывной интеграции, создающий мое приложение. Я меняю версию файла и сборки, чтобы отразить номер сборки и версию, которую я создаю. Я мог бы поступить иначе, но этот вариант мне нравится.
Это приводит к изменению ссылок на сборки при создании приложения, но меня это устраивает. Сейчас я озабочен распространением обновления для ранее выпущенной версии. Я собираю обновления с помощью InstallShield. Доступные для InstallShield сборки сведены к небольшим патчам. Это не сильно увеличивает размер обновления.
В моем приложении есть несколько файлов данных, которые в основном представляют собой зашифрованные архивы, содержащие сборки. InstallShield не имеет доступа к этим сборкам и не понимает мой архив. Он не знает, как его расшифровать и извлечь. Я написал свою собственную процедуру исправления, которая находит измененные файлы в предыдущем архиве и заменяет их новой обновленной версией. В основном это стратегия поиска и замены.
Один архив содержит почти сотню (и продолжает расти) этих сборок, и некоторые из этих сборок содержат большие файлы данных в качестве ресурсов. Эти сборки зависят от сборок, которые являются частью приложения. Они также компилируются во время сборки с непрерывной интеграцией. Если их не компилировать во время сборки, останется место для проблем с зависимостями, и я не хочу пытаться с этим справиться. Каждый раз, когда я создаю патч, все эти сборки включаются. Сейчас я рассматриваю варианты уменьшения размера патча путем создания патчей для этих сборок.