2013-12-19 5 views
3

Я пытаюсь восстановить потерянный код из приложения VB.net 2.0, которое я унаследовал. У меня есть текущие рабочие версии, поэтому я попытался использовать RedGate Reflector и Telerik JustDecompile для восстановления кода. Оба будут успешно возвращать файлы кода, которые являются читаемыми и файлами проекта Visual Studio, но когда я пытаюсь запустить декомпилированную программу, я получаю 102 сообщения об ошибках (с обоими декомпиляторами).Способы восстановления потерянного приложения VB.net

У меня есть проекты Visual Studio из старых версий, которые работают нормально, но структура файлов решений и кодов полностью отличается, и я боюсь, что с тех пор программа слишком сильно изменилась, чтобы доверять этим старым версиям.

Единственная нечетная сборка, которая была включена, - SmartCodeDeveloper 1.0.2986.26049. И я подозреваю, что код был первоначально написан в Visual Studio 2005, так как и 2008, и 2012 год хотят обновиться, когда решение будет открыто.

Что еще можно сделать для восстановления этой программы? У меня есть код, но что-то еще препятствует его запуску, и я нахожусь в замешательстве.

EDIT:

Некоторые сообщения об ошибках, я получаю это:
- «Конец заявления Ожидаемое» или «. Заявление не может появиться внутри тела события Конец события предполагаемого»
-Много вариантов нет в определении «RemoveHandler» для объекта.
-объект не объявлен «Он может быть недоступен из-за его уровня защиты».

EDIT 2:
Есть ли какие-либо преимущества для декомпиляции в C#? Возможно ли, что рефлектор может улучшить работу с этим? Как насчет разных версий платформы .NET? Я делаю 2.0, и я считаю, что он был разработан.

+1

Есть 102 сообщения об ошибках или похоже, что они связаны? Могли бы вы бросить пару здесь, чтобы мы могли лучше понять, что вы можете потерять? – valverij

+0

Пробовал ли вы добавление сгенерированных файлов кода в новый проект в этой версии - это ваша собственная визуальная студия? –

+0

102 - это максимум, который он покажет, может быть еще много. но и некоторые изменения могут исправить несколько ошибок - например, заменить потерянную ссылку на что-то. Кроме того, начните с OPTION STRICT, чтобы устранить эти ошибки и посмотреть, что такое повреждение только от обратной инженерии. – Plutonix

ответ

1

Рефлектор создаст код, который не является кодом VB, т.е. var ++. Вам придется их найти и исправить. Он также создаст множество определений событий, которые не будут работать. Посмотрите на код Как публичные пользовательские определения событий. Удалите ключевое слово Custom и все строки, следующие за конечным событием. Кроме того, вам нужно будет выяснить, какие вам нужны операторы импорта.

Вот пример из рефлектора

Public Custom Event ColumnChanging As DataColumnChangeEventHandler 
    AddHandler(ByVal value As DataColumnChangeEventHandler) 
     Bid.Trace("<ds.DataTable.add_ColumnChanging|API> %d#" & ChrW(10), Me.ObjectID) 
     Me.onColumnChangingDelegate = DirectCast(Delegate.Combine(Me.onColumnChangingDelegate, value), DataColumnChangeEventHandler) 
    End AddHandler 
    RemoveHandler(ByVal value As DataColumnChangeEventHandler) 
     Bid.Trace("<ds.DataTable.remove_ColumnChanging|API> %d#" & ChrW(10), Me.ObjectID) 
     Me.onColumnChangingDelegate = DirectCast(Delegate.Remove(Me.onColumnChangingDelegate, value), DataColumnChangeEventHandler) 
    End RemoveHandler 
End Event 

Это будет изменено на это:

Public Event ColumnChanging As DataColumnChangeEventHandler 

Недостающие литературы вызывает много ошибок также.

+0

Просто удалите общедоступные пользовательские события? Разве мне не нужно их менять, или я потеряю функциональность? – MAW74656

+0

Я отредактировал свой предыдущий ответ, чтобы более четко показать, что я имел в виду. – Lauren

+0

Так что мне может потребоваться просто удалить 'Custom', если строка такая же, как в противном случае? Может ли аналогичная проблема произойти с 'ReadOnly'? – MAW74656

1

Я уже видел эту проблему раньше. Описан другим членом. Его действительно просто исправить. Причина, по которой у вас есть эти 100+ ошибок, обычно из-за чего-то тривиального ... Как, например, unterminated strig. Однако простая ошибка выталкивает все остальное из синхронизации, поэтому вы получаете больше отображаемых ошибок, чем фактическое количество ошибок REAL, из-за эффекта лестницы, который возникает из-за первой ошибки (причины проблемы).

Лучший способ справиться с этим следующим образом ....

1 - Open your solution 
2 - Close all document windows - so no solution documents are displayed 
3 - Compile your solution 
4 - At this point your errors should be minimised to a much lower amount of errors like maybe 1 to 10 for example. 

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

+0

К сожалению, никакого эффекта, по-прежнему 102 ошибки. – MAW74656

+0

Извините, что, я думаю, это означает, что ваши ошибки все реальные, а не лестничный эффект. – Zeddy

Смежные вопросы