ฉันจะเพิ่มแผนผังไดเรกทอรีที่มีอยู่ให้กับโครงการใน Visual Studio ได้อย่างไร


824

ปัญหานี้ง่ายจริงๆ แทนที่จะสร้างโฟลเดอร์ใน Visual Studio ฉันสร้างโครงสร้างไดเรกทอรีสำหรับโครงการของฉันในระบบไฟล์ ฉันจะรวมโฟลเดอร์และไฟล์ทั้งหมดในโครงการโดยรักษาโครงสร้างได้อย่างไร

หากฉัน "เพิ่มไฟล์ที่มีอยู่" ในโฟลเดอร์ชื่อ Services และนำทางไปยังไฟล์ในโครงสร้างไดเรกทอรี .. บริการ> การจัดการบัญชี> CreateAccount.cs จะปรากฏใน Visual Studio ดังนี้: Services> CreateAccount.cs ฉันไม่ต้องการสิ่งนี้

ฉันมีโครงสร้างไดเรกทอรีทั้งหมดทำงานไปแล้วเนื่องจากฉันล้อเลียนนักพัฒนาลูกค้าของเราโดยใช้โครงสร้างเดียวกันสำหรับองค์กร ฉันจะเพิ่มโฟลเดอร์และไฟล์ทั้งหมดในโครงการใน Visual Studio ได้อย่างไร หรือฉันต้องทำสิ่งที่ผู้ใช้ Microsoft ส่วนใหญ่ทำและ "ทนต่อ" และสร้างทุกโฟลเดอร์ผ่าน Visual Studio?



คำตอบ:


1438

คุณต้องใส่โครงสร้างไดเรกทอรีในไดเรกทอรีโครงการ จากนั้นคลิกไอคอน "แสดงไฟล์ทั้งหมด" ที่ด้านบนของกล่องเครื่องมือ Solution Explorer หลังจากนั้นไดเรกทอรีที่เพิ่มเข้ามาจะปรากฏขึ้น จากนั้นคุณจะต้องเลือกไดเรกทอรีนี้คลิกขวาแล้วเลือก "รวมในโครงการ"

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


150
มีวิธีทำเช่นนี้กับไดเรกทอรี (ต้นไม้) นอกไดเรกทอรีโครงการหรือไม่
Imre

2
มีวิธีทำเช่นนี้สำหรับโฟลเดอร์ที่ไม่ใช่ไดเรกทอรีย่อยที่โครงการของคุณอยู่หรือไม่ เช่น: ให้ E: \ ProjectX \ project.vcproj รวมโฟลเดอร์ E: \ Common * .cs ??
Matt Connolly

4
เกือบจะได้ผล ฉันเห็นไดเรคทอรีต้นไม้และเพิ่มหลายไฟล์ แต่จะไม่ให้ฉันเพิ่มไดเรคทอรีทั้งหมด
ManicBlowfish

5
ปัญหาคือมันใช้ได้เฉพาะถ้าคุณคัดลอกทรีไดเรกทอรีในโครงการ Visual ของคุณผ่าน Windows Explorer คุณจะทำอย่างไรถ้าคุณต้องการอ้างอิงบางโฟลเดอร์และไฟล์ที่อยู่ในโครงการอื่นบนคอมพิวเตอร์ของคุณ
hico

5
วิธีเดียวที่ฉันรู้ที่จะทำนอกโครงการกำลังใช้ลิงก์สัญลักษณ์ ... ดูคำตอบของฉัน: stackoverflow.com/a/26537736/835561
Edyn

77

คุณยังสามารถลากและวางโฟลเดอร์จากWindows Explorerไปยังหน้าต่างโซลูชัน Visual Studio ของคุณ


14
สิ่งนี้ไม่ทำงานในการติดตั้ง VS 2010 บน Vista Ultimate 64 บิต
John Melville

13
ไม่ไม่ทำงานในการติดตั้ง VS 2010 ของฉันบน Windows 7 เช่นกัน
อา

9
การยืนยันสิ่งนี้ไม่ทำงานใน VS 2010 (โหมดที่ไม่ใช่ผู้ดูแลระบบ) เช่นกัน
David Gardiner

