Исправьте ошибки в программе.NET без доступа к источнику

Я живу в страхе перед кем-то делающим это к моим базам данных, таким образом, я всегда прошу, чтобы моя Команда сделала что-то как следующее:

BEGIN TRAN
 
DELETE FROM X
-- SELECT * FROM X
FROM Table A as X JOIN Table B ON Blah blah blah
WHERE blah blah blah
 
ROLLBACK TRAN
COMMIT TRAN

Таким образом, если Вы случайно поражаете F5 (сделанный это!) Вы не сделаете никаких изменений. Можно выделить ИЗБРАННУЮ часть через конец SQL-оператора для наблюдения, какие записи будут изменены (и сколько). Затем выделите BEGIN TRAN и весь Оператор удаления и выполните его. При удалении того же количества записей, Вы ожидали, выделите COMMIT TRAN и выполните его. Если что-нибудь смотрит wonky, выделите ROLLBACK TRAN и выполните его.

я делаю это с любым ОБНОВЛЕНИЕМ или Оператором удаления. Это сохранило меня пару раз, но это ВСЕГДА обеспечивает душевное спокойствие.

10
задан Erik 7 October 2009 в 12:18
поделиться

5 ответов

Если программа проста, теоретически вы можете использовать отражатель, чтобы полностью преобразовать всю программу обратно на C #, внести изменения и перекомпилировать ее.

В качестве альтернативы вы можете попробовать такой инструмент, как ] ILDasm , который должен позволить вам извлечь IL, внести изменения (в MSIL) и повторно собрать (используя ILAsm ). Очевидно, что для этого вам нужно будет выяснить, как записать ваше изменение в IL, так что вам, вероятно, придется немного поэкспериментировать, чтобы увидеть, как компилируются операторы if.

Я подозреваю, что и то и другое потребует немало возиться чтобы перекомпиляция заработала.

Удачи.

Если у вас все заработало, отправьте ответ и дайте мне знать, мне будет очень интересно, как вы это сделали.

1
ответ дан 3 December 2019 в 23:13
поделиться

Я предлагаю вам использовать плагин Reflexil для Reflector . Он позволяет легко изменять сборки и даже заменять тело метода собственным кодом C #.

8
ответ дан 3 December 2019 в 23:13
поделиться

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

Если есть более простой метод, я бы тоже хотел его узнать.

2
ответ дан 3 December 2019 в 23:13
поделиться

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

2
ответ дан 3 December 2019 в 23:13
поделиться

Попробуйте этот .NET Reflector addin .

Это сработало для меня. Иногда он создает теги «Complier Generated», которые невозможно выполнить. Но вы можете легко исправить это вручную.

1
ответ дан 3 December 2019 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: