当我使用发布版本编译项目时,代码中未引用的代码优化类型不再包含在程序集中。
问题是我想在运行时通过反射来使用这些类型。
是否存在属性或其他方式,我可以告诉编译器不要优化给定的类?
答案 0 :(得分:1)
您是否正在使用某种混淆器或优化器(例如Dotfuscator),因为它认为它们未使用?如果是这样,您将必须配置该软件,以便它不会删除它们。这不是C#编译器问题。
否则,我自己从未见过这个。所有类型始终存在于程序集中,即使它们未被引用。其他任何事情都会变得疯狂,因为它会使你的注意事项变得毫无用处。
为了测试这个,我只编译了一个包含两个未使用的类的小项目,以及一个仅由一个未使用的类使用的类。即使在发布模式下,即使启用了“优化”,它们也都没有被删除。
如果您可以提供编译器删除类型的小示例,则可能是编译器错误,您应该考虑将其报告给connect.microsoft.com。
答案 1 :(得分:-2)
以下是有关禁用/启用优化问题的直接文档:
http://msdn.microsoft.com/en-us/library/t0hfscdc%28v=VS.100%29.aspx
但是,我也发现奇怪的是,由于优化,某些代码未包含在程序集中。