protect
ถ้าเอาบทความไปเผยแพร่แล้วไม่ให้เครดิต ดำเนินคดีด้วย พรบ. คอมพิวเตอร์ฉบับใหม่ ขั้นสูงสุดและไม่ยอมความครับ
วันพุธที่ 14 ตุลาคม พ.ศ. 2558
Assembly Module : ตอนที่ 3 รู้จักกับ Response File
ก่อนที่จะขึ้นรายละเอียดของ Metadata ผมขออธิบายอีกนิดเกี่ยวกับการ save พารามิเตอร์ในการ compile code ลงใน file
โดยปกติตอนที่เรา compile code ด้วยคำสั่ง csc เราอาจจะต้อง reference หลายๆ library ซึ่งจะต้องใส่ /r กับ library ทุกตัว ดังนั้นคำสั่ง csc จะยาวมาก csc หรือ C# Compiler ได้อนุญาติให้เอาพารามิเตอร์ใส่ไว้ลงใน file โดยเรียก file ชนิดนี้ว่า response file ที่มีนามสกุล .rsp เมื่อ คำสั่ง csc compile code และต้องการใช้พารามิเตอร์ใน response file ก็จะใช้เครื่องหมาย @ นำหน้า response file นั้น
ตัวอย่างของ response file
เมื่อ csc ทำการ conpile code ก็สามารถทำได้ด้วยคำสั่ง
csc @MyResponse.rsp program.cs
ที่นี้เราจะลดข้อผิดพลาดในการใส่ พารามิเตอร์ของ csc และเรายังใช้พารามิเตอร์ชุดนี้กับ project อื่นๆ ได้อีกด้วย
C# compiler ยังอนุญาติให้มี response มากว่า 1 file ลองดูตัวอย่างครับ
csc @MyResponse.rsp @AnotherResponse.rsp program.cs
ในบทความที่แล้วผมได้ยกตัวอย่างการ compile code โดยไม่ใส่พารามิเตอร์อะไรเลยเป็นเพราะว่า C# compiler มีการเรียกใช้ response file ที่เป็น global ชื่อ response file ที่เป็น global นี้จะถูกเก็บไว้ในชื่อ csc.rsp โดยถูกเก็บไว้ที่ %SystemRoot%\Microsoft.NET\Framework\vX.X.X
%SystemRoot% คือ directory ที่เก็บ System ของ Windows โดยส่วนใหญ่คือ c:\Windows
vX.X.X คือ version ของ csc โดยปกติจะเป็น version เดียวกับ .Net Framework เราสามารถเช็ค version ของ csc ได้โดยพิมพ์คำสั่ง csc และ enter ดังรูปตัวอย่างข้างล่างครับ
ในรูปข้างล่างเป็นตัวอย่างเนื้อหาของ file csc.rsp
%SystemRoot%\Microsoft.NET\Framework\vX.X.X นอกจากจะเก็บ global response file แล้วยังเก็บ standard library ที่ชื่อ MSCorLib.dll ด้วย
ถ้าเราไม่ต้องการใช้ response file ตัวที่เป็น global เราก็สามารถใส่พารามิเตอร์ /noconfig นอกจากนั้นเรายังใส่พารามิเตอร์ /looger ให้กับ csc เพื่อที่จะ log ข้อมูลของการ compile code ได้ด้วย แต่พารมิเตอร์ /logger ใช้ได้กับ .Net Framework version 4.5 เป็นต้นไป
Response file ที่ผมอธิบายมาทั้งหมดนี้จะใช้ได้เฉพาะ csc compiler เท่านั้นน่ะครับจะไม่สามารถใช้ได้กับ Visual Studio สำหรับ Visual Studio ผมจะอธิบายอย่างละเอียดในบทความถัดๆ ไปครับ
บทความหน้าผมจะเริ่มอธิบายรายละเอียดของ metadata ที่ทำให้ managed module กลายมาเป็น Assembly module น่ะครับ
พบกันใหม่บทความหน้าครับ
TuChay
สมัครสมาชิก:
ส่งความคิดเห็น (Atom)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น