ใน Visual Studio เราสามารถ "เพิ่มเป็นลิงก์" เพื่อเพิ่มลิงก์ไปยังไฟล์ในโครงการอื่นในโซลูชัน
มีวิธีใดในการทำเช่นนี้กับทั้งโฟลเดอร์เพื่อให้ทั้งโฟลเดอร์ในโครงการ A ปรากฏในโครงการ B โดยไม่จำเป็นต้องเชื่อมโยงไปยังรายการใหม่ในโฟลเดอร์นั้นด้วยตนเอง
ใน Visual Studio เราสามารถ "เพิ่มเป็นลิงก์" เพื่อเพิ่มลิงก์ไปยังไฟล์ในโครงการอื่นในโซลูชัน
มีวิธีใดในการทำเช่นนี้กับทั้งโฟลเดอร์เพื่อให้ทั้งโฟลเดอร์ในโครงการ A ปรากฏในโครงการ B โดยไม่จำเป็นต้องเชื่อมโยงไปยังรายการใหม่ในโฟลเดอร์นั้นด้วยตนเอง
คำตอบ:
ตามที่บล็อกโพสต์นี้ระบุไว้เป็นไปได้
<ItemGroup>
<Compile Include="any_abs_or_rel_path\**\*.*">
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
</Compile>
</ItemGroup>
แต่โปรดทราบว่าไฟล์จะไม่ถูกคัดลอก
<None>...</None>
แทน<Compile>...</Compile>
. แต่ฉันคิดว่ามันจะคัดลอกไฟล์เหล่านั้นอยู่ดีแม้แต่ VisualStudio ก็ทำเช่นนี้กับไฟล์ที่เชื่อมโยง
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
เพื่อป้องกันไม่ให้มันทิ้งนามสกุลออกจากชื่อไฟล์
ใน VS2012 และใหม่กว่าคุณสามารถลากโฟลเดอร์ไปยังโปรเจ็กต์อื่นโดยกดปุ่มalt เหมือนกับการเพิ่มแต่ละไฟล์เป็นลิงก์ด้วยตนเอง แต่เร็วกว่า
การอัปเดต: พิจารณาใช้โปรเจ็กต์ที่แชร์หากคุณใช้ VS2013 อัพเดต 2 (ด้วยShared Project Reference Manager ) หรือ VS2015
อีกหนึ่งคำตอบจากโม และความคิดเห็นจาก Marcus หากคุณกำลังเชื่อมโยงรายการเนื้อหาคุณจะต้องรวมนามสกุลไฟล์:
<ItemGroup>
<Compile Include="any_abs_or_rel_path\**\*.*">
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Compile>
</ItemGroup>
<Compile ...
ในวันนี้ ในกรณีของฉันฉันต้องอ้างอิง.ts
ไฟล์ไปยังโปรเจ็กต์ใหม่ของฉัน มันทำอย่างไร ขอบคุณ!
เกี่ยวกับส่วนของแบบสอบถามดั้งเดิมที่มีโฟลเดอร์ที่เชื่อมโยงปรากฏใน IDE เป็นไปได้ที่จะบรรลุสิ่งนี้ดังนั้นจึงมีโฟลเดอร์ในตัวสำรวจโซลูชันที่มีไฟล์ที่เชื่อมโยงทั้งหมดอยู่ภายในแทนที่จะเป็นไฟล์ทั้งหมดที่ปรากฏในรูทของ การแก้ไขปัญหา. เพื่อให้บรรลุสิ่งนี้รวมถึงการเพิ่ม:
<ItemGroup>
<Compile Include="..\anypath\**\*.*">
<Link>MyData\A\%(RecursiveDir)%(FileName)%(Extension)</Link>
</Compile>
</ItemGroup>
ซึ่งจะรวมไฟล์ทั้งหมดจากไดเร็กทอรีที่เชื่อมโยงในโฟลเดอร์ใหม่ในตัวสำรวจโซลูชันที่เรียกว่า MyData 'A' ในโค้ดด้านบนเรียกได้ว่าเป็นอะไรก็ได้ แต่ต้องอยู่ที่นั่นเพื่อให้โฟลเดอร์นั้นปรากฏ
หากคุณต้องการเพิ่มโฟลเดอร์เป็นข้อมูลอ้างอิงและคุณไม่ต้องการรวบรวมให้ใช้:
<Content Include="any_path\**\*.*">
<Link>folder_in_B_project\%(RecursiveDir)%(FileName)%(Extension)</Link>
</Content>
ดึงเปลือกออกและเพิ่มลิงก์สัญลักษณ์
runas Administrator แล้ว
mklink /d LinkToDirectory DirectoryThatIsLinkedTo
ลิงค์สัญลักษณ์ BAM!
/ d ระบุลิงค์ไดเร็กทอรี
ทำงานใน Vista ได้ทันที สามารถแบ็คพอร์ตไปยัง XP
เอกสารประกอบที่นี่: http://technet.microsoft.com/en-us/library/cc753194%28WS.10%29.aspx
สำหรับผู้ที่ไม่คุ้นเคยกับลิงก์สัญลักษณ์โดยพื้นฐานแล้วจะเป็นตัวชี้ไปยังไฟล์หรือไดเรกทอรีอื่น มันโปร่งใสสำหรับแอปพลิเคชัน หนึ่งสำเนาบนดิสก์หลายวิธีในการจัดการกับมัน คุณยังสามารถสร้าง "ฮาร์ดลิงก์" ซึ่งไม่ใช่ตัวชี้ไปยังที่อยู่อื่น แต่เป็นรายการ ID ไฟล์จริงใน NTFS สำหรับไฟล์เดียวกัน
หมายเหตุ: ตามที่ระบุไว้ในความคิดเห็นสิ่งนี้จะใช้ได้เฉพาะบนคอมพิวเตอร์ที่คุณสร้าง symlink และจะไม่ทำงานในระบบควบคุมเวอร์ชันเช่น git
<Content ...>
และเพิ่ม<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
เพื่อให้ Visual Studio คัดลอกทรัพยากรในการสร้าง