如何告诉C#编译器不要优化掉未使用的类?

时间:2010-09-08 00:09:37

标签: c# compiler-construction

当我使用发布版本编译项目时,代码中未引用的代码优化类型不再包含在程序集中。

问题是我想在运行时通过反射来使用这些类型。

是否存在属性或其他方式,我可以告诉编译器不要优化给定的类?

2 个答案:

答案 0 :(得分:1)

您是否正在使用某种混淆器或优化器(例如Dotfuscator),因为它认为它们未使用?如果是这样,您将必须配置该软件,以便它不会删除它们。这不是C#编译器问题。

否则,我自己从未见过这个。所有类型始终存在于程序集中,即使它们未被引用。其他任何事情都会变得疯狂,因为它会使你的注意事项变得毫无用处。

为了测试这个,我只编译了一个包含两个未使用的类的小项目,以及一个仅由一个未使用的类使用的类。即使在发布模式下,即使启用了“优化”,它们也都没有被删除。

如果您可以提供编译器删除类型的小示例,则可能是编译器错误,您应该考虑将其报告给connect.microsoft.com。

答案 1 :(得分:-2)

以下是有关禁用/启用优化问题的直接文档:

http://msdn.microsoft.com/en-us/library/t0hfscdc%28v=VS.100%29.aspx

但是,我也发现奇怪的是,由于优化,某些代码未包含在程序集中。