คำตอบที่เลือกแสดงให้เห็นว่าเป็นไปได้ที่จะใช้โครงการจริงแทนโฟลเดอร์โซลูชัน แต่ไม่ได้อธิบายวิธีการจริงๆ ฉันเดาว่าสิ่งที่ฉันอธิบายที่นี่อาจเป็นวิธีที่น่าอึดอัดน้อยที่สุดในการบรรลุเป้าหมายนั้น ... :-P
ปัญหาเกี่ยวกับไฟล์โครงการปกติคือในที่สุดไฟล์จะถูกรวบรวมโดยMSBUILD
. และถ้าคุณต้องการมีโปรเจ็กต์ที่มีเฉพาะไฟล์ที่คอมไพล์ไม่ได้นั่นจะเป็นปัญหา
แต่เมื่อไม่นานมานี้ Visual Studio ได้เปิดตัวประเภทโครงการใหม่: Shared Project (.shproj extension) ประเภทโครงการนี้ไม่ได้รับการคอมไพล์ตามค่าเริ่มต้น แต่เฉพาะเมื่อ (และต่อเมื่อ) ถูกอ้างถึงโดยโครงการอื่น
ดังนั้นส่วนหนึ่งของเคล็ดลับที่นี่คือการใช้โครงการที่ใช้ร่วมกันแทนโฟลเดอร์แก้ปัญหา เห็นได้ชัดว่าเป็นไปได้ที่จะเพิ่มโครงการที่ใช้ร่วมกันซึ่งไม่มีการอ้างถึงโดยโครงการอื่นซึ่งหมายความว่าเราสามารถหลีกเลี่ยงปัญหาที่นำเสนอข้างต้นได้
จากนั้นโดยใช้<None Include="**/*" />
ประโยคในแฟ้ม .shproj เราสามารถทำให้มันโดยอัตโนมัติสะท้อนให้เห็นถึงไฟล์ใหม่ใด ๆ และ / หรือโฟลเดอร์ย่อย
โดยทั่วไปให้ทำสิ่งนี้:
- สร้างโฟลเดอร์ใหม่ในโซลูชันของคุณ
- เพิ่มไฟล์. shproj ใหม่ที่รากของโฟลเดอร์ใหม่นี้
- อ้างอิง. shproj ใหม่ในโซลูชันของคุณ
ตัวอย่างเช่นในกรณีของฉันฉันได้สร้าง DockerDev.shproj ดังนั้นฉันจึงสามารถจัดกลุ่มสคริปต์ที่เกี่ยวข้องกับนักเทียบท่าที่เราเรียกใช้ในเครื่องพัฒนาของเราเท่านั้น:
<?xml version="1.0" encoding="utf-8"?>
<!-- DockerDev/DockerDev.shproj -->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<None Include="**/*" />
</ItemGroup>
</Project>
ไฟล์ .shproj นี้จะติดตามการใด ๆไฟล์ในใด ๆโฟลเดอร์ย่อยของใหม่นี้DockerDev
โฟลเดอร์ในการแก้ปัญหาของฉัน
เท่าที่ฉันเห็นโซลูชันนี้ใช้งานได้เหมือนกับสิ่งที่ OP ร้องขอ: มันจะทำงานเป็นการอ้างอิงที่ไม่สามารถรวบรวมไปยังโฟลเดอร์ได้และจะแสดงการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นโดยอัตโนมัติ