我有一个旧的 VB.net 项目(其中也包含一些自定义 C++ dll),最近才使用 ConfuserEx 进行了混淆。
混淆导致了一系列错误,通过将名称空间添加到适当的代码部分并将这些名称空间从混淆中排除来修复这些错误。这些排除是通过在 .crproj 文件中包含规则来完成的,例如:
<rule preset="none" pattern="namespace('Namespace1')">
<protection id="rename" action="remove" />
</rule>
其中 'Namespace1' 是我的命名空间的名称。
问题是这个解决方案似乎不适用于包含“导出到 Excel”功能的类。这些功能背后的方法使用 Microsoft.Office.Interop 库来:
- 打开预先存在的模板 Excel 文件
- 在特定单元格上写入一些数据
- 保存文件
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 库的方法(就像单击 UI 按钮时甚至没有调用它们一样)。还有其他方法可以处理导出到不同的文件,并且这些方法在混淆后工作得很好。
我真的不知道为什么即使从混淆中排除类后这些功能也不起作用。也许我没有正确排除命名空间或其他东西(在混淆方面我真的没有经验,而且我找不到任何关于如何在搜索中正确执行它的非常有用的东西)。任何帮助将不胜感激!
先感谢您,
佩德罗