Visual Studio에서 기존 디렉토리 트리를 프로젝트에 어떻게 추가합니까?


824

문제는 정말 간단합니다. Visual Studio에서 폴더를 만드는 대신 파일 시스템에서 프로젝트의 디렉토리 구조를 만듭니다. 구조를 유지하면서 프로젝트에 모든 폴더와 파일을 어떻게 포함합니까?

Services라는 폴더에 "기존 파일 추가"가 있고 디렉토리 구조 .. Services> AccountManagement> CreateAccount.cs의 파일로 이동하면 서비스> CreateAccount.cs와 같이 Visual Studio에 나타납니다. 필요 없어.

조직에 동일한 구조를 사용하는 클라이언트 개발자를 흉내 내고 있으므로 전체 디렉토리 구조가 이미 해결되었습니다. Visual Studio에서 모든 폴더와 파일을 프로젝트에 어떻게 추가합니까? 아니면 Visual Studio를 통해 대부분의 Microsoft 사용자가 수행하고 "사용하여"모든 폴더를 다시 만들어야합니까?



답변:


1438

디렉토리 구조를 프로젝트 디렉토리에 넣어야합니다. 그런 다음 솔루션 탐색기 도구 상자 상단에서 "모든 파일 표시"아이콘을 클릭하십시오. 그 후 추가 된 디렉토리가 표시됩니다. 그런 다음이 디렉토리를 선택하고 마우스 오른쪽 단추를 클릭 한 다음 "프로젝트에 포함"을 선택하십시오.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


150
프로젝트 디렉토리 외부 의 디렉토리 (트리)로 이것을 수행하는 방법이 있습니까?
imre

2
프로젝트가있는 하위 디렉토리가 아닌 폴더에 대해이 작업을 수행하는 방법이 있습니까? 즉 : E : \ ProjectX \ project.vcproj에 E : \ Common * .cs 폴더가 포함되어 있습니까 ??
매트 코놀리

4
거의 작동합니다. 디렉토리 트리를보고 여러 파일을 추가 할 수 있지만 하위 트리를 포함한 전체 디렉토리를 추가 할 수는 없습니다.
ManicBlowfish

5
문제는 Windows 탐색기를 통해 Visual 프로젝트의 디렉토리 트리를 복사하는 경우에만 작동한다는 것입니다. 컴퓨터의 다른 프로젝트에 포함 된 일부 폴더와 파일을 참조하려면 어떻게해야합니까?
hico

5
프로젝트 외부 에서이 작업을 수행하는 방법을 알고있는 유일한 방법은 심볼릭 링크를 사용하는 것입니다 ... 내 대답 참조 : stackoverflow.com/a/26537736/835561
Edyn

77

Windows 탐색기 에서 Visual Studio 솔루션 창으로 폴더를 끌어서 놓을 수도 있습니다.


14
Vista Ultimate 64 비트에서 VS 2010을 설치할 때 작동하지 않습니다.
John Melville

13
아니요, Windows 7의 VS 2010 설치에서도 작동하지 않습니다.
.

9
VS 2010 (비 관리자 모드)에서도 작동하지 않음
David Gardiner

9
나는 너희들이 올바르게하고 있다고 생각하지 않습니다. VS 2010은 폴더 드래그 앤 드롭을 지원합니다. 툴킷을 포함시키기 위해 항상 그렇게합니다. 프로젝트 트리에 들어가야합니다. 솔루션 패널과 솔루션 노드 자체는 삭제를받지 않습니다. 여기서 OS는 관련이 없지만 의심의 여지없이 Windows 7 64 비트를 사용합니다.
Gavin Williams

4
"솔루션 항목"은 프로젝트에 항목을 추가하는 것과 다릅니다. 솔루션 항목은 VS 솔루션 내의 특수 폴더입니다.
Todd Smith

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
(응답 된 답변에서와 같이) 모든 개별 파일에 주석을 달 필요없이 "모두 빌드시 항상 복사"에 대한 단일 태그를 포함 할 수 있기 때문에이 정보가 도움이되었다는 사실
Gordon Bean

3
IMO는 가장 유용한 답변 중 하나입니다.
Sinjai

추가 된 곳은? VS에서 XML보기를 어떻게 얻습니까?
Matthew Dean

1
이것은 Visual Studio가 응답하지 않고 중단되는 동안 큰 계층 구조 폴더를 추가하려는 경우 가장 좋은 솔루션입니다.
Gowtham Alan

