Bagaimana cara menambahkan pohon direktori yang ada ke proyek di Visual Studio?

824

Masalahnya sebenarnya sangat sederhana. Alih-alih membuat folder di Visual Studio, saya membuat struktur direktori untuk proyek saya di sistem file. Bagaimana cara saya memasukkan semua folder dan file dalam proyek, menjaga struktur?

Jika saya "Menambahkan File yang Ada" pada folder bernama Layanan dan menavigasi ke file dalam struktur direktori .. Layanan> Manajemen Akun> CreateAccount.cs, itu muncul di Visual Studio seperti: Layanan> CreateAccount.cs. Saya tidak menginginkan ini.

Saya sudah memiliki seluruh struktur direktori, karena saya meniru pengembang klien kami menggunakan struktur yang sama untuk organisasi. Bagaimana cara menambahkan semua folder dan file ke proyek di Visual Studio? Atau apakah saya harus melakukan apa yang sebagian besar pengguna Microsoft lakukan dan "tahan dengan itu" dan menciptakan kembali setiap folder melalui Visual Studio?

Brian Leahy
sumber

Jawaban:

1438

Anda perlu meletakkan struktur direktori Anda di direktori proyek Anda. Dan kemudian klik ikon "Tampilkan Semua File" di bagian atas kotak alat Solution Explorer. Setelah itu, direktori yang ditambahkan akan ditampilkan. Anda kemudian harus memilih direktori ini, klik kanan, dan pilih "Sertakan dalam Proyek."

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Gant
sumber
150
Apakah ada cara untuk melakukan ini dengan direktori (pohon) di luar direktori proyek?
meningkatkan
2
Apakah ada cara untuk melakukan ini untuk folder yang BUKAN subdirektori di mana proyek Anda berada? yaitu: Memiliki E: \ ProjectX \ project.vcproj termasuk folder E: \ Common *.
Matt Connolly
4
Hampir berhasil. Saya dapat melihat pohon direktori, dan menambahkan beberapa file, tetapi itu tidak akan membiarkan saya menambahkan seluruh direktori termasuk sub-pohon.
ManicBlowfish
5
Masalahnya adalah HANYA BEKERJA jika Anda menyalin pohon direktori di proyek Visual Anda melalui Windows explorer. Bagaimana Anda dapat melakukannya jika Anda hanya ingin merujuk beberapa folder dan file yang terdapat dalam proyek lain di komputer Anda?
hico
5
Satu-satunya cara saya tahu untuk melakukan ini di luar proyek adalah menggunakan tautan simbolis ... lihat jawaban saya: stackoverflow.com/a/26537736/835561
Edyn
77

Anda juga dapat menarik dan melepas folder dari Windows Explorer ke jendela solusi Visual Studio Anda.

Todd Smith
sumber
14
Ini tidak berfungsi pada instalasi VS 2010 saya pada Vista Ultimate 64 bit.
John Melville
13
Tidak, tidak berfungsi di instalasi VS 2010 saya di Windows 7 juga.
AH.
9
Mengkonfirmasi ini tidak berfungsi dalam VS 2010 (mode non-Administrator) juga
David Gardiner
9
Kurasa kalian tidak melakukannya dengan benar. VS 2010 mendukung folder drag and drop. Saya selalu melakukannya untuk memasukkan alat-alat saya. Anda harus memastikan bahwa Anda jatuh ke pohon proyek. Panel solusi dan simpul solusi itu sendiri tidak akan menerima drop. OS tidak relevan di sini, tetapi untuk orang yang ragu, saya menggunakan Windows 7 64 bit.
Gavin Williams
4
"Item Solusi" berbeda dari menambahkan item ke proyek. Solusi Item adalah folder khusus dalam solusi VS.
Todd Smith
53

Dalam Visual Studio 2015, ini adalah bagaimana Anda melakukannya.

Jika Anda ingin secara otomatis menyertakan semua file turunan di bawah folder tertentu:

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

Ini dapat dibatasi untuk hanya menyertakan file dalam jalur yang ditentukan:

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

Atau bahkan hanya file dengan ekstensi yang ditentukan:

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

Referensi: http://jamesrpatterson.com/blog/automatic-include-in-project-for-visual-studio

Yuchen Zhong
sumber
3
Saya menemukan ini membantu karena saya kemudian dapat memasukkan satu tag untuk "salin selalu membangun", daripada perlu membubuhi keterangan setiap file individu (seperti halnya dalam jawaban yang diterima)
Gordon Bean
3
IMO salah satu jawaban paling berguna di sini.
Sinjai
Di mana itu ditambahkan? Bagaimana Anda bisa mendapatkan tampilan XML dalam VS?
Matius Dean
1
ini adalah solusi terbaik ketika Anda ingin menambahkan folder hierarki besar sementara Visual Studio tidak merespons & mendapatkan hang.
Gowtham Alan
1
Sayang sekali pada tim Microsoft VS
dejjub-AIS
33

Salin & Tempel .

