Làm cách nào để thêm cây thư mục hiện có vào dự án trong Visual Studio?


824

Vấn đề rất đơn giản. Thay vì tạo các thư mục trong Visual Studio, tôi tạo cấu trúc thư mục cho dự án của mình trên hệ thống tệp. Làm thế nào để tôi bao gồm tất cả các thư mục và tệp trong một dự án, giữ cấu trúc?

Nếu tôi "Thêm tệp hiện có" vào thư mục có tên Dịch vụ và điều hướng đến một tệp trong cấu trúc thư mục .. Dịch vụ> Quản lý tài khoản> TạoAccount.cs, thì nó sẽ xuất hiện trong Visual Studio như vậy: Dịch vụ> TạoAccount.cs. Tôi không muốn cái này.

Tôi đã có toàn bộ cấu trúc thư mục, vì tôi đang bắt chước các nhà phát triển khách hàng của chúng tôi bằng cách sử dụng cùng một cấu trúc cho tổ chức. Làm cách nào để thêm tất cả các thư mục và tệp vào dự án trong Visual Studio? Hay tôi phải làm những gì hầu hết người dùng Microsoft làm và "đưa ra" và tạo lại từng thư mục thông qua Visual Studio?



Câu trả lời:


1438

Bạn cần đặt cấu trúc thư mục của bạn trong thư mục dự án của bạn. Và sau đó nhấp vào biểu tượng "Hiển thị tất cả tệp" trong đầu hộp công cụ Solution Explorer. Sau đó, thư mục đã thêm sẽ được hiển thị. Sau đó, bạn sẽ cần chọn thư mục này, nhấp chuột phải và chọn "Bao gồm trong dự án."

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây


150
Có cách nào để làm điều này với một thư mục (cây) bên ngoài thư mục dự án không?
imre

2
Có cách nào để làm điều này cho một thư mục KHÔNG phải là thư mục con của dự án của bạn không? tức là: Có E: \ ProjectX \ project.vcproj bao gồm thư mục E: \ Common * .cs ??
Matt Connolly

4
Hầu như hoạt động. Tôi có thể thấy cây thư mục và thêm nhiều tệp, nhưng nó sẽ không cho phép tôi thêm toàn bộ thư mục bao gồm các cây con.
ManicBlowfish

5
Vấn đề là nó CHỈ LÀM VIỆC nếu bạn sao chép cây thư mục trong dự án Visual của bạn thông qua Windows explorer. Làm thế nào bạn có thể làm nếu bạn chỉ muốn tham khảo một số thư mục và tệp có trong một dự án khác trên máy tính của bạn?
hico

5
Cách duy nhất tôi biết để làm điều này bên ngoài dự án là sử dụng một liên kết tượng trưng ... xem câu trả lời của tôi: stackoverflow.com/a/26537736/835561
Edyn

77

Bạn cũng có thể kéo và thả thư mục từ Windows Explorer vào cửa sổ giải pháp Visual Studio.


14
Điều này không hoạt động trong cài đặt VS 2010 của tôi trên Vista Ultimate 64 bit.
John Melville

13
Không, không hoạt động trong cài đặt VS 2010 của tôi trên Windows 7.
À.

9
Xác nhận điều này không hoạt động trong VS 2010 (chế độ không phải Quản trị viên)
David Gardiner

9
Tôi không nghĩ các bạn đang làm đúng. VS 2010 không hỗ trợ thư mục kéo n thả. Tôi làm tất cả thời gian để bao gồm các bộ công cụ của tôi. Bạn phải chắc chắn rằng bạn thả vào cây dự án. Bảng giải pháp và nút giải pháp sẽ không nhận được thả. Hệ điều hành không liên quan ở đây, nhưng đối với những người nghi ngờ, tôi sử dụng Windows 7 64 bit.
Gavin Williams

4
"Các mục giải pháp" khác với việc thêm các mục vào một dự án. Mục giải pháp là một thư mục đặc biệt trong giải pháp VS.
Todd Smith

53

Trong Visual Studio 2015, đây là cách bạn làm điều đó.

Nếu bạn muốn tự động bao gồm tất cả các tệp con cháu bên dưới một thư mục cụ thể:

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

