是否有C#编译器为“优化代码”定义,如存在DEBUG或TRACE?

索拉尔

我有一段代码可以优化,而无需选中“优化代码”即可在“调试”中获得增强。但是,当通过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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C#编译器是否在优化可空类型?

是否有C C ++ C#编译器可编译为机器代码

F#编译器是否以与C#编译器相同的方式支持foreach优化

“ C#编译器”足够聪明,可以删除由于ConditionalAttribute优化而没有副作用的代码

Typescript编译器或ES2015-是否优化代码?

C#编译器和优化程序会破坏此代码吗?

禁用针对特定功能或代码块(C#)的编译器优化

C#编译器或JIT是否可以优化Lambda表达式中的方法调用?

C#语言编译器是否自行执行任何实际的优化?

我如何“告诉” C编译器不应优化代码?

是否可以使用.NET Core Roslyn编译器编译单个C#代码文件?

C#JIT编译器是否优化空检查?

C++ 编译器是否优化了已知语句?

是否允许C编译器优化掉多余的语句?

C ++编译器是否优化重复的函数调用?

C#编译器是否删除封装了debug.writeline的if

C#编译器会优化掉变量吗?

这是C#编译器完成的优化吗?

编译器如何优化这段代码

查看C#编译器预编译了哪些代码

编译器是否优化变量声明?

是否有任何其他编译器如 typescript 可以编译为 javascript

使用.Net编译器Roslyn为C#代码创建控制流程图

仅在发布版本中运行C#代码失败(可能是由于JIT编译器优化)

是否允许符合标准的C ++编译器为无符号整数优化<= 0上的分支转移?

具有未定义行为的C ++代码,编译器生成std :: exception

是否有任何C或C ++编译器没有将wctrans_t和wctype_t定义为wchar_t类型的原因?

当并非所有代码路径都返回时,C#编译器不会抱怨

c#编译器返回错误,并非所有代码路径都返回值