#c# #.net-core #compiler-options
#c# #.net-core #параметры компилятора
Вопрос:
До сих пор я использовал csc.exe из .NET Framework для компиляции моих коротких сценариев C #. Ничего особенного, я просто хотел немного изучить иcsc.exe уже было на моем компьютере. Теперь, когда я пытаюсь писать свои проекты, используя .NET Core sdk (который я нашел здесь:https://dotnet.microsoft.com/download/dotnet-core/3.1 ), Я не уверен, как указать эти классические параметры компилятора, такие как «-optimize».
Я знаю, что мне на самом деле не нужна «-optimize», но я все равно хотел бы поэкспериментировать и, возможно, использовать некоторые другие варианты, которые я еще не рассматривал. Единственным решением, которое я придумал, было использование предоставленногоcsc.dll (используя «dotnet <путь>/csc.dll …»), что означало возврат к полному кругуcsc.exe что противоречит цели всего SDK.
Как воспроизвести эту ситуацию:
- новая папка
- «новая консоль dotnet»
- теперь сгенерированы все необходимые файлы («Project.csproj», «Program.cs», «bin/», «obj/…»)
- «запуск dotnet»
- что теперь?
Я предполагаю, что мне нужно что-то добавить в файл .csproj, поскольку в нем есть « <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
» для «-unsafe», однако я ничего не нашел для «-optimize».
Дополнительная информация: Я использую Visual Studio Code, который, я думаю, не имеет отношения к этой проблеме, но на всякий случай.
Ответ №1:
Компиляция для «release» автоматически включает эту опцию. Чтобы использовать это, перейдите -c Release
к dotnet
команде.
Например, Release
указывает на конфигурацию, которая выглядит примерно так:
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<DefineConstants>$(DefineConstants);RELEASE;TRACE</DefineConstants>
<DebugSymbols>false</DebugSymbols>
<DebugType>portable</DebugType>
<Optimize>true</Optimize>
</PropertyGroup>
Больше информации здесь.
Комментарии:
1. Боже да, я искал «<Optimize >true </Optimize >» спасибо. Я почему-то не нашел его в документах, поэтому предположил, что его не существует. Я только что попробовал это с помощью быстрого теста производительности (при отладочной сборке), и разница между true и false астрономическая (* для теста, который я сделал).