Điều này có thể được hạn chế để chỉ bao gồm các tệp trong đường dẫn được chỉ định:

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

Hoặc thậm chí chỉ các tệp có phần mở rộng được chỉ định:

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

Tham khảo: http://jamesrpatterson.com/blog/automatic-include-in-project-for-visual-studio


3
Tôi thấy điều này hữu ích vì sau đó tôi có thể bao gồm một thẻ duy nhất cho "sao chép luôn luôn trên bản dựng", thay vì cần chú thích mọi tệp riêng lẻ (như trường hợp trong câu trả lời được chấp nhận)
Gordon Bean

3
IMO một trong những câu trả lời hữu ích nhất ở đây.
Sinjai

Nó được thêm vào ở đâu? Làm thế nào để bạn có được một khung nhìn XML trong VS?
Matthew Dean

1
đây là giải pháp tốt nhất khi bạn muốn thêm thư mục phân cấp lớn trong khi Visual Studio không phản hồi và bị treo.
Gowtham Alan

1
Thật xấu hổ cho đội Microsoft VS
dejjub-AIS

33

Sao chép và dán .

Để thêm một thư mục, tất cả các thư mục con và tệp chúng ta cũng có thể Sao chép và Dán. Ví dụ: chúng ta có thể:

  1. Nhấp chuột phải vào Windows explorer trên thư mục và Sao chép vào thư mục có nhiều tệp và thư mục.

  2. Sau đó, trong Visual Studio Solution explorer, nhấp chuột phải vào thư mục đích và nhấp dán.

  3. Tùy chọn thêm vào TFS; Sau đó, trong thư mục trên cùng nhấp chuột phải và đăng nhập vào TFS để kiểm tra tất cả các thư mục con và tệp.


Điều này làm việc cho tôi nhưng kéo và thả không hoạt động trong VS14 và Windows 10 pro.
Mona Jalal

1
kéo và thả có thể không hoạt động trừ khi bạn đang chạy VS với tư cách quản trị viên
RThomas

18

Bạn có thể sử dụng một liên kết tượng trưng. Điều này làm cho việc sửa đổi tệp trong một dự án sẽ sửa đổi nó trong dự án khác (vì thực tế nó là cùng một tệp).

Để làm điều này:

  1. Mở dấu nhắc cmd với tư cách quản trị viên
  2. mklink / d [tên thư mục dự án hiện tại] [thư mục trong dự án khác cần trỏ đến]

Điều này có nhược điểm và cạm bẫy, nhưng tôi sử dụng nó cho các thư viện trùng lặp cần các tên khác nhau.

Chỉnh sửa cho Anoop: Các bước để thêm vào Visual Studio:

  1. Tạo liên kết trong thư mục dự án bằng các bước trên.
  2. Trong Visual Studio ... chọn dự án trong Solution Explorer.
  3. Ở đầu Solution Explorer ... nhấp vào nút Hiển thị tất cả tệp (có thể cần nhấp vào hai lần nếu đã hoạt động).
  4. Liên kết bây giờ sẽ hiển thị trong dự án của bạn ... nhấp chuột phải và chọn Bao gồm trong dự án.

Đây là những bước tôi làm theo và làm việc cho một vài dự án khác nhau.


Nó không hoạt động! các liên kết tượng trưng không được công nhận là thư mục
Anoop K. Mitchhu

1
@Anoop: Tôi đã thêm các bước để cho thấy cách tôi sử dụng phương pháp này. Hãy thử xem.
Edyn

1
Nó hoạt động! Tôi đã cố gắng tạo một lối tắt bằng cách nhấp chuột phải vào thư mục, thay vì sử dụng dấu nhắc lệnh và do đó nó không hoạt động. Thực hiện theo các bước được mô tả ở trên đã khắc phục sự cố. Cảm ơn
Anoop K. Mitchhu

1
Lưu ý: mklink sẽ không hoạt động trên hệ thống tệp FAT. Nó dành cho NTFS.
Adrian

Kiểm soát nguồn sẽ tàn phá các liên kết tượng trưng. Git cần đặc quyền quản trị hoặc chỉ cần kiểm tra trong tệp.
CAD bloke

