我有一段代码,我可以优化在“调试”中获得提升,而不检查“优化代码”。但是,当使用C#编译器进行优化时,我可以获得更高的速度。因此,我希望检测“优化代码”是否在代码中的项目配置中签入,并为所选选项提供最佳优化。
那么,是否有C#编译器为“优化代码”定义,就像存在调试或跟踪一样?
发布于 2020-01-03 00:22:34
仍然不确定是否存在,或是否没有编译器定义的‘优化代码’选项。但是Kit的回答给了我一个想法,可以为MSBuild更改项目文件,以识别是否启用了“优化代码”选项,并在构建过程中注入了优化的编译器定义。
解决方案非常简单,编辑了项目文件,并在所有属性组下面添加了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'发布于 2020-01-02 23:45:53
根本就没有。当您检查优化代码时,Visual将使用更新.csproj文件
<Optimize>true</Optimize>我认为您最好的选择是定义您自己的条件编译符号并检查它。
https://stackoverflow.com/questions/59571406
复制相似问题