Varolan bir dizin ağacını Visual Studio'daki bir projeye nasıl eklerim?


824

Sorun gerçekten basit. Visual Studio'da klasör oluşturmak yerine dosya sistemindeki projem için bir dizin yapısı oluşturuyorum. Yapıyı koruyarak projedeki tüm klasörleri ve dosyaları nasıl eklerim?

Hizmetler adlı bir klasörde "Varolan Dosya Ekle" ve dizin yapısında bir dosyaya gidersem .. Hizmetler> Hesap Yönetimi> CreateAccount.cs, Visual Studio'da şöyle görünür: Hizmetler> CreateAccount.cs. Bunu istemiyorum.

Organizasyon için aynı yapıyı kullanan müşteri geliştiricilerimizi taklit ettiğim için, zaten bütün bir dizin yapısına sahibim. Visual Studio'daki tüm klasörleri ve dosyaları projeye nasıl eklerim? Yoksa çoğu Microsoft kullanıcısının yaptıklarını yapmalı ve "buna katlanmalıyım" ve her klasörü Visual Studio aracılığıyla yeniden oluşturmalı mıyım?



Yanıtlar:


1438

Dizin yapınızı proje dizininize koymanız gerekir. Ardından, Solution Explorer araç kutusunun üstündeki "Tüm Dosyaları Göster" simgesini tıklayın. Bundan sonra, eklenen dizin görünecektir. Daha sonra bu dizini seçmeniz, sağ tıklamanız ve "Projeye Ekle" yi seçmeniz gerekecektir.

resim açıklamasını buraya girin

resim açıklamasını buraya girin


150
Bunu proje dizininin dışında bir dizin (ağaç) ile yapmanın bir yolu var mı ?
imre

2
Projenizin bulunduğu bir alt dizin DEĞİLDİR bir klasör için bunu yapmanın bir yolu var mı? ie: E: \ ProjectX \ project.vcproj klasörüne E: \ Common * .cs ??
Matt Connolly

4
Neredeyse işe yarıyor. Dizin ağacını görebilir ve birden fazla dosya ekleyebilirim, ancak alt ağaçlar da dahil olmak üzere tüm bir dizini eklememe izin vermiyor.
ManicBlowfish

5
Sorun, SADECE Visual projenizdeki dizin ağacını Windows Gezgini aracılığıyla kopyalarsanız çalışır. Bilgisayarınızdaki başka bir projede bulunan bazı klasörlere ve dosyalara başvurmak istiyorsanız nasıl yapabilirsiniz?
hico

5
Bunu proje dışında yapmanın tek yolu sembolik bir bağlantı kullanmaktır ... cevabımı görün: stackoverflow.com/a/26537736/835561
Edyn

77

Klasörü Windows Gezgini'nden Visual Studio çözüm pencerenize sürükleyip bırakabilirsiniz .


14
Bu, Vista Ultimate 64 bit üzerindeki VS 2010 kurulumumda çalışmıyor.
John Melville

13
Hayır, Windows 7'deki VS 2010 kurulumumda da çalışmıyor.
AH.

9
Bunun VS 2010'da (Yönetici olmayan mod) da çalışmadığını doğrulamak
David Gardiner

9
Bunu doğru yaptığınızı sanmıyorum. VS 2010 klasör sürükleme n bırakma desteği. Araç kitlerimi eklemek için her zaman yaparım. Proje ağacına düştüğünüzden emin olmalısınız. Çözüm paneli ve çözüm düğümünün kendisi düşüşü almayacaktır. İşletim sistemi burada önemsiz, ancak şüpheler için Windows 7 64 bit kullanıyorum.
Gavin Williams

4
"Çözüm Öğeleri", bir projeye öğe eklemekten farklıdır. Çözüm Öğeleri VS çözümü içindeki özel bir klasördür.
Todd Smith

53

Visual Studio 2015'te böyle yaparsınız.