9
ฉันไม่คิดว่าพวกคุณทำถูกต้องแล้ว VS 2010 รองรับการลากและปล่อยโฟลเดอร์ ฉันทำตลอดเวลาเพื่อรวมชุดเครื่องมือของฉัน คุณต้องทำให้แน่ใจว่าคุณวางลงในแผนผังโครงการ แผงโซลูชันและโหนดโซลูชันเองจะไม่ได้รับการปล่อย ระบบปฏิบัติการไม่เกี่ยวข้องที่นี่ แต่สำหรับผู้สงสัยฉันใช้ Windows 7 64 บิต
Gavin Williams

4
"ไอเท็มโซลูชัน" แตกต่างจากการเพิ่มไอเท็มในโครงการ รายการโซลูชันเป็นโฟลเดอร์พิเศษภายในโซลูชัน VS
ทอดด์สมิ ธ

53

ใน Visual Studio 2015 นี่เป็นวิธีที่คุณทำ

หากคุณต้องการรวมไฟล์ที่สืบทอดทั้งหมดใต้โฟลเดอร์ที่ระบุโดยอัตโนมัติ:

<Content Include="Path\To\Folder\**" />

สิ่งนี้สามารถถูก จำกัด ให้รวมเฉพาะไฟล์ภายในเส้นทางที่ระบุ:

<Content Include="Path\To\Folder\*.*" />

หรือแม้กระทั่งไฟล์ที่มีนามสกุลเท่านั้น:

<Content Include="Path\To\Folder\*.jpg" >

การอ้างอิง: http://jamesrpatterson.com/blog/automatic-include-in-project-for-visual-studio


3
ฉันพบว่ามีประโยชน์เพราะฉันสามารถรวมแท็กเดียวสำหรับ "copy always on build" แทนที่จะต้องใส่คำอธิบายประกอบทุกไฟล์ (เช่นกรณีในคำตอบที่ยอมรับ)
Gordon Bean

3
IMO หนึ่งในคำตอบที่มีประโยชน์ที่สุดที่นี่
สินใจ

มันเพิ่มที่ไหน? คุณจะดู XML ใน VS ได้อย่างไร
Matthew Dean

1
นี่เป็นทางออกที่ดีที่สุดเมื่อคุณต้องการเพิ่มโฟลเดอร์ลำดับชั้นขนาดใหญ่ในขณะที่ Visual Studio ไม่ตอบสนอง & หยุดการทำงาน
Gowtham Alan

1
มันเป็นความอัปยศในทีม Microsoft VS
dejjub-AIS

33

คัดลอกและวาง

ในการเพิ่มโฟลเดอร์ไดเรกทอรีย่อยทั้งหมดและไฟล์ที่เราสามารถคัดลอกและวาง ตัวอย่างเช่นเราสามารถ:

  1. คลิกขวาใน Windows explorer บนโฟลเดอร์และคัดลอกบนโฟลเดอร์ที่มีไฟล์และโฟลเดอร์มากมาย

  2. จากนั้นใน Visual Studio Solution explorer ให้คลิกขวาที่โฟลเดอร์ปลายทางแล้วคลิกวาง

  3. เพิ่มตัวเลือกใน TFS; จากนั้นในโฟลเดอร์บนสุดให้คลิกขวาและเช็คอินที่ TFS เพื่อเช็คอินโฟลเดอร์ย่อยและไฟล์ทั้งหมด


สิ่งนี้ใช้ได้สำหรับฉัน แต่การลากและวางไม่ทำงานใน VS14 และ Windows 10 pro
Mona Jalal

1
การลากและวางอาจไม่ทำงานจนกว่าคุณจะเรียกใช้ VS ในฐานะผู้ดูแลระบบ
RThomas

18

คุณสามารถใช้ลิงก์สัญลักษณ์ สิ่งนี้ทำให้การแก้ไขไฟล์ในโครงการหนึ่งแก้ไขได้ในอีกโครงการหนึ่ง (เนื่องจากเป็นไฟล์เดียวกัน)

เพื่อทำสิ่งนี้:

  1. เปิด cmd prompt ในฐานะผู้ดูแลระบบ
  2. mklink / d [ชื่อไดเรกทอรีโครงการปัจจุบัน] [ไดเรกทอรีในโครงการอื่น ๆ ควรชี้ไปที่]

นี่เป็นข้อเสียและข้อผิดพลาด แต่ฉันใช้มันเป็นครั้งคราวสำหรับห้องสมุดซ้ำที่ต้องการชื่อต่างกัน

