我需要为 Metro 编译一个程序集,并基本上检查一些编译器生成的代码是否可以在常规控制台程序中运行(这应该很容易)。我的问题是编译器生成的代码将所有感兴趣的东西作为内部和/或私有(类和方法)发出。
有没有指定我的控制台程序就像一个超级朋友之类的?此外,丑陋的 hack 是可以接受的,这仅用于集成测试。这样做的最好方法是什么?我想到的唯一两种方法是大量反射或反汇编为 IL,使用一些非常复杂的正则表达式并用公共替换所有私有/内部成员。
我需要为 Metro 编译一个程序集,并基本上检查一些编译器生成的代码是否可以在常规控制台程序中运行(这应该很容易)。我的问题是编译器生成的代码将所有感兴趣的东西作为内部和/或私有(类和方法)发出。
有没有指定我的控制台程序就像一个超级朋友之类的?此外,丑陋的 hack 是可以接受的,这仅用于集成测试。这样做的最好方法是什么?我想到的唯一两种方法是大量反射或反汇编为 IL,使用一些非常复杂的正则表达式并用公共替换所有私有/内部成员。
有没有指定我的控制台程序就像一个超级朋友之类的?
您可以使用InternalsVisibleToAttribute
- 将其应用于“目标”程序集,引用控制台应用程序。这不会让您访问私人成员,但如果internal
访问足够好应该没问题。
唯一需要立即注意的是,我不确定该属性是否适用于 Metro 程序集……但这当然值得一试。