我们正在尝试从Visual Studio 2012升级到2015年。我们遇到的唯一错误是
无法打开xyzRenamed.dll - 压缩的非法表 元数据流。
我们在2012年使用这个客户提供的api dll几年没有任何问题。有谁知道为什么2015年对dll不满意,而2012年工作正常?有什么方法可以避免它吗?
答案 0 :(得分:5)
可能是您的某个DLL被混淆了,特别是名为Confuser Ex的FOSS项目。该项目可以在Visual Studio中使用(作为插件)来混淆代码。使用该工具时,您可以选择保护层。您可以使用部分或全部图层。在编译的DLL中创建无效元数据的保护是创建此奇怪错误的保护。
您可以在VisualStudio->Tools->Settings->ConfuserEx的VS设置中生成模糊dll时停用无效的元数据保护。
如果您没有创建库,则需要进一步调查,可能使用Visual Studio 2015之外的其他内容来编译项目。
答案 1 :(得分:1)
删除
A | B
0 | 4
1 | 6
2 | 0
3 | 0
4 | 4
5 | 0
6 | 7
来自CRPROJ文件。
答案 2 :(得分:0)
事实证明,客户通过无效的元数据策略对其DLL进行了模糊处理。具体来说,他们使用的是ConfuserEx。这似乎适用于VS2012,但VS2015没有它。以下是ConfuserEx关于该问题的错误报告,它基本上被视为预期行为。 https://github.com/yck1509/ConfuserEx/issues/313
我们能够让他们重建DLL而不需要这种类型的混淆,它工作正常。
我目前还没有意识到我们可以修改我们的VS解决方案来使用混淆文件。如果您知道某种方式,那么请将其发布给其他不够幸运的人,以便能够获得他们依赖的非模糊版本。