ฉันจะใช้“ -optimize” กับ dotnet cli ได้อย่างไร

Sep 04 2020

จนถึงตอนนี้ฉันใช้csc.exeจาก. NET Frameworkเพื่อรวบรวมสคริปต์ C # สั้น ๆ ของฉัน ไม่มีอะไรแฟนซีเกินไปฉันแค่อยากจะสำรวจเล็กน้อยและcsc.exeก็อยู่ในคอมพิวเตอร์ของฉันแล้ว ตอนนี้ฉันกำลังพยายามเขียนโครงการโดยใช้. NET Core sdk (ซึ่งฉันพบที่นี่:https://dotnet.microsoft.com/download/dotnet-core/3.1) ฉันไม่แน่ใจว่าจะระบุตัวเลือกคอมไพลเลอร์แบบคลาสสิกเช่น "-optimize" ได้อย่างไร

ฉันทราบดีว่าฉันไม่จำเป็นต้องใช้ "-optimize" แต่ฉันยังต้องการทดลองและอาจใช้ตัวเลือกอื่น ๆ ที่ฉันยังไม่ได้พิจารณา วิธีแก้ปัญหาเดียวที่ฉันคิดขึ้นมาคือใช้csc.dll ที่ให้มา(โดยใช้ "dotnet <path> /csc.dll ... ") ซึ่งหมายถึงการกลับไปที่csc.exeแบบเต็มวงซึ่งทำให้จุดประสงค์ของทั้งหมด sdk.

วิธีสร้างสถานการณ์นี้ซ้ำ:

  • แฟ้มใหม่
  • "dotnet คอนโซลใหม่"
  • ขณะนี้ไฟล์ nececery ทั้งหมดถูกสร้างขึ้นแล้ว ("Project.csproj", "Program.cs", "bin /", "obj / ... ")
  • "ดอทเน็ตรัน"
  • ตอนนี้คืออะไร?

ฉันคิดว่าฉันจำเป็นต้องเพิ่มบางอย่างในไฟล์. csproj เนื่องจากมี " <AllowUnsafeBlocks>true</AllowUnsafeBlocks>" สำหรับ "-unsafe" อย่างไรก็ตามฉันไม่พบสิ่งใดสำหรับ "-optimize"

ข้อมูลเพิ่มเติม: ฉันใช้Visual Studio Codeซึ่งฉันคิดว่าไม่เกี่ยวข้องกับปัญหานี้ แต่ในกรณีนี้

คำตอบ

Andy Sep 04 2020 at 01:40

การคอมไพล์สำหรับ "release" จะเปิดตัวเลือกนั้นโดยอัตโนมัติ หากต้องการใช้ให้ส่งผ่าน-c Releaseไปยังdotnetคำสั่ง

ตัวอย่างเช่นReleaseชี้ไปที่การกำหนดค่าที่มีลักษณะดังนี้:

<PropertyGroup Condition="'$(Configuration)' == 'Release'"> <DefineConstants>$(DefineConstants);RELEASE;TRACE</DefineConstants>
    <DebugSymbols>false</DebugSymbols>
    <DebugType>portable</DebugType>
    <Optimize>true</Optimize>
</PropertyGroup>

ข้อมูลเพิ่มเติมที่นี่