2011-01-05 1 views
14

У нас есть приложение в производстве, а код находится в предварительно скомпилированном виде. Разработчик, который разработал это приложение, покинул компанию, и у нас нет резервной копии исходного кода. единственный доступ, который у нас есть, - это предварительно скомпилированный код на сервере. Нам нужно исправить проблемы в приложении.Декомпилировать предварительно скомпилированный исходный код ASP.NET

Есть ли способ декомпилировать (извлечь в исходный код) код PreCompiled?

ответ

12

Открыть DLL в .NET Reflector.

+0

В прекомпилированном коде отсутствует DLL. Единственное, что я вижу, это страницы aspx и некоторые другие изображения, папки скинов – msbyuva

+0

@msbyuva: Вы проверили папку bin приложения? – adamjford

+0

Я вижу несколько dll, я открылся тогда через .NET Reflector, тогда я разобрал их, но не видел никакого кода. А также, как я могу увидеть файлы .aspx.cs? – msbyuva

2

Начать с:

http://www.red-gate.com/products/dotnet-development/reflector/

... плюс:

http://www.denisbauer.com/NETTools/FileDisassembler.aspx

Вы должны будете перекомпилировать последний связать его с v6.5 рефлектора (последний , начиная с этого поста.) Это хорошее дополнение, если вы хотите избежать необходимости копировать и вставлять каждый отдельный файл в файлы вручную. Он сбрасывает полностью сборку в виде файлов .cs. Я думаю, что он может даже генерировать csproj.

Оба инструмента являются бесплатными.

+0

В прекомпилированном коде отсутствует DLL. Единственное, что я вижу, это страницы aspx и некоторые другие изображения, папки скинов. Как я могу получить страницы aspx.cs? – msbyuva

+0

Больше нет страниц aspx.cs, которые на самом деле не являются страницами, а являются файлами исходного кода. Компилятор C# - как и все компиляторы - берет набор исходных файлов и превращает их в одну или несколько DLL. Вы не сможете вернуть исходные файлы .cs. Вы должны выгружать все классы в качестве исходных файлов с помощью перечисленных выше инструментов, а затем добавлять их в новый веб-проект вместе с существующими страницами aspx, которые у вас есть. – x0n

+0

Спасибо ... как я предложил использовать рефлектор, и я могу видеть весь код в файлах классов и код за файлами. Ну, я не понял, как использовать второй инструмент File Dissembler. Я извлек всю DLL из рефлектора .NET, как я могу использовать второй инструмент для извлечения исходного кода из извлеченных DLL? Мне жаль беспокоить вас ... – msbyuva

0

Я нашел, что dll можно просто прочитать с помощью инструмента .NET Reflector, но не может извлечь исходный код. А также, когда веб-формы предварительно скомпилированы, мы даже не можем вернуть код за файлами. Все, что мы можем сделать, это отладить и проанализировать Кодекс.

+0

.NET Reflector хорош, но это не бесплатный инструмент, я нашел dotPeek, который бесплатный - http://www.jetbrains.com/decompiler/ – msbyuva

0

У меня была аналогичная проблема, и я использовал Reflector для декомпиляции. Я получил исходный код, затем изменил бит, который я хотел, и восстановил его. Затем я снова скопировал эту dll на сайт Production. Он начал отражать мои изменения. Это было очень легко и совсем не сложно, возможно, потому, что на Precompiled site были dll для каждой страницы, и он был обновляемым, поэтому в dll был только файл с кодом.

Для справки: http://www.reflector.net/

0

Когда у установить .net reflecter.its импортировать в Visual Studio. , тогда вы увидели инструменты рефлектора .net в строке меню.

Нажмите на .net отражатель >> Выберите Asseblies (файл Dll) для отладки.

3

Чтобы обновить @ ответ XON в:

В связи с недавней катастрофой управления источником я должен был восстановить мой проект из библиотек DLL. Так, к сожалению, я на знающих процедуры:

  1. Получить .Net Reflector здесь: http://www.red-gate.com/products/dotnet-development/reflector/

  2. Вы, кажется, не нужно FileDisassembler.

  3. Либо загрузите свои бункеры в отражатель, либо дважды щелкните их.

  4. Помните, что инфраструктура .Net, возможно, не сохранила исходную структуру файла проекта. Поэтому, если некоторые из ваших страниц ASPX используют одно и то же имя базового класса в разных файлах .cs (тег I.E. Inherits те же, но тег CodeFile отличается), вы не сможете просто «экспортировать исходный код». Не отправляйтесь вслепую экспортировать исходные файлы. Это не сработает.

  5. Перед тем, как просто запустить стартовую кнопку, по-прежнему будет выполнена какая-то работа. Например, DLL может напрямую ссылаться на getter/setters свойства. Вам придется это исправить.

Удачи.

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

  • Нет связанных вопросов^_^