Скажем, у меня есть приложение глючит вроде этого:Programmatic MSIL инъекции
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("2 + 1 = {0}", Add(2, 1));
}
static int Add(int x, int y)
{
return x + x; // <-- oops!
}
}
}
Приложение уже скомпилирован и развернут в дикой природе. Кто-то нашел ошибку, и теперь они требуют исправления. Хотя я мог бы повторно развернуть это приложение с помощью исправления, его крайняя проблема по причинам, не зависящим от моего контроля, - я просто хочу написать патч для ошибки.
В частности, я хочу вставить мою собственную MSIL в исходный исходный файл сборщика. Я никогда не делал ничего подобного раньше, и googling не получил никакой полезной информации. Если бы я мог просто увидеть пример того, как это сделать в приведенном выше коде, это очень помогло бы мне:
Как программно вставлять мою собственную MSIL в компилируемую .NET-сборку?
[Редактировать добавить:] К тем, кто спросил: мне не нужна горячая загрузка во время выполнения. Для меня совершенно нормально закрывать приложение, манипулировать сборкой, а затем снова перезапустить программу.
[Изменить еще раз:] Похоже, общий консенсус заключается в том, что «манипулирование сборкой - это bad способ исправления программы». Я не пойду по этой дороге, если ее bad idea.
Я оставляю открытым вопрос, потому что MSIL инъекции все еще может быть полезным для других целей :)
вы хотите сделать это в то время как приложение работает или когда его в автономном режиме? – Peter
В случае, если вам интересно, почему я просто не буду повторно развертывать свое приложение, программное обеспечение, которое я пишу, состоит из половины концерта exes и dll, и его выпускают только один или два раза в год. Развертывание приложения - большой процесс. Патчи и исправления позволят нам более часто нейтрализовать ошибки между развертываниями. – Juliet
Половина концерта? Вау, это много! –