Tüm alt dosyaları belirli bir klasörün altına otomatik olarak eklemek istiyorsanız:

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

Bu, yalnızca belirtilen yoldaki dosyaları içerecek şekilde sınırlandırılabilir:

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

Veya yalnızca belirtilen uzantıya sahip dosyalar:

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

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


3
Bunu yararlı buldum çünkü daha sonra her dosyaya (kabul edilen yanıtta olduğu gibi) açıklama eklemek yerine "her zaman kopyada kopyala" için tek bir etiket ekleyebilirim
Gordon Bean

3
IMO burada en yararlı cevaplardan biri.
Sinjai

Nereye eklenir? VS'de bir XML görünümüne nasıl ulaşırsınız?
Matthew Dean

1
Visual Studio yanıt vermiyor ve askıda kalırken büyük hiyerarşi klasörü eklemek istediğinizde bu en iyi çözümdür.
Gowtham Alan

1
Microsoft VS takımı için bir utanç
dejjub-AIS

33

Kopyala ve Yapıştır .

Klasör, tüm alt dizinler ve dosyalar eklemek için Kopyala ve Yapıştır da yapabiliriz. Örneğin:

  1. Klasördeki Windows Gezgini'ne sağ tıklayın ve birçok dosya ve klasör içeren klasöre kopyalayın.

  2. Sonra Visual Studio Solution Gezgini'nde, hedef klasörü sağ tıklatın ve Yapıştır'ı tıklatın.

  3. TFS'ye isteğe bağlı ekleme; Ardından, üst klasörde sağ tıklayın ve tüm alt klasörleri ve dosyaları kontrol etmek için TFS'ye giriş yapın.


Bu benim için çalıştı ama sürükle bırak VS14 ve Windows 10 pro'da işe yaramadı.
Mona Jalal

1
VS'yi

18

Sembolik bir bağlantı kullanabilirsiniz. Bu, bir projedeki dosyanın değiştirilmesini diğerinde değiştirmesini sağlar (aslında aynı dosya olduğu için).

Bunu yapmak için:

  1. Cmd istemini yönetici olarak aç
  2. mklink / d [geçerli proje dizin adı] [işaret etmesi gereken diğer projedeki dizin]

Bunun dezavantajları ve tuzakları var, ancak bazen farklı isimlere ihtiyaç duyan yinelenen kütüphaneler için kullanıyorum.

Anoop için Düzenle: Visual Studio'ya ekleme adımları:

  1. Yukarıdaki adımları kullanarak proje klasöründe bağlantı oluşturun.
  2. Visual Studio'da ... Solution Explorer'da proje seçin.
  3. Çözüm Gezgini'nin üst kısmında ... Tüm Dosyaları Göster düğmesini tıklayın (zaten etkinse iki kez tıklamanız gerekebilir).
  4. Bağlantı şimdi projenizde gösterilecek ... sağ tıklayın ve Projeye Dahil Et'i seçin.

Bunlar benim takip ettiğim adımlar ve birkaç farklı proje için çalışıyor.


Çalışmıyor! sembolik bağlantılar klasör olarak tanınmadı
Anoop K. Prabhu

1
@Anoop: Bu yöntemi nasıl kullandığımı göstermek için adımlar ekledim. Lütfen bir deneyin.
Edyn

1
İşe yarıyor! Komut istemini kullanmak yerine, klasörü sağ tıklatarak bir kısayol oluşturmaya çalışıyordum ve bu yüzden işe yaramadı. Yukarıda açıklanan adımları takip etmek sorunu çözdü. Teşekkürler
Anoop K. Prabhu

1
Not: mklink bir FAT dosya sisteminde çalışmaz. NTFS içindir.
Adrian

Kaynak kontrolü Sembolik bağlantılar ile tahribat yaratacak. Git, yönetici ayrıcalıklarına ihtiyaç duyar veya sadece dosyayı kontrol eder.
CAD,

