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

问题描述 投票:0回答:2

当我使用发布版本编译项目时,代码中任何地方都没有引用的代码优化类型将不再包含在程序集中。

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

是否有一个属性或其他方式可以告诉编译器不要优化给定的类?

c#
2个回答
1
投票

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

否则,我自己从来没有见过这个。所有类型始终存在于程序集中,即使未引用它们也是如此。其他任何事情都是疯狂的,因为正如您所注意到的那样,它会让反射变得毫无用处。

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

如果您可以提供一个小示例,其中编译器确实删除了类型,则这可能是一个编译器错误,您也许应该考虑将其报告给 connect.microsoft.com。


-2
投票

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

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

但是,我也发现很奇怪,因为优化,有些代码没有包含在程序集中。

© www.soinside.com 2019 - 2024. All rights reserved.