ส่วนใหญ่คุณใช้สิ่งที่ Visual Studio กำหนดให้คุณเป็นค่าเริ่มต้น ... ฉันหมายถึงคุณสมบัติBuildActionสำหรับแต่ละไฟล์ที่เลือกในโซลูชัน Explorer มีตัวเลือกมากมายและมันยากที่จะรู้ว่าแต่ละคนจะทำอะไร
ส่วนใหญ่คุณใช้สิ่งที่ Visual Studio กำหนดให้คุณเป็นค่าเริ่มต้น ... ฉันหมายถึงคุณสมบัติBuildActionสำหรับแต่ละไฟล์ที่เลือกในโซลูชัน Explorer มีตัวเลือกมากมายและมันยากที่จะรู้ว่าแต่ละคนจะทำอะไร
คำตอบ:
ไม่มี : ไฟล์ไม่รวมอยู่ในกลุ่มเอาท์พุทโครงการและไม่ได้รวบรวมในกระบวนการสร้าง ตัวอย่างคือไฟล์ข้อความที่มีเอกสารประกอบเช่นไฟล์ Readme
คอมไพล์ : ไฟล์ถูกคอมไพล์ลงในเอาต์พุตบิลด์ การตั้งค่านี้ใช้สำหรับไฟล์รหัส
เนื้อหา : อนุญาตให้คุณดึงไฟล์ (ในไดเรกทอรีเดียวกับชุดประกอบ) เป็นสตรีมผ่าน Application.GetContentStream (URI) เพื่อให้วิธีการนี้ทำงานได้ต้องมีแอตทริบิวต์ที่กำหนดเองของ AssemblyAssociatedContentFile ซึ่ง Visual Studio จะเพิ่มอย่างสง่างามเมื่อคุณทำเครื่องหมายไฟล์เป็น "เนื้อหา"
ทรัพยากรที่ฝังตัว : ฝังไฟล์ในทรัพยากรรายการประกอบพิเศษ
ทรัพยากร (WPF เท่านั้น) : ฝังไฟล์ในที่แชร์ (โดยไฟล์ทั้งหมดในแอสเซมบลีที่มีการตั้งค่าที่คล้ายกัน) รายการรายการแอสเซมบลีชื่อ AppName.g.resources
หน้า (WPF เท่านั้น) : ใช้ในการรวบรวมไฟล์ลงในxaml
จะถูกฝังอยู่แล้วด้วยเทคนิคเดียวกับ(เช่นสามารถใช้ได้เป็น `AppName.g.resources)baml
baml
Resource
ApplicationDefinition (WPF เท่านั้น) : ทำเครื่องหมายไฟล์ XAML / คลาสที่กำหนดแอปพลิเคชันของคุณ คุณระบุ code-behind ด้วย x: Class = "Namespace.ClassName" และตั้งค่าฟอร์ม / หน้าเริ่มต้นด้วย StartupUri = "Window1.xaml"
SplashScreen (WPF เท่านั้น) : รูปภาพที่ทำเครื่องหมายว่าSplashScreen
แสดงโดยอัตโนมัติเมื่อโหลดแอปพลิเคชัน WPF แล้วจางหายไป
DesignData : รวบรวม XAML viewmodels เพื่อให้ผู้ใช้สามารถแสดงตัวอย่างด้วยข้อมูลตัวอย่างใน Visual Studio (ใช้ชนิดจำลอง)
DesignDataWithDesignTimeCreatableTypes : คอมไพล์ XAML viewmodels เพื่อให้ผู้ใช้สามารถแสดงตัวอย่างด้วยข้อมูลตัวอย่างใน Visual Studio (ใช้ชนิดจริง)
EntityDeploy : (Entity Framework) : ใช้เพื่อปรับใช้สิ่งประดิษฐ์ Entity Framework
CodeAnalysisDictionary : ไฟล์ XML ที่มีพจนานุกรมคำที่กำหนดเองสำหรับกฎการสะกดคำ
AdditionalFiles
อะไร ฉันเห็นมันใน VS 2015 แต่ไม่พบการอ้างอิงสำหรับสิ่งนั้น
จากเอกสาร:
คุณสมบัติ BuildAction ระบุว่า Visual Studio ทำอะไรกับไฟล์เมื่อมีการสร้างบิลด์ BuildAction สามารถมีหนึ่งในหลายค่า:
ไม่มี - ไฟล์ไม่รวมอยู่ในกลุ่มเอาท์พุทโครงการและไม่ได้รวบรวมในกระบวนการสร้าง ตัวอย่างคือไฟล์ข้อความที่มีเอกสารประกอบเช่นไฟล์ Readme
คอมไพล์ - ไฟล์ถูกคอมไพล์ลงในเอาต์พุตบิลด์ การตั้งค่านี้ใช้สำหรับไฟล์รหัส
เนื้อหา - ไฟล์ไม่ได้รวบรวม แต่รวมอยู่ในกลุ่มเอาท์พุทเนื้อหา ตัวอย่างเช่นการตั้งค่านี้เป็นค่าเริ่มต้นสำหรับ. htm หรือไฟล์เว็บชนิดอื่น
ทรัพยากรที่ฝังตัว - ไฟล์นี้จะถูกฝังอยู่ในผลลัพธ์การสร้างโครงการหลักเป็น DLL หรือปฏิบัติการได้ โดยทั่วไปจะใช้สำหรับไฟล์ทรัพยากร
หน้า - ใช้ไฟล์ XAML ที่ระบุและคอมไพล์ลงใน BAML และฝังเอาต์พุตนั้นลงในสตรีมทรัพยากรที่มีการจัดการสำหรับชุดประกอบของคุณ (โดยเฉพาะ AssemblyName.g.resources), นอกจากนี้หากคุณมีแอตทริบิวต์ที่เหมาะสมในองค์ประกอบ XAML รูทใน ไฟล์มันจะสร้างไฟล์ blah.g.cs ซึ่งจะมีคลาสบางส่วนของ "codebehind" สำหรับหน้านั้น สิ่งนี้จำเป็นต้องมีการเรียกไปยัง BAML goop เพื่อเติมความชุ่มชื้นให้กับไฟล์ในหน่วยความจำอีกครั้งและตั้งค่าตัวแปรสมาชิกของคลาสของคุณให้เป็นไอเท็มที่สร้างขึ้นตอนนี้ (เช่นถ้าคุณใส่ x: Name = "foo") คุณจะสามารถทำสิ่งนี้ได้ข้อ จำกัด พื้นหลัง = ม่วงหรือที่คล้ายกัน
ApplicationDefinition - คล้ายกับหน้ายกเว้นว่าจะไปถึงขั้นตอนถัดไปและกำหนดจุดเริ่มต้นสำหรับแอปพลิเคชันของคุณที่จะสร้างอินสแตนซ์ออบเจ็กต์แอปของคุณเรียกใช้บนมันซึ่งจะสร้างอินสแตนซ์ประเภทที่กำหนดโดยคุณสมบัติ StartupUri .
นอกจากนี้เพื่อความชัดเจนคำถามนี้โดยรวมจะติดอยู่ในชุดผลลัพธ์ ทุกคนสามารถกำหนด BuildActions เพิ่มเติมได้เพียงแค่สร้างงาน MSBuild หากคุณดูในไดเรกทอรี% systemroot% \ Microsoft.net \ framework \ v {version} \ และดูที่ไฟล์ Microsoft.Common.targets คุณควรจะถอดรหัสอีกมากมาย (ตัวอย่างเช่น VS Pro ขึ้นไป มีการกระทำ "เงา" ที่อนุญาตให้คุณสร้าง accessors ส่วนตัวเพื่อช่วยในการทดสอบคลาสส่วนตัว
VS2010 มีคุณสมบัติสำหรับ 'Build Action' และสำหรับ 'Copy to Output Directory' การกระทำของ 'ไม่มี' จะยังคงคัดลอกไปยังไดเรกทอรีการสร้างหากคุณสมบัติการคัดลอกถูกตั้งค่าเป็น 'คัดลอกถ้าใหม่กว่า' หรือ 'คัดลอกเสมอ'
ดังนั้นควรสร้าง Build Action ของ 'เนื้อหา' เพื่อระบุเนื้อหาที่คุณจะเข้าถึงผ่าน 'Application.GetContentStream'
ฉันใช้การตั้งค่า 'Build Action' ของ 'None' และ 'Copy to Output Direcotry' การตั้งค่าของ 'Copy if Newer' สำหรับการเชื่อมโยงภายนอก. config
กรัม
ใน VS2008 รายการเอกสารที่ดูเหมือนว่ามีประโยชน์มากที่สุดคือ:
Windows Presentation Foundation การสร้างแอปพลิเคชัน WPF (WPF)
MS-ความช่วยเหลือ: //MS.VSCC.v90/MS.MSDNQTR.v90.en/wpf_conceptual/html/a58696fd-bdad-4b55-9759-136dfdf8b91c.htm
ApplicationDefinition ระบุไฟล์มาร์กอัป XAML ที่มีข้อกำหนดของแอปพลิเคชัน (ไฟล์มาร์กอัป XAML ที่มีองค์ประกอบรากคือแอปพลิเคชัน) ApplicationDefinition เป็นสิ่งจำเป็นเมื่อการติดตั้งเป็นจริงและ OutputType คือ winexe แอปพลิเคชัน WPF และดังนั้นโครงการ MSBuild สามารถมี ApplicationDefinition เดียวเท่านั้น
หน้าระบุไฟล์มาร์กอัป XAML ที่เนื้อหาถูกแปลงเป็นรูปแบบไบนารีและเรียบเรียงเป็นชุดประกอบ โดยทั่วไปรายการเพจจะถูกนำไปใช้ร่วมกับคลาสที่ใช้โค้ด
รายการเพจที่พบบ่อยที่สุดคือไฟล์ XAML ที่มีองค์ประกอบระดับบนสุดดังต่อไปนี้:
Window (System.Windows..::.Window).
Page (System.Windows.Controls..::.Page).
PageFunction (System.Windows.Navigation..::.PageFunction<(Of <(T>)>)).
ResourceDictionary (System.Windows..::.ResourceDictionary).
FlowDocument (System.Windows.Documents..::.FlowDocument).
UserControl (System.Windows.Controls..::.UserControl).
ทรัพยากรระบุไฟล์ทรัพยากรที่รวบรวมไว้ในชุดแอปพลิเคชัน ตามที่กล่าวไว้ก่อนหน้านี้ UICulture ประมวลผลรายการทรัพยากร
เนื้อหาระบุไฟล์เนื้อหาที่แจกจ่ายด้วยแอปพลิเคชัน ข้อมูลเมตาที่อธิบายไฟล์เนื้อหาถูกคอมไพล์ลงในแอปพลิเคชัน (โดยใช้ AssemblyAssociatedContentFileAttribute)
วิธีการเกี่ยวกับหน้านี้จาก Microsoft Connect (อธิบายประเภท DesignData และ DesignDataWithDesignTimeCreatableTypes) พิเศษ:
ข้อมูลต่อไปนี้อธิบายถึง Build Buildions สองไฟล์สำหรับ Sample Data
ข้อมูลตัวอย่างไฟล์. xaml จะต้องกำหนดหนึ่งใน Build Actions ด้านล่าง:
DesignData :ประเภทข้อมูลตัวอย่างจะถูกสร้างขึ้นเป็นประเภทมารยาท ใช้ Build Action นี้เมื่อชนิดข้อมูลตัวอย่างไม่สามารถสร้างได้หรือมีคุณสมบัติแบบอ่านอย่างเดียวที่คุณต้องการกำหนดค่าข้อมูลตัวอย่างสำหรับ
DesignDataWithDesignTimeCreatableTypes :ประเภทข้อมูลตัวอย่างจะถูกสร้างขึ้นโดยใช้ประเภทที่กำหนดไว้ในไฟล์ข้อมูลตัวอย่าง ใช้ Build Action นี้เมื่อชนิดข้อมูลตัวอย่างสามารถสร้างได้โดยใช้ Constructor เปล่าที่เป็นค่าเริ่มต้น
ไม่ได้เพื่อให้ครบถ้วนสมบูรณ์อย่างไม่น่าเชื่อ แต่ก็อย่างน้อยจะช่วยให้คำแนะนำ คำแนะนำแบบ MSDNนี้ยังให้แนวคิดบางอย่าง ฉันไม่ทราบว่าคำสั่งสร้างเหล่านี้ใช้ได้กับโครงการที่ไม่ใช่ Silverlight หรือไม่