13

Trong Visual Studio 2017, bạn chuyển đổi giữa Chế độ xem Giải phápChế độ xem Thư mục qua lại. Tôi nghĩ rằng đây là một lựa chọn tốt hơn, bởi vì nó sẽ giữ cho giải pháp sạch hơn. Tôi sử dụng điều này để chỉnh sửa các tập tin .gitignore, .md, v.v.

Xem giải pháp và xem thư mục


5
Câu hỏi là làm thế nào để thêm một thư mục hiện có vào giải pháp, không chỉ để xem các thư mục.
CShark

1
Đây là một tùy chọn thực sự tốt để xem cấu trúc thực tế, để mở một thư mục trong tệp explorer, v.v. - nhưng thật không may, bạn không thể thêm một cây thư mục hiện có từ chế độ xem thư mục. Điều đó chỉ có thể trong chế độ xem giải pháp, như Gant đã mô tả nó.
Matt

12

Để mở rộng câu trả lời của Yuchen , bạn có thể bao gồm các tệp và đường dẫn dưới dạng liên kết. Điều này không giống với việc thêm các mục hiện có bởi vì nó không tạo thêm một bản sao trong cấu trúc thư mục dự án của bạn. Nó rất hữu ích nếu bạn muốn một thư mục / tập tin chính tắc được sử dụng ở nhiều nơi khác nhau nhưng bạn chỉ muốn duy trì một phiên bản / bản sao của nó.

Dưới đây là một ví dụ về những gì bạn có thể thêm vào một *.csprojtệp để tạo liên kết

<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) là biến Môi trường Windows do tôi xác định, bạn có thể sử dụng biến Môi trường tích hợp theo cách tương tự.

Nhóm ví dụ cuối cùng là một loạt các tệp nội dung tôi cần trong đầu ra cuối cùng. Xem https://stackoverflow.com/a/11808911/492 và các câu trả lời & liên kết khác ở đó để biết thêm về điều đó.

Thông tin chi tiết về MSBuild tại https://msdn.microsoft.com/en-us/l Library / bb629388.aspx


2
Đây nên là câu trả lời!
Jurijs Kastanovs

4

Tôi nghĩ rằng tôi đã tìm thấy một cách để làm điều này với Compile Bao gồm = ". \ Code ***. Cs" Điều tôi muốn là bao gồm mã đệ quy trong thư mục Code của tôi.

Đây là mẫu tập tin dự án.

<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

Trong Visual Studio 2013, tôi không thể làm cho "Bao gồm trong dự án" hoạt động khi nhấp chuột phải vào thư mục. Những gì đã làm là mở rộng thư mục, chọn tất cả các tệp sau đó chọn "Bao gồm trong dự án". Điều này khá tẻ nhạt khi bạn phải thực hiện từng thư mục một (nhưng ít nhất bạn có thể thực hiện tất cả các tệp trong mỗi thư mục trong một lần) và dường như lưu trữ đường dẫn tệp (bạn có thể thấy điều này bằng cách xem các thuộc tính trên tệp và nhìn vào tùy chọn "Đường dẫn tương đối".)

Tôi hy vọng sẽ sử dụng điều này để triển khai một số tệp dữ liệu trong dự án Visual Studio Installer và dường như nó sẽ chọn các tệp được bao gồm và bảo toàn đường dẫn của chúng.


0

Theo như tôi có thể nói, cách duy nhất để làm điều này trong VS2010 gần giống với phương pháp kéo và thả. Nhấp chuột phải vào giải pháp mà bạn muốn thêm một dự án. Menu ứng dụng sẽ có thêm ... mục. Mở ra điều đó, bạn thấy rằng một trong các tùy chọn là thêm một dự án hiện có vào giải pháp.

Trong hộp thoại mở ra, điều hướng đến thư mục chứa tệp dự án cho giải pháp và chọn nó. VS sẽ, như là một phần của việc nhập tệp dự án đó, cũng nhập toàn bộ thư mục và, tôi giả sử bất kỳ thư mục cấp dưới nào là một phần của dự án đó.