Untuk Tambah folder, semua sub-direktori, dan file kita juga bisa Salin dan Tempel. Sebagai contoh kita dapat:

  1. Klik kanan pada Windows explorer pada folder, dan Salin pada folder dengan banyak file dan folder.

  2. Kemudian dalam penjelajah Solusi Visual Studio, klik kanan pada folder tujuan dan klik tempel.

  3. Tambahkan opsional ke TFS; Kemudian di folder atas klik kanan dan periksa ke TFS untuk memeriksa semua sub-folder dan file.

Catto
sumber
Ini bekerja untuk saya tetapi seret dan lepas tidak bekerja di VS14 dan Windows 10 pro.
Mona Jalal
1
seret dan lepas mungkin tidak berfungsi kecuali jika Anda menjalankan VS sebagai administrator
RThomas
18

Anda dapat menggunakan tautan simbolis. Ini membuat memodifikasi file dalam satu proyek memodifikasinya di yang lain (karena sebenarnya file yang sama).

Untuk melakukan ini:

  1. Buka cmd prompt sebagai administrator
  2. mklink / d [nama direktori proyek saat ini] [direktori di proyek lain harus menunjuk ke]

Ini memiliki kelemahan dan jebakan, tapi saya menggunakannya pada kesempatan untuk duplikat pustaka yang membutuhkan nama yang berbeda.

Edit untuk Anoop: Langkah-langkah untuk ditambahkan ke Visual Studio:

  1. Buat tautan di folder proyek menggunakan langkah-langkah di atas.
  2. Di Visual Studio ... pilih proyek di Solution Explorer.
  3. Di bagian atas Solution Explorer ... klik tombol Tampilkan Semua File (mungkin perlu klik dua kali jika sudah aktif).
  4. Tautan sekarang akan ditampilkan di proyek Anda ... klik kanan dan pilih Sertakan Dalam Proyek.

Ini adalah langkah-langkah yang saya ikuti dan bekerja untuk beberapa proyek yang berbeda.

Edyn
sumber
Itu tidak bekerja! tautan simbolik tidak dikenali sebagai folder
Anoop K. Prabhu
1
@Aop: Saya telah menambahkan langkah-langkah untuk menunjukkan bagaimana saya menggunakan metode ini. Ayo cobalah.
Edyn
1
Bekerja! Saya mencoba membuat jalan pintas dengan mengklik kanan folder, alih-alih menggunakan command prompt dan dengan demikian tidak berfungsi. Mengikuti langkah-langkah yang dijelaskan di atas memperbaiki masalah. Terima kasih
Anoop K. Prabhu
1
Catatan: mklink tidak akan berfungsi pada sistem file FAT. Ini untuk NTFS.
Adrian
Kontrol sumber akan mendatangkan malapetaka dengan tautan Simbolik. Git memerlukan hak admin atau hanya memeriksa dalam file.
CAD
13

Di Visual Studio 2017, Anda beralih antara Tampilan Solusi dan Tampilan Folder bolak-balik. Saya pikir ini adalah pilihan yang lebih baik, karena itu akan menjaga solusinya tetap bersih. Saya menggunakan ini untuk mengedit file .gitignore, .md, dll.

Tampilan Solusi dan Tampilan Folder

Siavash Mortazavi
sumber
5
Pertanyaannya adalah bagaimana cara menambahkan folder yang ada ke solusi, bukan hanya untuk melihat folder.
CShark
1
Ini adalah opsi yang sangat bagus untuk melihat struktur sebenarnya, untuk membuka folder di file explorer dll - tetapi sayangnya Anda tidak dapat menambahkan pohon folder yang ada dari tampilan folder. Itu hanya mungkin dalam tampilan solusi, seperti yang dijelaskan Gant .
Matt
12

Untuk memperluas jawaban Yuchen , Anda dapat memasukkan file dan jalur sebagai tautan. Ini bukan hal yang sama dengan menambahkan item yang ada karena tidak membuat salinan tambahan dalam struktur folder proyek Anda. Ini berguna jika Anda ingin satu folder / file kanonik dll untuk digunakan di banyak tempat yang berbeda tetapi Anda hanya ingin mempertahankan satu versi / salinannya.

Berikut adalah contoh dari apa yang dapat Anda tambahkan ke *.csprojfile untuk membuat tautan

<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) adalah variabel Lingkungan Windows yang saya definisikan, Anda dapat menggunakan variabel Lingkungan bawaan dengan cara yang sama.

Grup contoh terakhir adalah sekelompok file konten yang saya butuhkan di hasil akhir. Lihat https://stackoverflow.com/a/11808911/492 dan jawaban lain & tautan di sana untuk informasi lebih lanjut.

Lebih lanjut info MSBuild di https://msdn.microsoft.com/en-us/library/bb629388.aspx

CAD cowok
sumber
2
Ini seharusnya jawabannya!
Jurijs Kastanovs
4

Saya rasa saya menemukan cara untuk melakukan ini dengan Compile Include = ". \ Code ***. Cs" Yang saya inginkan adalah memasukkan kode secara rekursif di bawah folder Code saya.

Ini adalah contoh file proyek.

<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>
RJ Thompson
sumber
2

