Возможности экспорта в Excel проекта VB. net перестали работать после обфускации - PullRequest
1 голос
/ 14 июля 2020

У меня есть старый проект VB. net (с некоторыми пользовательскими библиотеками C ++ в нем), который только недавно был обфусцирован с помощью ConfuserEx.

Обфускация привела к серии ошибок, которые были исправлены путем добавления пространств имен в соответствующие разделы кода и исключения этих пространств имен из обфускации. Эти исключения были сделаны путем включения правил в файл .crproj, например следующих:

  <rule preset="none" pattern="namespace('Namespace1')">
    <protection id="rename" action="remove" />
  </rule>

, где Namespace1 - имя моего пространства имен.

Проблема в том, что это решение похоже, не работает для класса, который содержит функции «Экспорт в Excel». Методы, лежащие в основе этих функций, используют библиотеку Microsoft.Office.Interop для:

  1. открытия уже существующего файла шаблона Excel
  2. записи некоторых данных в определенные c ячейки
  3. сохраните файл
    excelApp = New Microsoft.Office.Interop.Excel.Application()
    excelApp.DisplayAlerts = False
    workBook = excelApp.Workbooks.Open('templateFile.xls')
    workBook.Activate()
    workSheet = workBook.Worksheets(1)

    m_paramList.SaveToExcelTemplate(workSheet) 'writes some data to the appropriate cells

    workBook.SaveAs('newFile.xls')

Класс, содержащий этот метод, наследуется от класса, содержащегося в необфусцированной библиотеке.

Когда код не запутан, все работает отлично. Когда код запутан, все методы работают нормально, за исключением методов, использующих библиотеку Microsoft.Office.Interop (это похоже на то, что они даже не вызываются при нажатии кнопки пользовательского интерфейса). Существуют и другие методы, которые обрабатывают экспорт в другие файлы, и они отлично работают с обфускацией.

Я действительно понятия не имею, почему эти функции не работают даже после исключения класса из обфускации. Возможно, я не исключил пространство имен должным образом или что-то в этом роде (я действительно неопытен, когда дело доходит до обфускации, и я не мог найти ничего очень полезного относительно того, как это правильно делать в моих поисках). Любая помощь будет принята с благодарностью!

Заранее спасибо,

Педро

...