แก้ไขสำหรับ Anoop: ขั้นตอนในการเพิ่มไปยัง Visual Studio:

  1. สร้างลิงค์ในโฟลเดอร์โครงการโดยใช้ขั้นตอนข้างต้น
  2. ใน Visual Studio ... เลือกโครงการในโซลูชัน Explorer
  3. ที่ด้านบนของ Solution Explorer ... คลิกปุ่มแสดงไฟล์ทั้งหมด (อาจต้องคลิกสองครั้งหากใช้งานอยู่)
  4. ลิงค์นี้จะแสดงในโครงการของคุณ ... คลิกขวาและเลือกรวมในโครงการ

เหล่านี้เป็นขั้นตอนที่ฉันติดตามและทำงานให้กับโครงการที่แตกต่างกันสองสามอย่าง


มันไม่ทำงาน! ลิงก์สัญลักษณ์ไม่เป็นที่รู้จักในฐานะโฟลเดอร์
Anoop K. Prabhu

1
@Anoop: ฉันได้เพิ่มขั้นตอนเพื่อแสดงวิธีใช้วิธีนี้ โปรดลองดู
Edyn

1
มันใช้งานได้! ฉันพยายามสร้างทางลัดโดยการคลิกขวาที่โฟลเดอร์แทนที่จะใช้พรอมต์คำสั่งดังนั้นจึงไม่ทำงาน ทำตามขั้นตอนที่อธิบายไว้ข้างต้นแก้ไขปัญหา ขอบคุณ
Anoop K. Prabhu

1
หมายเหตุ: mklink จะไม่ทำงานบนระบบไฟล์ FAT มันมีไว้สำหรับ NTFS
เอเดรีย

การควบคุมแหล่งที่มาจะทำลายความเสียหายด้วยลิงก์สัญลักษณ์ Git ต้องการสิทธิ์ผู้ดูแลระบบหรือเพียงตรวจสอบในไฟล์
คนเจ้าเล่ห์ CAD

13

ใน Visual Studio 2017 คุณสลับไปมาระหว่างมุมมองโซลูชันและมุมมองโฟลเดอร์กลับไปกลับมา ฉันคิดว่านี่เป็นตัวเลือกที่ดีกว่าเพราะจะทำให้โซลูชันสะอาดขึ้น ฉันใช้สิ่งนี้เพื่อแก้ไขไฟล์. gignignore, .md เป็นต้น

มุมมองโซลูชันและมุมมองโฟลเดอร์


5
คำถามคือวิธีการเพิ่มโฟลเดอร์ที่มีอยู่ในการแก้ปัญหาไม่ใช่เพียงเพื่อดูโฟลเดอร์
CShark

1
นี่เป็นตัวเลือกที่ดีจริง ๆ เพื่อดูโครงสร้างที่แท้จริงการเปิดโฟลเดอร์ใน file explorer ฯลฯ - แต่น่าเสียดายที่คุณไม่สามารถเพิ่มแผนผังโฟลเดอร์ที่มีอยู่จากมุมมองโฟลเดอร์ ที่เป็นไปได้เฉพาะในมุมมองการแก้ปัญหาตามที่Gantได้อธิบายไว้
แมตต์

12

หากต้องการขยายคำตอบของ Yuchenคุณสามารถรวมไฟล์และพา ธ เป็นลิงก์ สิ่งนี้ไม่เหมือนกับการเพิ่มรายการที่มีอยู่เพราะไม่ได้ทำสำเนาพิเศษในโครงสร้างโฟลเดอร์ของโครงการ มันจะมีประโยชน์ถ้าคุณต้องการโฟลเดอร์ / ไฟล์ canonical หนึ่งไฟล์และอื่น ๆ ที่จะใช้ในหลาย ๆ ที่ แต่คุณต้องการที่จะรักษาหนึ่งรุ่น / สำเนาของมัน

นี่คือตัวอย่างของสิ่งที่คุณสามารถเพิ่มลงใน*.csprojไฟล์เพื่อสร้างลิงค์

<Compile Include="$(Codez)\z.Libraries\Common\Strings\RegexExtensions.cs">
    <Link>Helpers\RegexExtensions.cs</Link>
</Compile>

<Compile Include="..\..\z.Libraries\MoreLINQ\MoreLinq\ExceptBy.cs">
    <Link>Helpers\ExceptBy.cs</Link>