Di Visual Studio 2013, saya tidak bisa mendapatkan "Sertakan dalam Proyek" untuk berfungsi ketika mengklik kanan pada folder. Apa yang berhasil adalah memperluas folder, memilih semua file kemudian memilih "Sertakan dalam Proyek". Itu cukup membosankan karena Anda harus melakukan setiap folder satu per satu (tapi setidaknya Anda dapat melakukan semua file dalam setiap folder sekaligus), dan tampaknya menyimpan path file (Anda dapat melihat ini dengan melihat properti pada file tersebut dan melihat opsi "Relative Path".)

Saya berharap untuk menggunakan ini untuk menyebarkan beberapa file data dalam proyek Visual Studio Installer, dan tampaknya untuk mengambil file yang disertakan dan mempertahankan jalurnya.

Malvine
sumber
0

Sejauh yang saya tahu, satu-satunya cara untuk melakukan ini di VS2010 adalah mirip dengan metode drag and drop. Klik kanan solusi yang ingin Anda tambahkan proyek. Menu aplikasi akan memiliki item add .... Membuka itu, Anda menemukan bahwa salah satu opsi adalah menambahkan proyek yang ada ke solusi.

Di kotak dialog yang terbuka, navigasikan ke folder yang berisi file proyek untuk solusi dan pilih. VS akan, sebagai bagian dari pengimporan file proyek itu, juga mengimpor seluruh direktori dan, saya mengasumsikan direktori bawahan yang merupakan bagian dari proyek itu.

Karena ini memerlukan file proyek yang ada, tidak akan mustahil untuk mengimpor pohon direktori sampai pohon itu telah dikonversi ke proyek.

Fenton Smith
sumber
0

Saya tidak menemukan jawaban untuk kepuasan saya, jadi saya mencari tahu sendiri.

Inilah jawaban untuk Anda jika Anda ingin menambahkan kode sumber eksternal ke proyek Anda dan tidak ingin menyalin seluruh kode. Saya memiliki banyak dependensi pada git lain dan mereka diperbarui setiap jam jika tidak teliti. Saya tidak bisa menyalin setiap jam untuk melakukan sinkronisasi. Inilah yang perlu Anda lakukan.

Asumsikan ini adalah struktur:

/ root / projA / src

/ root / projA / termasuk

/ root / projB / src

/ root / projB / termasuk

/ root / yourProj / src

/ root / yourProj / termasuk

  1. Mulai solusi VS Anda.
  2. Klik kanan nama proyek tepat di bawah Solusi.
  3. Kemudian klik tombol "Tambah", "Filter Baru", tuliskan nama "projA" untuk projA.
  4. Klik kanan pada "projA", klik "Tambah", "Filter Baru", masukkan nama "src"
  5. Klik kanan pada "projA", klik "Tambah", "Filter Baru", masukkan nama "termasuk"
  6. Klik kanan "projA" / "src", klik "Tambah", "Item yang Ada", lalu browse ke / root / projA / src untuk menambahkan semua kode sumber atau satu per satu untuk yang Anda inginkan.
  7. Lakukan hal yang sama untuk "projA" / "termasuk"
  8. Lakukan hal yang sama untuk projB. Sekarang proyek eksternal / yang ada di luar Anda hadir dalam solusi / proyek Anda. VS akan mengkompilasinya bersama. Ini sebuah trik. Karena projA dan projB adalah folder virtual di bawah proyek Anda, kompiler mungkin tidak menemukan projA / termasuk.

  9. Jika tidak menemukan projA / include, maka klik kanan proyek, pilih "Properties".

  10. Arahkan ke "C / C ++". Edit "Direktori Sertakan Tambahan", tambahkan projA Anda / sertakan seperti "../projA/includes", jalur relatif.

Satu peringatan, jika ada duplikat menyertakan / file header, "kecualikan dari proyek" pada "file Header" tidak benar-benar berfungsi. Ini bug di VS.

davidj
sumber
0

Visual Studio 2017 dan yang lebih baru mendukung .csprojformat ringan baru yang kemudian dikenal sebagai "format SDK". Salah satu dari beberapa kelebihan format ini adalah bahwa alih-alih berisi daftar file dan folder yang disertakan , file-file tersebut termasuk wildcard secara default. Karenanya, dengan format baru ini, file dan folder Anda - ditambahkan di Explorer atau pada baris perintah - akan diambil secara otomatis!

.csprojFile format SDK saat ini berfungsi dengan jenis proyek berikut :

  • Proyek perpustakaan kelas

  • Aplikasi konsol

  • Aplikasi web ASP.NET Core

  • .NET Core proyek dari jenis apa pun

Untuk menggunakan format baru, buat proyek .NET Core atau .NET Standard baru. Karena templat belum diperbarui untuk .NET Framework lengkap bahkan di Visual Studio 2019, untuk membuat perpustakaan kelas .NET pilih templat .NET Standard Library template, dan kemudian edit file proyek untuk menargetkan versi kerangka pilihan Anda ( format proyek gaya baru dapat diedit di dalam Visual Studio - cukup klik kanan proyek di Solution Explorer dan pilih "Edit file proyek"). Sebagai contoh:

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

Bacaan lebih lanjut:

Stephen Kennedy
sumber