ไฟล์ CSProj คืออะไร??
ไฟล์ที่มีนามสกุล CSPROJ แสดงถึงไฟล์โปรเจ็กต์ C# ที่มีรายการไฟล์ที่รวมอยู่ในโปรเจ็กต์พร้อมกับการอ้างอิงถึงแอสเซมบลีของระบบ เมื่อเริ่มโครงการใหม่ใน Microsoft VIiual Studio คุณจะได้รับไฟล์ .csproj หนึ่งไฟล์พร้อมกับไฟล์โซลูชันหลัก (.sln) หากมีแอสเซมบลีมากกว่าหนึ่งโปรเจ็กต์ จะมีไฟล์โปรเจ็กต์ในจำนวนที่เท่ากัน โดยที่ไฟล์ .sln จะรวมไฟล์ทั้งหมดเข้าด้วยกันเป็นส่วนหนึ่งของโปรเจ็กต์ เนื้อหาของไฟล์นี้กำหนดข้อกำหนดทั้งหมดที่จำเป็นในการสร้างโครงการ เช่น เนื้อหาที่จะรวม ข้อกำหนดของ Platfrom ข้อมูลการกำหนดเวอร์ชัน การตั้งค่าเว็บเซิร์ฟเวอร์หรือเซิร์ฟเวอร์ฐานข้อมูล และงานที่ต้องดำเนินการ เนื้อหาของไฟล์โครงการถูกจัดเรียงในรูปแบบไฟล์ XML และสามารถเปิดในโปรแกรมแก้ไขข้อความใดก็ได้เพื่อแก้ไขรวมทั้งดู นอกจากนี้ยังให้มุมมองเชิงตรรกะแก่ไฟล์โครงการเพื่อการจัดเรียงที่เหมาะสม
CSPROJ รูปแบบไฟล์
นักพัฒนาสามารถสร้างไฟล์โครงการได้ด้วยตนเอง รวมทั้งใช้ MSBuild XML Schema โครงสร้างแบบเปิดและโปร่งใสของไฟล์โครงการช่วยให้นักพัฒนาแอปพลิเคชันกำหนดวิธีการสร้างและปรับใช้โครงการที่ซับซ้อนและละเอียด เนื้อหาของไฟล์โครงการดังกล่าวมีความสัมพันธ์ที่ชัดเจนระหว่างกัน รูปภาพต่อไปนี้แสดงองค์ประกอบหลักและความสัมพันธ์ระหว่างองค์ประกอบเหล่านี้สำหรับไฟล์โครงการดังกล่าว
ส่วนต่อไปนี้อธิบายองค์ประกอบของรูปแบบไฟล์สำหรับไฟล์โครงการ
องค์ประกอบโครงการ
องค์ประกอบ Project เป็นองค์ประกอบรากของทุกไฟล์โครงการ โดยจะระบุ XML schema สำหรับไฟล์โครงการและสามารถรวมแอตทริบิวต์เพื่อระบุจุดเข้าใช้งานสำหรับกระบวนการสร้าง
<Project ToolsVersion#"4.0" DefaultTargets#"FullPublish"
xmlns#"http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
คุณสมบัติและเงื่อนไข
คุณสมบัติแสดงถึงข้อมูลที่จำเป็นในการสร้างโครงการ คุณสมบัติดังกล่าวถูกกำหนดไว้ในองค์ประกอบ PropertyGroup คุณสมบัติเหล่านี้ประกอบด้วยคู่คีย์-ค่าโดยที่ชื่ออิลิเมนต์คุณสมบัติกำหนดคีย์คุณสมบัติ และเนื้อหาของอิลิเมนต์กำหนดค่าคุณสมบัติ ตัวอย่างเช่น คุณสามารถกำหนดคุณสมบัติชื่อ ServerName และ ConnectionString เพื่อจัดเก็บชื่อเซิร์ฟเวอร์แบบสแตติกและสตริงการเชื่อมต่อ
<PropertyGroup>
<ServerName>FABRIKAM\TEST1</ServerName>
<ConnectionString>
Data Source#FABRIKAM\TESTDB;InitialCatalog#ContactManager,...
</ConnectionString>
</PropertyGroup>
สามารถระบุเงื่อนไขผ่านองค์ประกอบเพื่อระบุเกณฑ์ในการประเมินองค์ประกอบ สิ่งนี้ระบุด้วยคำเงื่อนไขในขณะที่กำหนดคุณสมบัติที่แสดงด้านล่าง:
<PropertyGroup>
<OutputRoot Condition#" '$(OutputRoot)'##'' ">..\Publish\Out\</OutputRoot>
...
</PropertyGroup>
เมื่อ MSBuild ประมวลผลข้อกำหนดคุณสมบัตินี้ ขั้นแรกจะตรวจสอบเพื่อดูว่ามีค่าคุณสมบัติ $(OutputRoot) พร้อมใช้งานหรือไม่ หากค่าคุณสมบัติว่างเปล่า กล่าวคือ ผู้ใช้ไม่ได้ระบุค่าสำหรับคุณสมบัตินี้ เงื่อนไขจะประเมินเป็น จริง และค่าคุณสมบัติจะถูกตั้งค่าเป็น ..\Publish\Out.
รายการและกลุ่มรายการ
ไฟล์โครงการกำหนดอินพุตสำหรับกระบวนการสร้างซึ่งเป็นไฟล์ประเภทต่างๆ ในระบบการตั้งชื่อ MSBuild อินพุตเหล่านี้แสดงด้วยองค์ประกอบ Item และถูกกำหนดภายในองค์ประกอบ ItemGroup เช่นเดียวกับองค์ประกอบ คุณสมบัติ คุณสามารถตั้งชื่อองค์ประกอบ รายการ ได้ตามต้องการ อย่างไรก็ตาม คุณต้องระบุแอตทริบิวต์ รวม เพื่อระบุไฟล์หรือไวด์การ์ดที่รายการนั้นเป็นตัวแทน
<ItemGroup>
<ProjectsToBuild Include#"$(SourceRoot)ContactManager-WCF.sln"/>
</ItemGroup>
เป้าหมายและงาน
องค์ประกอบ งาน แสดงถึงคำสั่งการสร้างแต่ละรายการ (หรืองาน) MSBuild มีงานที่กำหนดไว้ล่วงหน้ามากมาย ตัวอย่างเช่น:
- งาน คัดลอก คัดลอกไฟล์ไปยังตำแหน่งใหม่
- งาน Csc เรียกใช้คอมไพเลอร์ Visual C#
- งาน Vbc เรียกใช้คอมไพเลอร์ Visual Basic
- งาน Exec รันโปรแกรมที่ระบุ
- งาน ข้อความ เขียนข้อความไปยังคนบันทึก
งานต้องอยู่ภายในองค์ประกอบ Target เสมอ องค์ประกอบ เป้าหมาย คือชุดของงานอย่างน้อยหนึ่งงานที่มีการดำเนินการตามลำดับ และไฟล์โครงการสามารถมีเป้าหมายได้หลายรายการ
<Project xmlns#"http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name#"LogMessage">
<Message Text#"Hello world!" />
</Target>
</Project>