</Compile>

<Content Include="C:\Codez\Libs\Folder\OtherFolder\**\*.*">
    <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

$(Codez) เป็นตัวแปร Windows Environment ที่ฉันกำหนดไว้คุณสามารถใช้ตัวแปร Environment ในตัวในลักษณะเดียวกัน

กลุ่มตัวอย่างสุดท้ายเป็นกลุ่มของไฟล์เนื้อหาที่ฉันต้องการในผลลัพธ์สุดท้าย ดูhttps://stackoverflow.com/a/11808911/492และคำตอบและลิงก์อื่น ๆ ที่นั่นสำหรับข้อมูลเพิ่มเติม

ข้อมูล MSBuild เพิ่มเติมได้ที่https://msdn.microsoft.com/en-us/library/bb629388.aspx


2
นี่ควรเป็นคำตอบ!
Jurijs Kastanovs

4

ฉันคิดว่าฉันพบวิธีในการทำเช่นนี้ด้วยการรวบรวมรวม = ". \ รหัส ***. cs" สิ่งที่ฉันต้องการคือการรวมรหัสซ้ำภายใต้โฟลเดอร์รหัสของฉัน

นี่คือตัวอย่างไฟล์โครงการ

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="15.0" DefaultTargets="BuildTarget">
    <PropertyGroup>
        <OutputType>Library</OutputType>
    </PropertyGroup>
    <PropertyGroup>
        <StartupObject />
    </PropertyGroup>
    <PropertyGroup>
        <RootNamespace>Autogen</RootNamespace>
    </PropertyGroup>
    <ItemGroup>
        <Compile Remove="@(Compile)" />
        <Compile Include=".\Code\**\*.cs" />
    </ItemGroup>
    <Target Name="BuildTarget">
        <Message Text="Build selected" Importance="high"/>
    </Target>
</Project>

2

ใน Visual Studio 2013 ฉันไม่สามารถรับ "รวมในโครงการ" เพื่อทำงานเมื่อคลิกขวาที่โฟลเดอร์ สิ่งที่ทำงานขยายโฟลเดอร์เลือกไฟล์ทั้งหมดแล้วเลือก "รวมในโครงการ" มันค่อนข้างน่าเบื่อเพราะคุณต้องทำทีละโฟลเดอร์ (แต่อย่างน้อยคุณก็สามารถทำไฟล์ทั้งหมดในแต่ละโฟลเดอร์ได้ในคราวเดียว) และมันก็ดูเหมือนว่าจะเก็บเส้นทางของไฟล์ (คุณสามารถเห็นสิ่งนี้ได้ด้วยการดูคุณสมบัติของไฟล์ และดูตัวเลือก "เส้นทางญาติ")

ฉันหวังว่าจะใช้สิ่งนี้เพื่อปรับใช้ไฟล์ข้อมูลบางอย่างในโครงการ Visual Studio Installer และดูเหมือนว่าจะรับไฟล์ที่รวมอยู่และเก็บรักษาเส้นทางของพวกเขา


0

เท่าที่ฉันสามารถบอกได้วิธีเดียวที่ทำได้ใน VS2010 นั้นคล้ายกับวิธีการลากและวาง คลิกขวาที่โซลูชันที่คุณต้องการเพิ่มโครงการ เมนูแอปพลิเคชันจะมีรายการเพิ่ม ... เมื่อเปิดแล้วคุณจะพบว่าหนึ่งในตัวเลือกคือการเพิ่มโครงการที่มีอยู่ให้กับโซลูชัน

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

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


0

ฉันไม่พบคำตอบสำหรับความพึงพอใจของฉันดังนั้นฉันจึงค้นพบตัวเอง

นี่คือคำตอบสำหรับคุณหากคุณต้องการเพิ่มซอร์สโค้ดภายนอกให้กับโครงการของคุณและไม่ต้องการคัดลอกรหัสทั้งหมด ฉันมีการพึ่งพาหลาย gits อื่น ๆ และพวกเขาได้รับการปรับปรุงทุกชั่วโมงหากไม่ได้อย่างละเอียด ฉันไม่สามารถคัดลอกทุกชั่วโมงเพื่อซิงค์ นี่คือสิ่งที่คุณต้องทำ