Vì điều này không yêu cầu tệp dự án hiện có, nên sẽ không thể nhập cây thư mục cho đến khi cây đó được chuyển đổi thành dự án.


0

Tôi không tìm thấy câu trả lời cho sự hài lòng của mình, vì vậy tôi đã tự mình tìm ra.

Đây là câu trả lời cho bạn nếu bạn muốn thêm mã nguồn bên ngoài vào dự án của mình và không muốn sao chép toàn bộ mã. Tôi có nhiều phụ thuộc vào các gits khác và chúng được cập nhật hàng giờ nếu không muốn nói là rất nhỏ. Tôi không thể sao chép mỗi giờ để đồng bộ hóa. Dưới đây là những gì bạn cần làm.

Giả sử đây là cấu trúc:

/ root / projA / src

/ root / projA / bao gồm

/ root / projB / src

/ root / projB / bao gồm

/ root / yourProj / src

/ root / yourProj / bao gồm

  1. Bắt đầu giải pháp VS của bạn.
  2. Nhấp chuột phải vào tên dự án ngay bên dưới Giải pháp.
  3. Sau đó nhấp vào "Thêm", "Bộ lọc mới", đặt tên "projA" cho projA.
  4. Nhấp chuột phải vào "projA", nhấp vào "Thêm", "Bộ lọc mới", nhập tên "src"
  5. Nhấp chuột phải vào "projA", nhấp vào "Thêm", "Bộ lọc mới", nhập tên "bao gồm"
  6. Nhấp chuột phải vào "projA" / "src", nhấp vào "Thêm", "Mục hiện có", sau đó duyệt đến / root / projA / src để thêm tất cả các mã nguồn hoặc từng cái một cho những cái bạn muốn.
  7. Làm tương tự cho "projA" / "bao gồm"
  8. Làm tương tự cho projB. Bây giờ các dự án bên ngoài / hiện tại bên ngoài của bạn có mặt trong giải pháp / dự án của bạn. Các VS sẽ biên dịch chúng lại với nhau. Đây là một mẹo. Vì projA và projB là các thư mục ảo trong dự án của bạn, trình biên dịch có thể không tìm thấy projA / bao gồm.

  9. Nếu nó không tìm thấy projA / bao gồm, sau đó nhấp chuột phải vào dự án, chọn "Thuộc tính".

  10. Điều hướng đến "C / C ++". Chỉnh sửa "Thư mục bao gồm bổ sung", thêm projA / bao gồm như vậy "../projA/includes", đường dẫn tương đối.

Một cảnh báo, nếu có các tệp bao gồm / tiêu đề trùng lặp, "loại trừ khỏi dự án" trên "tệp tiêu đề" không thực sự hoạt động. Đó là một lỗi trong VS.


0

Visual Studio 2017 và mới hơn hỗ trợ một .csprojđịnh dạng nhẹ mới được gọi là "định dạng SDK". Một trong nhiều ưu điểm của định dạng này là thay vì chứa danh sách các tệp và thư mục được bao gồm , các tệp là ký tự đại diện được bao gồm theo mặc định.Do đó, với định dạng mới này, các tệp và thư mục của bạn - được thêm vào Explorer hoặc trên dòng lệnh - sẽ được chọn tự động!

Định dạng SDK .csprojtập tin hiện đang làm việc với các loại dự án sau :

  • Dự án thư viện lớp

  • Ứng dụng bảng điều khiển

  • Ứng dụng web ASP.NET Core

  • Các dự án .NET Core thuộc mọi loại

Để sử dụng định dạng mới, hãy tạo dự án .NET Core hoặc .NET Standard mới. Vì các mẫu chưa được cập nhật cho .NET Framework đầy đủ ngay cả trong Visual Studio 2019, để tạo thư viện lớp .NET, hãy chọn mẫu Thư viện chuẩn .NET, sau đó chỉnh sửa tệp dự án để nhắm mục tiêu phiên bản khung bạn chọn ( định dạng dự án kiểu mới có thể được chỉnh sửa bên trong Visual Studio - chỉ cần nhấp chuột phải vào dự án trong Solution Explorer và chọn "Chỉnh sửa tệp dự án"). Ví dụ:

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

Đọc thêm:

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.