Project Assembly Info Project Properties Info Learning

Assembly Information and Properties for .NET Projects

AssemblyInfo.cs ซึ่งเป็นไฟล์ที่ใช้เก็บข้อมูลเกี่ยวกับ Assembly หรือไลบรารีของโปรเจกต์

Assembly Information and Properties for .NET Projects
Ake SuwaphanAke Suwaphan
29 March 2024

Assembly Information and Properties for .NET Projects

ใน Visual Studio 2022 เราสามารถเขียน Assembly Information ได้โดยใช้ไฟล์ AssemblyInfo.cs ซึ่งเป็นไฟล์ที่ใช้เก็บข้อมูลเกี่ยวกับ Assembly หรือไลบรารีของโปรเจกต์ ซึ่งรวมถึงเวอร์ชั่นของโปรเจกต์ ข้อมูลลิขสิทธิ์ และคำอธิบายเกี่ยวกับโครงการ

ไฟล์ AssemblyInfo.cs อยู่ภายในโฟลเดอร์ Properties ของโปรเจกต์ Class Library และสามารถเข้าถึงได้โดยการดับเบิลคลิกที่โฟลเดอร์ Properties ใน Visual Studio Solution Explorer แล้วคลิกที่ไฟล์ AssemblyInfo.cs เพื่อเข้าไปแก้ไข

สำหรับค่าต่างๆ ใน Assembly Information จะมีความหมายดังนี้

1. AssemblyTitle: คำอธิบายเกี่ยวกับ Assembly

2. AssemblyDescription: บริษัทหรือองค์กรที่เป็นเจ้าของหรือพัฒนา Assembly

3. AssemblyCompany: ชื่อของ Assembly หรือไลบรารี

4. AssemblyProduct: ชื่อของผลิตภัณฑ์หรือโปรแกรมที่มาพร้อมกับ Assembly

5. AssemblyVersion: เวอร์ชั่นของ Assembly ซึ่งปกติจะถูกใช้ในการระบุเวอร์ชันของโปรแกรม

6. AssemblyFileVersion: เวอร์ชันของไฟล์ของ Assembly

7. AssemblyTrademark: ลิขสิทธิ์หรือเครื่องหมายการค้าที่เกี่ยวข้องกับ Assembly

8. AssemblyCulture: ค่าทางวัฒนธรรมของ Assembly เช่น en-US หรือ th-TH ฯลฯ

การระบุข้อมูลเหล่านี้ช่วยให้สามารถระบุข้อมูลของ Assembly หรือไลบรารีได้อย่างชัดเจนและสามารถนำไปใช้ในการอ้างอิงหรือการเผยแพร่โครงการได้ในภายหลัง

หากไม่มีไฟล์ AssemblyInfo.cs ในโปรเจ็กต์ของคุณ คุณสามารถสร้างไฟล์ AssemblyInfo.cs เพิ่มเองได้ โดยทำดังนี้

1. เปิดโปรเจ็กต์ของคุณใน Visual Studio

2. คลิกขวาที่โฟลเดอร์ Properties ใน Solution Explorer

3. เลือก Add > New Item

4. ในกล่องค้นหา Templates ค้นหา "Assembly Info File"

5. เลือก "Assembly Info File" จากผลการค้นหา

6. คลิก Add

ด้วยขั้นตอนนี้เราจะสร้างไฟล์ AssemblyInfo.cs ในโปรเจกต์ของเราแล้ว และเราสามารถแก้ไขข้อมูลต่างๆ ในไฟล์นี้ตามที่เราต้องการได้ ไฟล์ AssemblyInfo.cs เป็นไฟล์ที่ใช้เก็บข้อมูลเกี่ยวกับ Assembly หรือไลบรารีของโปรเจกต์ .NET ซึ่งใช้ในการระบุข้อมูลต่างๆ เช่น เวอร์ชั่น ชื่อผลิตภัณฑ์ ข้อมูลลิขสิทธิ์ เป็นต้น ตัวอย่างการเขียนไฟล์ AssemblyInfo.cs


using System;
using System.Reflection;
using System.Runtime.InteropServices;