สมมติว่านี่คือโครงสร้าง:

/ ราก / projA / src

/ ราก / projA / รวมถึง

/ ราก / projB / src

/ ราก / projB / รวมถึง

/ ราก / yourProj / src

/ ราก / yourProj / รวมถึง

  1. เริ่มโซลูชัน VS ของคุณ
  2. คลิกขวาที่ชื่อโครงการด้านล่างโซลูชัน
  3. จากนั้นคลิกที่ "เพิ่ม", "ตัวกรองใหม่" ใส่ชื่อ "projA" สำหรับ projA
  4. คลิกขวาที่ "projA" คลิก "เพิ่ม", "กรองใหม่" ใส่ชื่อ "src"
  5. คลิกขวาที่ "projA" คลิก "เพิ่ม", "กรองใหม่" ใส่ชื่อ "รวม"
  6. คลิกขวาที่ "projA" / "src" คลิก "เพิ่ม", "รายการที่มีอยู่" จากนั้นเรียกดู / ราก / projA / src เพื่อเพิ่มรหัสที่มาทั้งหมดหรือทีละรายการสำหรับสิ่งที่คุณต้องการ
  7. ทำเช่นเดียวกันสำหรับ "projA" / "รวม"
  8. ทำเช่นเดียวกันสำหรับ projB ตอนนี้โครงการภายนอก / ที่มีอยู่นอกโครงการของคุณจะปรากฏในโซลูชัน / โครงการของคุณ VS จะรวบรวมพวกมันเข้าด้วยกัน นี่คือเคล็ดลับ เนื่องจาก projA และ projB เป็นโฟลเดอร์เสมือนภายใต้โครงการของคุณคอมไพเลอร์อาจไม่พบ projA / รวม

  9. หากไม่พบ projA / include ให้คลิกขวาที่โครงการเลือก "Properties"

  10. นำทางไปยัง "C / C ++" แก้ไข "ไดเรกทอรีรวมเพิ่มเติม" เพิ่ม projA / include ของคุณเช่น "../projA/includes" เส้นทางสัมพัทธ์

หนึ่งข้อแม้หากมีไฟล์รวม / ส่วนหัวที่ซ้ำกัน "การแยกออกจากโครงการ" ใน "ไฟล์ส่วนหัว" ไม่สามารถใช้งานได้จริง มันเป็นข้อผิดพลาดใน VS


0

Visual Studio 2017 และใหม่กว่ารองรับ.csprojรูปแบบน้ำหนักเบาใหม่ซึ่งรู้จักกันในชื่อ "รูปแบบ SDK" ข้อดีอย่างหนึ่งของรูปแบบนี้คือแทนที่จะเก็บรายชื่อไฟล์และโฟลเดอร์ที่รวมอยู่ไฟล์ต่าง ๆ จะถูกรวมไว้ด้วยค่าเริ่มต้น ดังนั้นด้วยรูปแบบใหม่นี้ไฟล์และโฟลเดอร์ของคุณ - เพิ่มใน Explorer หรือในบรรทัดคำสั่ง - จะถูกเลือกโดยอัตโนมัติ!

ขณะนี้.csprojไฟล์รูปแบบ SDK ใช้งานได้กับประเภทโครงการต่อไปนี้ :

  • โครงการห้องสมุดระดับ

  • แอพคอนโซล

  • เว็บแอพ ASP.NET Core

  • .NET Core project ทุกประเภท

หากต้องการใช้รูปแบบใหม่ให้สร้าง. NET Core ใหม่หรือ. NET Standard project เนื่องจากเทมเพลตไม่ได้รับการอัปเดตสำหรับ. NET Framework แบบเต็มแม้ใน Visual Studio 2019 เพื่อสร้างไลบรารีคลาส. NET ให้เลือกเทมเพลต. NET Standard Library จากนั้นแก้ไขไฟล์โครงการเพื่อกำหนดเป้าหมายเวอร์ชันกรอบงานที่คุณเลือก ( รูปแบบโครงการรูปแบบใหม่สามารถแก้ไขได้ภายใน Visual Studio - เพียงคลิกขวาที่โครงการใน Explorer โซลูชันและเลือก "แก้ไขไฟล์โครงการ") ตัวอย่างเช่น:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net46</TargetFramework>
  </PropertyGroup>
</Project>

อ่านเพิ่มเติม:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.