我的.NET程序集中有一个非公共类型,我在这个程序集中加载了反射。
这在调试版本中很有用,但在发布版本中,链接器会删除此类型,因为:
我可以为整个项目关闭此行为或将类型设为公共,但这不是我想要的。相反,我正在寻找一种方法来告诉链接器在任何情况下添加类型。理想情况下与System::Runtime::CompilerServices::DiscardableAttribute完全相反。
答案 0 :(得分:1)
最简单的方法是引用类型。 (我认为有理由使用反射来查找类型,而不是直接引用它。)您可以在执行反射的方法中执行此操作,或者在任何公共类型的静态构造函数中执行此操作。无论你做什么,只要你记录发生了什么以及你为什么这样做,它应该没问题。
方法中的 Type^ keepThis = InternalOnlyClass::typeid;
可能就是你所需要的。如果编译器优化了该语句,那么internal: static Type^ keepThis = InternalOnlyClass::typeid;
应该可以解决这个问题。