为了将一些新UI迁移到Managed/C#land,我最近在一个大型遗留项目中启用了公共语言运行时支持(/ clr),该项目在共享DLL中使用MFC并依赖于我们内部的大约十几个其他项目.整体解决方案 这个项目是我们应用程序的核心,它将驱动所生成的任何托管UI代码(因此需要为interop启用clr支持).
在修复了大量的小错误和警告之后,我终于设法让应用程序进行编译.但是,运行应用程序会导致EETypeLoadException并让我无法调试...
做了一些挖掘,我发现原因是"System.TypeLoadException:内部限制:字段太多了." 它发生在编译结束时.然后我发现这个链接建议将组件分解为两个或更多dll.但是,在我的情况下这是不可能的,因为我的限制是遗留代码基本上保持不变.
有谁能建议任何其他可能的解决方案 我真的在这里死路一条.
确保已启用 "C/C++代码生成"下的" 启用字符串池"选项.
这通常解决了这个问题,这是其中一个"嗯?" MS限制,例如Excel电子表格上的64k限制.只有这一个会影响程序集中可能出现的符号数.