13

Visual Studio 2017'de, Çözüm Görünümü ve Klasör Görünümü arasında ileri geri geçiş yaparsınız . Bunun daha iyi bir seçenek olduğunu düşünüyorum, çünkü çözümü temiz tutacak. Bunu .gitignore, .md dosyalarını vb. Düzenlemek için kullanıyorum.

Çözüm Görünümü ve Klasör Görünümü


5
Soru, sadece klasörleri görüntülemek için değil, mevcut bir klasörü çözüme nasıl ekleyeceğinizle ilgili.
CShark

1
Bu, gerçek yapıyı görmek, dosya gezgini vb.'de bir klasör açmak için gerçekten iyi bir seçenektir - ancak maalesef klasör görünümünden mevcut bir klasör ağacını ekleyemezsiniz. Bu sadece Gant'ın tanımladığı gibi çözüm görünümünde mümkündür .
Matt

12

Yuchen'in cevabını genişletmek için dosyaları ve yolları bağlantı olarak ekleyebilirsiniz. Bu, mevcut öğelerin eklenmesi ile aynı şey değildir, çünkü projenizin klasör yapısında fazladan bir kopya oluşturmaz. Bir kanonik klasörün / dosyanın vb. Birçok farklı yerde kullanılmasını istiyorsanız, ancak yalnızca bir sürümünü / kopyasını korumak istiyorsanız kullanışlıdır.

*.csprojBağlantı oluşturmak için bir dosyaya neler ekleyebileceğinize dair bir örnek

<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) tanımladığım bir Windows Ortam değişkenidir, yerleşik Ortam değişkenlerini aynı şekilde kullanabilirsiniz.

Son örnek grup, son çıktıda ihtiyacım olan bir grup içerik dosyası. Bununla ilgili daha fazla bilgi için https://stackoverflow.com/a/11808911/492 adresine ve diğer yanıtlara ve bağlantılara bakın .

Https://msdn.microsoft.com/en-us/library/bb629388.aspx adresinden daha fazla MSBuild bilgisi


2
Cevap bu olmalı!
Jurijs Kastanovs

4

Derlemek dahil etmek için bir yol buldum Sanırım Include = ". \ Code ***. Cs" Ne istediğim kod özyinelemde benim Kod klasörü altında dahil etmektir.

İşte proje dosyası örneği.

<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'te, bir klasöre sağ tıklatıldığında "Project'e dahil et" i çalıştıramadım. Ne işe yaradı klasörü genişletmek, tüm dosyaları seçmek ve sonra "Projeye dahil et" seçmek. Her klasörü tek tek yapmak zorunda olduğunuz için oldukça sıkıcıydı (ancak en azından her klasördeki tüm dosyaları tek seferde yapabilirsiniz) ve dosya yolunu sakladığı görülüyor (bunu dosyadaki özellikleri görüntüleyerek görebilirsiniz ve "Göreli Yol" seçeneğine bakmak.)

Bunu bir Visual Studio Installer projesinde bazı veri dosyalarını dağıtmak için kullanmayı umuyorum ve dahil edilen dosyaları alıp yollarını koruyor gibi görünüyor.


0

Anlayabildiğim kadarıyla, VS2010'da bunu yapmanın tek yolu sürükle ve bırak yöntemine benzer. Proje eklemek istediğiniz çözümü sağ tıklatın. Uygulama menüsünde bir add ... öğesi bulunacaktır. Bunu açtığınızda, seçeneklerden birinin çözüme mevcut bir proje eklemek olduğunu görürsünüz.

Açılan iletişim kutusunda, çözümün proje dosyasını içeren klasöre gidin ve dosyayı seçin. VS, bu proje dosyasını içe aktarmanın bir parçası olarak, tüm dizini içe aktarır ve bu projenin bir parçası olan alt dizinleri varsayarım.