[assembly: AssemblyTitle("MyLibrary")]
[assembly: AssemblyDescription("This is a sample library.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("MyCompany")]
[assembly: AssemblyProduct("MyProduct")]
[assembly: AssemblyCopyright("Copyright © MyCompany")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// In SDK-style projects such as this one, several assembly attributes that were historically
// defined in this file are now automatically added during build and populated with
// values defined in project properties. For details of which attributes are included
// and how to customise this process see: https://aka.ms/assembly-info-properties


// Setting ComVisible to false makes the types in this assembly not visible to COM
// components.  If you need to access a type in this assembly from COM, set the ComVisible
// attribute to true on that type.

[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM.

[assembly: Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")]

  • ในตัวอย่างด้านบนนี้
    • AssemblyTitle: ชื่อของ Assembly หรือไลบรารี
    • AssemblyDescription: คำอธิบายเกี่ยวกับ Assembly
    • AssemblyConfiguration: ข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าของ Assembly
    • AssemblyCompany: บริษัทหรือองค์กรที่เป็นเจ้าของหรือพัฒนา Assembly
    • AssemblyProduct: ชื่อของผลิตภัณฑ์หรือโปรแกรมที่มาพร้อมกับ Assembly
    • AssemblyVersion: เวอร์ชั่นของ Assembly
    • AssemblyFileVersion: เวอร์ชั่นของไฟล์ของ Assembly
    • ComVisible: ระบุว่าคอมโพเนนต์ใน Assembly สามารถมองเห็นได้จาก COM components หรือไม่
    • Guid: รหัสที่ใช้ระบุไฟล์ของ Assembly ในกรณีที่ต้องการใช้งานผ่าน COM components

ในโปรเจกต์ Class Library ใน Visual Studio 2022 มี Properties ที่สามารถตั้งค่าเพื่อกำหนดค่าต่างๆ ของโปรเจกต์ได้ตามต้องการ ดังนี้

1. Application: ส่วนนี้ใช้สำหรับกำหนดค่าที่เกี่ยวข้องกับแอปพลิเคชันเช่น เลือก Target Framework, Output Type (เช่น Class Library, Console Application, หรือ Windows Application), Startup Object และค่าอื่นๆ ที่เกี่ยวข้องกับการรันแอปพลิเคชัน

ใน Visual Studio 2022 ส่วนของ Properties ใน Class Library Project ใช้สำหรับกำหนดค่าที่เกี่ยวข้องกับโครงการหรือแอปพลิเคชันของเรา ซึ่งส่วนนี้สามารถเข้าถึงได้โดยการคลิกขวาที่โปรเจกต์ใน Solution Explorer และเลือก Properties หรือจากเมนู Project ด้านบนแล้วเลือก Properties

  • ตัวอย่างของการตั้งค่าที่สามารถกำหนดในส่วน Application Properties
    • Assembly Information: สำหรับกำหนดข้อมูลเกี่ยวกับ Assembly หรือไลบรารี เช่น ชื่อ, เวอร์ชัน, บริษัท, คำอธิบาย เป็นต้น
    • Target Framework: ใช้สำหรับเลือก .NET Framework หรือ .NET Core ที่เป็นเป้าหมายของโปรเจกต์
    • Output Type: กำหนดประเภทของไฟล์ผลลัพธ์ที่จะสร้าง เช่น Class Library (.dll), Console Application (.exe) หรือ Windows Application (.exe)
    • Startup Object: ใช้กำหนดคลาสหรือไฟล์ที่เป็นจุดเริ่มต้นของโปรแกรม เมื่อโปรแกรมถูกเรียกใช้งาน
    • Application Icon: ใช้กำหนดไอคอนที่จะใช้แสดงผลของโปรแกรมในแถบงานหรือโปรแกรม
    • Assembly Name: ชื่อของ Assembly หรือไลบรารีที่จะสร้าง
    • Default Namespace: ชื่อของเนมสเปซที่ถูกใช้เป็นค่าเริ่มต้นสำหรับคลาสในโปรเจกต์
    • Startup URI: กำหนดหน้าหลักที่จะโหลดเมื่อแอปพลิเคชันถูกเรียกใช้งาน
    • Application Culture: กำหนดว่าแอปพลิเคชันจะใช้ภาษาหรือวัฒนธรรมใด
    • Application Settings: ชุดค่าที่สามารถกำหนดค่าได้โดยใช้ Application Settings Designer เพื่อใช้ในโปรแกรม
    • Build Events: สามารถกำหนดคำสั่งที่จะถูกดำเนินการก่อนหรือหลังการสร้างโปรแกรมได้ เช่น คัดลอกไฟล์ สร้างโฟลเดอร์ เป็นต้น

การตั้งค่าทั้งหมดนี้จะมีผลต่อวิธีการทำงานและการแสดงผลของโปรเจกต์หรือแอปพลิเคชันของเราใน Visual Studio และระหว่างการสร้างหรือดำเนินการทดสอบโปรแกรม

2. Build: ส่วนนี้ใช้สำหรับกำหนดค่าที่เกี่ยวข้องกับการ Build โปรเจกต์ เช่น การกำหนด Configuration, Platform, การกำหนด Output Path และค่าอื่นๆ เกี่ยวกับการ Build โปรเจกต์

ใน Visual Studio ส่วนของ Build ใช้สำหรับกำหนดค่าที่เกี่ยวข้องกับการ Build โปรเจกต์ ซึ่งส่วนนี้เป็นส่วนที่สำคัญในการกำหนดวิธีการสร้างโปรแกรมและตัวเลือกที่เกี่ยวข้องกับกระบวนการ Build ของโปรเจกต์

  • ตัวอย่างของการตั้งค่าที่สามารถกำหนดได้ในส่วนของ Build
    • Configuration: กำหนดการ Build ตาม Configuration ที่เลือก เช่น Debug หรือ Release โดยส่วนนี้มักจะมีการกำหนดค่าต่างๆ เช่น การตั้งค่าตัวแปรสภาพแวดล้อม หรือการเลือกใช้ไฟล์การกำหนดค่าที่แตกต่างกันระหว่าง Debug และ Release
    • Platform: กำหนด Platform หรือระบบปฏิบัติการที่เป็นเป้าหมายของการ Build เช่น x86 x64 และ Any CPU เป็นต้น
    • Conditional Compilation Symbols: สามารถกำหนดสัญลักษณ์การคอมไพล์ที่เงื่อนไขได้ เพื่อทำการแยกแยะระหว่างการ Build ตามเงื่อนไขที่กำหนด เช่น เวอร์ชันของซอฟต์แวร์
    • Output path: กำหนดที่เก็บไฟล์ผลลัพธ์ที่สร้างขึ้นจากการ Build
    • XML documentation file: กำหนดชื่อและที่เก็บไฟล์ XML ที่ใช้เก็บข้อมูลเอกสาร API สำหรับโปรแกรม
    • Advanced Build Settings: มีตัวเลือกเพิ่มเติมที่เกี่ยวข้องกับการ Build อย่างละเอียด เช่นการปรับแต่งการทำงานของโปรแกรม MSBuild

การตั้งค่าที่ใช้ในส่วนของ Build จะมีผลต่อกระบวนการ Build และผลลัพธ์ที่ได้จากการสร้างโปรแกรมของเราใน Visual Studio

3. Debug: ส่วนนี้ใช้สำหรับกำหนดค่าที่เกี่ยวข้องกับการ Debug โปรเจกต์ เช่น การกำหนด Command line arguments, Working directory, Environment variables และค่าอื่นๆ เพื่อใช้ในขณะที่ Debug โปรเจกต์

ใน Visual Studio ส่วนของ Debug ใช้สำหรับกำหนดค่าที่เกี่ยวข้องกับการ Debug โปรเจกต์ โดยส่วนนี้จะมีตัวเลือกที่ช่วยให้เราปรับแต่งการ Debug โปรแกรมของเราให้เหมาะสมและมีประสิทธิภาพมากที่สุด

  • ตัวอย่างของการตั้งค่าที่สามารถกำหนดได้ในส่วนของ Debug
    • Start Action: กำหนดการเริ่มต้นของโปรแกรมเมื่อเริ่ม Debug เช่น การเริ่มต้นแอปพลิเคชันหรือการเชื่อมต่อกับโปรแกรมอื่น
    • Start external program: ระบุเส้นทางไปยังโปรแกรมภายนอกที่ต้องการเริ่มต้น
    • Command line arguments: กำหนดอาร์กิวเมนต์ของ command line ที่ใช้เริ่มต้นโปรแกรม
    • Working directory: กำหนดไดเรกทอรีที่เป็นเส้นทางเริ่มต้นสำหรับโปรแกรมที่ใช้เวลา Debug
    • Enable native code debugging: เปิดหรือปิดการ Debug รหัสเครื่องหลัก (Native code debugging)
    • Enable SQL Server debugging: เปิดหรือปิดการ Debug กับ SQL Server
    • Remote debugging: กำหนดการ Debug จากระยะไกลโดยการเชื่อมต่อกับโปรแกรมที่รันบนเครื่องที่ต่างกัน
    • Debugger type: กำหนดชนิดของ Debugger ที่จะใช้ เช่น Managed Only Debugger, Mixed หรือ Native Only Debugger
    • Enable Edit and Continue: เปิดหรือปิดความสามารถในการแก้ไขโค้ดขณะที่ Debugging

การตั้งค่าในส่วนของ Debug จะช่วยให้เราปรับแต่งกระบวนการ Debugging ให้เหมาะสมกับความต้องการของโปรแกรมของเราได้อย่างมีประสิทธิภาพและสะดวกสบาย

4. Package: ส่วนนี้ใช้สำหรับกำหนดค่าที่เกี่ยวข้องกับการ Package โปรเจกต์เพื่อทำเป็น NuGet Package หรือรูปแบบอื่นๆ โดยสามารถกำหนดค่าเกี่ยวกับ Package metadata เช่น Package id, Version, Authors, Description และค่าอื่นๆ

ใน Visual Studio, ส่วนของ Package ใช้สำหรับกำหนดค่าที่เกี่ยวข้องกับการ Package โปรเจกต์เพื่อทำเป็น NuGet Package หรือรูปแบบอื่น ๆ ที่ใช้ในการแพ็กเกจโปรเจกต์เพื่อนำไปใช้งานในโปรเจกต์อื่น ๆ โดยส่วนนี้จะมีตัวเลือกที่ช่วยให้เรากำหนดค่าเกี่ยวกับ Package metadata ซึ่งเป็นข้อมูลที่ใช้ในการระบุและแสดงรายละเอียดเกี่ยวกับ Package ของเรา

  • ตัวอย่างของการตั้งค่าที่สามารถกำหนดได้ในส่วนของ Package
    • Package ID: ระบุรหัสหรือชื่อที่ใช้ระบุ Package ของเรา
    • Package version: กำหนดเวอร์ชันของ Package
    • Authors: ระบุชื่อผู้เขียนหรือผู้พัฒนา Package
    • Owners: ระบุเจ้าของ Package หรือผู้รับผิดชอบ
    • Description: ให้คำอธิบายสั้น ๆ เกี่ยวกับ Package
    • Release Notes: ระบุข้อมูลเกี่ยวกับการเปลี่ยนแปลงที่สำคัญในแต่ละเวอร์ชัน
    • Tags: ระบุแท็กหรือคำสำคัญที่เกี่ยวข้องกับ Package เพื่อการค้นหา
    • Project URL: ระบุ URL ที่เกี่ยวข้องกับโปรเจกต์หรือ Package
    • License URL: ระบุ URL ที่เกี่ยวข้องกับข้อมูลใบอนุญาตของ Package
    • Icon URL: ระบุ URL ที่เกี่ยวข้องกับไอคอนของ Package

การตั้งค่าที่ใช้ในส่วนของ Package จะช่วยให้เรากำหนดข้อมูลที่จำเป็นสำหรับการนำ Package ไปใช้งานในโปรเจกต์อื่น ๆ อย่างถูกต้องและครบถ้วน

5. Publish: ส่วนนี้ใช้สำหรับกำหนดค่าที่เกี่ยวข้องกับการ Publish โปรเจกต์ เช่น การกำหนด Output directory, File publish options, Configuration, Platform, และค่าอื่นๆ เพื่อใช้ในการ Publish โปรเจกต์

ใน Visual Studio, ส่วนของ Publish ใช้สำหรับกำหนดค่าที่เกี่ยวข้องกับการ Publish โปรเจกต์ ซึ่งส่วนนี้มีตัวเลือกที่ช่วยให้เราปรับแต่งกระบวนการ Publish โปรแกรมของเราให้เหมาะสมและมีประสิทธิภาพมากที่สุด

  • ตัวอย่างของการตั้งค่าที่สามารถกำหนดได้ในส่วนของ Publish
    • Target Location: กำหนดตำแหน่งที่ต้องการ Publish ไฟล์ผลลัพธ์ เช่น บนเครื่องคอมพิวเตอร์, บนเซิร์ฟเวอร์ FTP, บน Azure หรือบน Docker
    • Configuration: เลือก Configuration ที่ต้องการ Publish เช่น Debug หรือ Release
    • Target Framework: กำหนด .NET Framework หรือ .NET Core ที่เป็นเป้าหมายของการ Publish
    • Deployment Mode: ระบุวิธีการ Deploy ไฟล์ของโปรแกรม เช่น Self-contained (เอาทุกอย่างไปด้วย), Framework-dependent (ใช้ framework ที่มีอยู่แล้ว)
    • Target Runtime: กำหนด Runtime ที่เป็นเป้าหมายของการ Publish เช่น Windows, Linux, macOS
    • Publish Method: เลือกวิธีการ Publish ไฟล์ เช่น Folder, Web Deploy, FTP, Azure, Docker
    • Publish Directory: กำหนดไดเร็กทอรีที่ต้องการ Publish ไฟล์ลงไป
    • Exclude files from the App_Data folder: เลือกการยกเว้นไฟล์ที่อยู่ในโฟลเดอร์ App_Data ในกรณีที่ไม่ต้องการ Publish ไฟล์เหล่านั้น
    • Precompile during publishing: เลือกการทำการ Compile ก่อนการ Publish เพื่อเตรียมไฟล์ให้พร้อมใช้งาน
    • Deployment mode: กำหนดโหมดการ Deploy ไฟล์ ได้แก่ Framework-dependent หรือ Self-contained

การตั้งค่าในส่วนของ Publish จะช่วยให้เรากำหนดข้อมูลที่จำเป็นสำหรับการ Publish โปรเจกต์ของเราให้เหมาะสมและสามารถใช้งานได้ในรูปแบบที่เราต้องการ

6. Code Analysis: ส่วนนี้ใช้สำหรับกำหนดค่าที่เกี่ยวข้องกับการวิเคราะห์โค้ด (Code Analysis) เช่น การเลือก Ruleset, การกำหนดสิ่งที่ต้องพิจารณาในการวิเคราะห์โค้ด และค่าอื่นๆ เพื่อใช้ในการปรับแต่งการวิเคราะห์โค้ดของโปรเจกต์

ใน Visual Studio ส่วนของ Code Analysis ใช้สำหรับกำหนดค่าที่เกี่ยวข้องกับการวิเคราะห์โค้ด (Code Analysis) ซึ่งเป็นกระบวนการที่ช่วยในการตรวจสอบโค้ดของเราเพื่อความถูกต้อง ปลอดภัย และประสิทธิภาพ โดยส่วนนี้มีตัวเลือกที่ช่วยให้เราปรับแต่งการวิเคราะห์โค้ดได้อย่างมีประสิทธิภาพ

  • ตัวอย่างของการตั้งค่าที่สามารถกำหนดได้ในส่วนของ Code Analysis
    • Rule Set: เลือกหรือกำหนดชุดกฎ (Rule Set) ที่ใช้ในการตรวจสอบโค้ด เช่น Microsoft Recommended Rules, All Rules หรือ Custom Rules
    • Code Quality Analysis: เปิดหรือปิดการวิเคราะห์เราภาพของโค้ด
    • Run this rule set during code analysis: เลือกการรันกฎที่กำหนดในชุดกฎขณะที่ทำการวิเคราะห์โค้ด
    • Suppress Results from Generated Code: เลือกที่จะซ่อนผลลัพธ์จากการวิเคราะห์โค้ดที่ถูกสร้างขึ้นโดยอัตโนมัติ
    • Treat Warnings as Errors: เปิดหรือปิดการทำให้คำเตือนเป็นข้อผิดพลาด
    • Enable Code Analysis on Build: เปิดหรือปิดการทำการวิเคราะห์โค้ดขณะที่ Build โปรเจกต์
    • Suppress active issues: กำหนดว่าต้องการปิดการแสดงผลของปัญหาที่พบขณะการวิเคราะห์โค้ดหรือไม่
    • Run on build (deprecated): เปิดหรือปิดการทำการวิเคราะห์โค้ดขณะที่ Build โปรเจกต์ (การใช้งานไม่แนะนำแล้ว)

การตั้งค่าที่ใช้ในส่วนของ Code Analysis จะช่วยให้เราสามารถกำหนดการวิเคราะห์โค้ดให้เป็นไปตามความต้องการและมีประสิทธิภาพที่สุดสำหรับโปรเจกต์ของเรา

การตั้งค่า Fields ใน Properties ของ Class Library Project ใน Visual Studio 2022 ช่วยให้เราสามารถกำหนดค่าต่างๆ ที่เกี่ยวข้องกับการ Build, Debug, Package และ Publish โปรเจกต์ได้อย่างเหมาะสมตามความต้องการของโปรเจกต์