首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有C#编译器定义“优化的代码”,就像有调试或跟踪一样?

是否有C#编译器定义“优化的代码”,就像有调试或跟踪一样?
EN

Stack Overflow用户
提问于 2020-01-02 23:40:07
回答 2查看 630关注 0票数 1

我有一段代码,我可以优化在“调试”中获得提升,而不检查“优化代码”。但是,当使用C#编译器进行优化时,我可以获得更高的速度。因此,我希望检测“优化代码”是否在代码中的项目配置中签入,并为所选选项提供最佳优化。

那么,是否有C#编译器为“优化代码”定义,就像存在调试或跟踪一样?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-03 00:22:34

仍然不确定是否存在,或是否没有编译器定义的‘优化代码’选项。但是Kit的回答给了我一个想法,可以为MSBuild更改项目文件,以识别是否启用了“优化代码”选项,并在构建过程中注入了优化的编译器定义。

解决方案非常简单,编辑了项目文件,并在所有属性组下面添加了PropertyGroup:

代码语言:javascript
复制
  <PropertyGroup>
    <DefineConstants Condition="'$(Optimize)' == 'true'">$(DefineConstants),OPTIMIZED</DefineConstants>
  </PropertyGroup>

并通过在项目文件底部添加以下代码来测试DefineConstants的值:

代码语言:javascript
复制
  <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>

这产生了完美的结果,因为定义在代码中被识别。

代码语言:javascript
复制
  Project is Optimized, compiler defines : 'DEBUG,TRACE,OPTIMIZED'
票数 0
EN

Stack Overflow用户

发布于 2020-01-02 23:45:53

根本就没有。当您检查优化代码时,Visual将使用更新.csproj文件

代码语言:javascript
复制
<Optimize>true</Optimize>

我认为您最好的选择是定义您自己的条件编译符号并检查它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59571406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档