Bu, mevcut bir proje dosyasını gerektirdiğinden, bu ağaç bir projeye dönüştürülene kadar bir dizin ağacını içe aktarmak imkansız değildir.


0

Memnuniyetime cevap bulamadım, bu yüzden kendimi anladım.

Projenize harici kaynak kodları eklemek ve kodların tamamını kopyalamak istemiyorsanız size cevap. Ben diğer gits birçok bağımlılıkları var ve onlar değil dakika başına güncellenir. Senkronize etmek için her saat kopya yapamıyorum. Yapman gerekenler işte burada.

Bunun yapı olduğunu varsayın:

/ Root / projA / src

/ Root / projA / kapsamaktadır

/ Root / projB / src

/ ProjB / includes / kök

/ Root / yourProj / src

/ YourProj / includes / kök

  1. VS çözümünüzü başlatın.
  2. Çözüm'ün hemen altındaki proje adını sağ tıklayın.
  3. Sonra "Ekle", "Yeni Filtre" yi tıklayın, projA için "projA" adını girin.
  4. "ProjA" yı sağ tıklayın, "Ekle", "Yeni Filtre" yi tıklayın, "src" adını girin
  5. "ProjA" yı sağ tıklayın, "Ekle", "Yeni Filtre" yi tıklayın, "içerir" adını girin
  6. "ProjA" / "src" öğesine sağ tıklayın, "Ekle", "Mevcut Öğe" ye tıklayın, ardından / root / projA / src'ye giderek tüm kaynak kodlarını veya istediğiniz kodları tek tek ekleyin.
  7. "ProjA" / "içerir" için de aynısını yapın
  8. ProjB için de aynısını yapın. Artık sizin dışınızdaki harici / mevcut projeler çözümünüzde / projenizde mevcut. VS onları bir araya getirecektir. İşte bir hile. ProjA ve projB projenizin altındaki sanal klasörler olduğundan, derleyici projA / include'ları bulamayabilir.

  9. Eğer projA / include'u bulamazsa, projeyi sağ tıklayın, "Özellikler" i seçin.

  10. "C / C ++" ya gidin. "Ek İçerme Dizinleri" ni düzenleyin, projA / include'unuzu "../projA/includes", göreli yol olarak ekleyin.

Bir uyarı, yinelenen dahil / başlık dosyaları varsa, "Başlık dosyası" ndaki "projeden hariç tut" gerçekten çalışmaz. VS'de bir hata.


0

Visual Studio 2017 ve daha yeni sürümleri .csproj, "SDK biçimi" olarak bilinen yeni bir hafif biçimi destekler . Bu biçimin çeşitli avantajlarından biri, dahil olan dosya ve klasörlerin listesini içermek yerine , dosyaların varsayılan olarak joker karaktere dahil edilmesidir.Bu nedenle, bu yeni formatla, Explorer veya komut satırına eklenen dosyalarınız ve klasörleriniz otomatik olarak alınacaktır!

SDK biçimindeki .csprojdosya şu anda aşağıdaki proje türleriyle çalışmaktadır :

  • Sınıf kütüphanesi projeleri

  • Konsol uygulamaları

  • ASP.NET Core web uygulamaları

  • Herhangi bir türde .NET Core projeleri

Yeni biçimi kullanmak için yeni bir .NET Core veya .NET Standard projesi oluşturun. Şablonlar Visual Studio 2019'da bile tam .NET Framework için güncellenmediğinden, bir .NET sınıf kitaplığı oluşturmak için .NET Standart Kitaplık şablonunu seçin ve ardından proje dosyasını istediğiniz çerçeve sürümünü hedefleyecek şekilde düzenleyin ( yeni stil proje formatı Visual Studio içinde düzenlenebilir - sadece Solution Explorer'da projeyi sağ tıklayın ve "Proje dosyasını düzenle" yi seçin). Örneğin:

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

Daha fazla okuma:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.