1
Microsoft VS 팀의 부끄러움
dejjub-AIS

33

복사하여 붙여 넣기 .

폴더, 모든 하위 디렉토리 및 파일을 추가하기 위해 복사 및 붙여 넣기도 가능합니다. 예를 들어 다음을 수행 할 수 있습니다.

  1. 폴더에서 Windows 탐색기를 마우스 오른쪽 단추로 클릭하고 파일과 폴더가 많은 폴더에서 복사하십시오.

  2. 그런 다음 Visual Studio 솔루션 탐색기에서 대상 폴더를 마우스 오른쪽 단추로 클릭하고 붙여 넣기를 클릭하십시오.

  3. TFS에 옵션 추가; 그런 다음 맨 위 폴더에서 마우스 오른쪽 단추를 클릭하고 TFS에 체크인하여 모든 하위 폴더와 파일을 체크인하십시오.


이것은 나를 위해 일했지만 VS14 및 Windows 10 pro에서는 드래그 앤 드롭이 작동하지 않았습니다.
Mona Jalal 2016 년

1
VS를 관리자
권한

18

심볼릭 링크를 사용할 수 있습니다. 이것은 하나의 프로젝트에서 파일을 수정하면 다른 프로젝트에서 파일을 수정합니다 (실제로 동일한 파일이므로).

이것을하기 위해:

  1. 관리자 권한으로 cmd 프롬프트 열기
  2. mklink / d [현재 프로젝트 디렉토리 이름] [다른 프로젝트의 디렉토리]

여기에는 단점과 함정이 있지만 때로는 다른 이름이 필요한 중복 라이브러리에 사용합니다.

Anoop 편집 : Visual Studio에 추가하는 단계 :

  1. 위의 단계를 사용하여 프로젝트 폴더에 링크를 작성하십시오.
  2. Visual Studio에서 ... 솔루션 탐색기에서 프로젝트를 선택하십시오.
  3. 솔루션 탐색기 상단에서 ... 모든 파일 표시 버튼을 클릭합니다 (이미 활성화 된 경우 두 번 클릭해야 할 수도 있음).
  4. 링크가 프로젝트에 표시됩니다 ... 마우스 오른쪽 버튼을 클릭하고 프로젝트에 포함을 선택하십시오.

이것들은 내가 따라하고 몇 가지 다른 프로젝트에서 작동하는 단계입니다.


작동하지 않습니다! 심볼릭 링크는 폴더로 인식되지 않습니다
Anoop K. 프라 부에게

1
@Anoop :이 방법을 사용하는 방법을 보여주는 단계를 추가했습니다. 시도해주세요.
Edyn

1
작동합니다! 명령 프롬프트를 사용하는 대신 폴더를 마우스 오른쪽 버튼으로 클릭하여 바로 가기를 만들려고 시도했지만 작동하지 않았습니다. 위에서 설명한 단계에 따라 문제가 해결되었습니다. 감사합니다
Anoop K. Prabhu

1
참고 : mklink는 FAT 파일 시스템에서 작동하지 않습니다. NTFS 용입니다.
Adrian

소스 컨트롤은 심볼릭 링크를 혼란스럽게 만듭니다. Git은 관리자 권한이 필요하거나 파일을 체크인합니다.
CAD

13

Visual Studio 2017에서는 솔루션보기폴더보기 간을 전환 할 수 있습니다 . 솔루션을 더 깨끗하게 유지하기 때문에 이것이 더 나은 옵션이라고 생각합니다. 이것을 사용하여 .gitignore, .md 파일 등을 편집합니다.

솔루션보기 및 폴더보기


5
문제는 단순히 폴더를 보는 것이 아니라 솔루션에 기존 폴더를 추가하는 방법에 관한 것입니다.
CShark

1
이것은 실제 구조를보고 파일 탐색기 등에서 폴더를 열 때 정말 좋은 옵션이지만 불행히도 폴더보기에서 기존 폴더 트리를 추가 할 수 없습니다. Gant 가 설명 했듯이 솔루션보기에서만 가능 합니다.
Matt

12

Yuchen의 답변 을 확장하기 위해 파일과 경로를 링크로 포함시킬 수 있습니다. 이것은 프로젝트의 폴더 구조에 추가 사본을 만들지 않기 때문에 기존 항목을 추가하는 것과 다릅니다. 하나의 표준 폴더 / 파일 등을 많은 다른 장소에서 사용하고 싶지만 하나의 버전 / 사본 만 유지하려는 경우에 유용합니다.

