我有一段代码可以优化,而无需选中“优化代码”即可在“调试”中获得增强。但是,当通过C#(csc)编译器进行优化时,我可以获得更高的速度。因此,我想检测是否在代码中的项目配置中选中了“优化代码”,并针对所选选项产生了最佳的优化。
因此,是否有C#编译器为“优化代码”定义,如存在DEBUG或TRACE?
仍然不确定是否存在针对“优化代码”选项的编译器定义。但是Kit的回答给了我一个想法,可以更改MSBuild的项目文件,以识别是否启用了“ Optimize Code”(优化代码)选项,并在构建过程中注入编译器定义OPTIMIZED。
解决方案非常简单,编辑了项目文件,并在所有属性组下面添加了PropertyGroup:
<PropertyGroup>
<DefineConstants Condition="'$(Optimize)' == 'true'">$(DefineConstants),OPTIMIZED</DefineConstants>
</PropertyGroup>
并通过在项目文件的底部添加以下代码来测试DefineConstants的值:
<Target Name="BeforeBuild">
<Message Importance="high" Condition="'$(Optimize)' == 'true'" Text="Project is Optimized, compiler defines : '$(DefineConstants)'" />
<Message Importance="high" Condition="'$(Optimize)' == 'false'" Text="Project is Not Optimized, compiler defines : '$(DefineConstants)'" />
</Target>
如代码中所定义,这产生了完美的结果
Project is Optimized, compiler defines : 'DEBUG,TRACE,OPTIMIZED'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句