VS2015压缩元数据流中的表非法

本文关键字:非法 数据流 压缩 元数据 VS2015 | 更新日期: 2023-09-27 17:59:41

我们正在尝试从Visual Studio 2012升级到2015。我们遇到的唯一错误是

xyzRenamed.dll无法打开--压缩中的非法表元数据流。

我们已经在2012年使用了这个客户提供的api dll几年了,没有遇到任何问题。有人知道为什么2015年会对dll感到不满,而2012年却很好吗?有什么办法可以避免吗?

VS2015压缩元数据流中的表非法

很可能您的某个DLL被混淆了,特别是被一个名为Confuser Ex.的FOSS项目混淆了。该项目可以在Visual Studio中使用(作为插件)来混淆您的代码。使用该工具时,您可以选择保护层。可以使用部分或全部图层。在编译的DLL中创建无效元数据的保护就是创建这个奇怪错误的保护。

在VisualStudio->Tools->settings->ConfuserEx的VS设置中生成模糊dll时,可以停用无效的元数据保护

如果您没有创建库,则需要进一步调查,也许可以使用Visual Studio 2015以外的其他工具来编译项目。

删除

<protection id="invalid metadata" />

CRPROJ文件中的行。

事实证明,客户通过无效的元数据策略混淆了他们的DLL。具体来说,他们使用的是ConfuserEx。这似乎适用于VS2012,但VS2015没有。以下是ConfuserEx关于该问题的错误报告,它基本上被认为是预期行为。https://github.com/yck1509/ConfuserEx/issues/313

我们能够让他们在没有这种模糊处理的情况下重建DLL,而且效果很好。

我目前还不知道我们有任何方法可以修改VS解决方案来使用模糊文件。如果你知道一种方法,那么请为那些没有足够幸运能够获得其依赖关系的非模糊版本的人发布它。