다음은 *.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 환경 변수입니다. 동일한 방식으로 내장 환경 변수를 사용할 수 있습니다.

마지막 예제 그룹은 최종 출력에 필요한 많은 콘텐츠 파일입니다. 자세한 내용은 https://stackoverflow.com/a/11808911/492 및 기타 답변 및 링크를 참조 하십시오 .

https://msdn.microsoft.com/en-us/library/bb629388.aspx 에서 더 많은 MSBuild 정보


2
이것이 답이되어야합니다!
Jurijs Kastanovs

4

Compile Include = ". \ Code ***. 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에 많은 의존성을 가지고 있으며 매분마다 업데이트되지 않습니다. 동기화하기 위해 매시간 복사 할 수 없습니다. 여기 당신이해야 할 일이 있습니다.

이것이 구조라고 가정하십시오.

/ root / projA / src

/ root / projA / 포함

/ root / projB / src

/ root / projB / 포함

/ root / yourProj / src

/ root / yourProj / includes

  1. VS 솔루션을 시작하십시오.
  2. 솔루션 바로 아래의 프로젝트 이름을 마우스 오른쪽 단추로 클릭하십시오.
  3. 그런 다음 "추가", "새 필터"를 클릭하고 projA에 "projA"라는 이름을 입력하십시오.
  4. "projA"를 마우스 오른쪽 버튼으로 클릭하고 "추가", "새 필터"를 클릭 한 후 이름 "src"를 입력하십시오.
  5. "projA"를 마우스 오른쪽 버튼으로 클릭하고 "추가", "새 필터"를 클릭 한 후 이름 "포함"을 입력하십시오.
  6. "projA"/ "src"를 마우스 오른쪽 단추로 클릭하고 "추가", "기존 항목"을 클릭 한 다음 / root / projA / src를 찾아 모든 소스 코드를 추가하거나 원하는 소스 코드를 하나씩 추가하십시오.
  7. "projA"/ "includes"에 대해서도 동일
  8. projB에 대해서도 동일하게 수행하십시오. 이제 외부 / 기존 프로젝트가 솔루션 / 프로젝트에 있습니다. VS가 함께 컴파일합니다. 트릭이 있습니다. projA 및 projB는 프로젝트의 가상 폴더이므로 컴파일러가 projA / include를 찾지 못할 수 있습니다.

  9. 프로젝트를 포함하지 않으면 프로젝트를 마우스 오른쪽 단추로 클릭하고 "속성"을 선택하십시오.

  10. "C / C ++"로 이동하십시오. "추가 포함 디렉토리"를 편집하고 "../projA/includes"와 같은 상대 경로로 projA / include를 추가하십시오.

하나의 경고, 포함 / 헤더 파일이 중복 된 경우 "헤더 파일"의 "프로젝트에서 제외"가 실제로 작동하지 않습니다. VS의 버그입니다.


0

Visual Studio 2017 이상 .csproj은 "SDK 형식"으로 알려진 새로운 경량 형식을 지원합니다 . 이 형식의 여러 장점 중 하나는 포함 된 파일 및 폴더 목록을 포함하는 대신 파일이 기본적으로 와일드 카드로 포함된다는 것입니다. 따라서이 새로운 형식을 사용하면 탐색기 나 명령 줄에 추가 된 파일과 폴더가 자동으로 선택됩니다.

SDK 형식 .csproj파일은 현재 다음 프로젝트 유형에서 작동합니다 .

  • 클래스 라이브러리 프로젝트

  • 콘솔 앱

  • ASP.NET Core 웹 앱

  • 모든 유형의 .NET Core 프로젝트

새로운 형식을 사용하려면 새로운 .NET Core 또는 .NET Standard 프로젝트를 작성하십시오. Visual Studio 2019에서도 전체 .NET Framework에 대한 템플릿이 업데이트되지 않았으므로 .NET 클래스 라이브러리를 만들려면 .NET 표준 라이브러리 템플릿을 선택한 다음 프로젝트 파일을 편집하여 선택한 프레임 워크 버전을 대상으로합니다 ( 새 스타일 프로젝트 형식은 Visual Studio에서 편집 할 수 있습니다. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 "프로젝트 파일 편집"을 선택하십시오. 예를 들면 다음과 같습니다.

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

더 읽을 거리 :

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.