실제 폴더로 Visual Studio 솔루션 폴더


119

Visual Studio 솔루션이 있습니다. 현재 빈 솔루션 (= 프로젝트 없음)이며 몇 가지 솔루션 폴더를 추가했습니다.

솔루션 폴더는 실제로 파일 시스템에서 생성되지 않고 솔루션 폴더 내의 파일이 .sln 파일과 동일한 폴더에 있기 때문에 "가상 폴더"로만 보입니다.

Visual Studio에서 솔루션 폴더를 "실제"폴더로 취급하도록 지시하는 설정이 있습니까? 즉, 파일 시스템에서 파일을 만들고 솔루션 내부에서 해당 폴더 중 하나로 이동할 때 파일을이 폴더로 이동하는 것입니다.

편집 : 감사합니다. VS2010에 대한 제안을 할 것입니다 :)


52
이것은 가장 성가신 Visual Studio 특징 중 하나입니다
Andy White

이 문제를 어떻게 올바르게 처리 할 수 ​​있습니까?
hellboy

재미있게도 Rider에는이 기능이 있습니다 (하지만 폴더는 .sln 파일과 동일한 경로에 있어야하며 실제 폴더 참조는 .sln 파일 자체에 저장되지 않음) : jetbrains.com/help/rider/Extending_Your_Solution. html
rsenna

저는 VS 2017을 사용하고 있으며 MS는 아직 전체 폴더를 솔루션 폴더에 추가 할 수있는 기능을 추가하지 않았습니다. 개별 파일을 추가해야합니다.
Theo

답변:


43

특별한 설정이 없습니다. 지원되지 않는다고 생각합니다.

솔루션 내 "프로젝트"에 실제 폴더를 만들 수 있지만 솔루션 자체에는 만들 수 없습니다.


1
이것은 VS 2017에서 여전히 정확한 것으로 보입니다.
Theo

2
... 및 VS 2019
whymatter

VS에 대한 최악의 것 중 하나입니다. MS는 Sln 폴더를 옵션으로 유지하지 않고 REAL 폴더를 솔루션에 추가 할 수도 있습니다. 너무 짜증나. 파일 시스템이 작동하는 이유는 휠 (사각형)을 재발 명하는 이유입니다.
MemeDeveloper

46

실제로 예상대로 작동하는 해결 방법 이 있습니다 .

  1. 신규 또는 기존 웹 사이트 추가솔루션에 를 . (보통 새로 만듭니다.)
  2. 솔루션 폴더 내에 생성되었는지 확인하십시오. (때로는 네트워크 공유에 'Docs'또는 'Marketing'과 같은 외부 폴더에 대한 "링크"를 생성하기도합니다.이 경우에는 물론 Git에서 무시합니다.)
  3. "프로젝트"설정 또는 구성 관리자로 이동 하여이 "웹 사이트"를 빌드 및 배포에서 제외하십시오 !

끝난. 이제 솔루션 탐색기는 파일 시스템의 모든 변경 사항을 반영하며 그 반대도 마찬가지입니다 (하위 폴더 포함).

팀 내에서 공유되는 사양, 문서, PM 및 일부 DevOps 스크립트에 사용합니다. 선택하기 쉽고, 소스 제어에 포함 할 항목을 포함하거나 포함하지 않을 수 있으며, 올바르게 설정 한 경우 빌드와 충돌하지 않습니다.

이 기능이 해당 사용 사례를위한 것이 아니라는 것을 알고 있지만 오해의 소지가있는 "프로젝트"아이콘을 제외하고는 해당 해킹에 대한 부족함을 아직 찾지 못했습니다. 그리고 VS가 제공하는 클래식 (가상) 솔루션 폴더가 그림에 맞는 사용 사례가 여전히 있습니다. 어떻게 생각해?


4
전체 지침은 다음과 같습니다. 솔루션-> "추가"-> "새 웹 사이트 ..."-> ( "ASP.NET 빈 웹 사이트"를 선택했습니다)를 마우스 오른쪽 단추로 클릭합니다. 위치를 변경 한 후 경로에 "\ MyName"을 추가하는 것을 잊지 마십시오. 그렇지 않으면 "확인"을 클릭하면 대화 상자가 다시 열립니다. 그 후 솔루션-> "속성"-> "구성 속성"-> 웹 프로젝트의 "빌드"를 선택 취소합니다.
user764754 dec.

여전히 작동합니까? VS2015를 사용하지만 작동하지 않습니다.
Jan Paolo Go

VS2017에서는 실제 폴더를 완벽하게 생성하지만 솔루션 탐색기에 웹 사이트 아이콘 (어두운 원)이 표시됩니다. 아무도 그것을 고치는 방법을 알고 있습니까?
Andrei Karcheuski

예, VS2019에서 작동하지만 여전히 파일 시스템 변경 사항을 모니터링하지 않습니다. 현재 파일을 보려면 가끔 "새로 고침"을해야합니다. C # 프로젝트 만이 새롭고 깔끔하고 명확한 파일 시스템 glob 기반 .*proj형식 을 지원하는 유일한 솔루션 유형이 아닌 경우 .
shannon

32

Visual Studio 2017에서는 솔루션 탐색기 창에서 "솔루션 및 폴더"아이콘을 클릭합니다. 이 버튼은 가상 "솔루션"보기에서 파일 시스템의 폴더 및 파일 레이아웃과 일치하는 "소스보기"로 전환합니다. 새 폴더를 추가하면 폴더가 예상 위치에 실제로 만들어집니다. 솔루션 및 폴더.


이것은 유용하지만 "소스보기"에서 프로젝트의 모든 오른쪽 클릭 바로 가기, 즉 "NuGet 패키지 관리"를 잃어 버렸습니다.
David Liang

1
C ++ 솔루션이나 프로젝트 만 다른 언어와 다르게 작동하는 이유는 무엇입니까?
친근한 유령

이것이 도움이 되었기 때문에 원하는 폴더보기에 폴더를 만든 다음 솔루션 폴더를 추가하고 프로젝트를 폴더의 자식으로 추가했습니다. 나던 정말 이해가하지만,이 대답은 저를 도왔
hanzolo

이것이 바로 내가 원하는 것입니다. 감사!
user1633272

10

선택한 답변은 솔루션 폴더 대신 실제 프로젝트를 사용할 수 있음을 시사하지만 실제로 방법을 설명하지는 않습니다. 내가 여기서 설명하는 것은 아마도 그것을 달성하는 가장 어색한 방법이라고 생각합니다 ... :-P

일반 프로젝트 파일 의 문제점 은 결국 MSBUILD. 그리고 컴파일 수없는 파일 만 포함 된 프로젝트를 원한다면 문제 입니다.

하지만 얼마 전 Visual Studio는 새로운 프로젝트 유형 인 공유 프로젝트 (.shproj 확장자)를 도입했습니다 . 이 프로젝트 유형은 기본적으로 컴파일 되지 않고 다른 프로젝트에서 참조되는 경우에만 컴파일됩니다.

따라서 여기서 트릭의 한 부분 은 솔루션 폴더 대신 공유 프로젝트사용하는 것입니다 . 다른 프로젝트에서 참조 하지 않는 공유 프로젝트를 추가 할 수 있습니다. 즉, 위에 제시된 문제를 피할 수 있습니다.

그런 다음 <None Include="**/*" /> .shproj 파일의 절 새 파일 및 / 또는 하위 폴더를 자동으로 반영 하도록 만들 수 있습니다 .

따라서 기본적으로 다음을 수행하십시오.

  • 솔루션에 새 폴더를 만듭니다.
  • 이 새 폴더의 루트에 새 .shproj 파일을 추가하십시오.
  • 솔루션에서 새 .shproj를 참조하십시오.

예를 들어, 필자의 경우 DockerDev.shproj를 만들었으므로 개발 컴퓨터에서만 실행하는 일부 도커 관련 스크립트를 그룹화 할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<!-- DockerDev/DockerDev.shproj -->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <None Include="**/*" />
  </ItemGroup>
</Project>

이 .shproj 파일은 모든 파일을 추적 합니다.DockerDev 내 솔루션 에있는이 새 폴더의 하위 폴더 합니다.

내가 볼 수있는 한,이 솔루션은 OP가 요청한 것과 거의 비슷하게 작동합니다. 폴더에 대한 컴파일 할 수없는 참조로 작동하고 변경 사항이 자동으로 반영됩니다.


제 경험상, 의심하지 않는 팀원이 파일 속성을 건 드리 자마자이 문제가 쌓입니다. 그 후에 탐색 창에 중복 파일이 나타납니다. 어떤 조건에서는 모든 파일이 .proj 파일에 열거 된 다음 추악함이 발생합니다. 포기하는 것을 싫어하지만 여전히 '기존 웹 사이트 추가'접근 방식을 선호합니다.
shannon

@shannon 나는 당신이 언급 한 행동을 경험 한 적이 없지만 "증거의 부재는 부재의 증거가 아닙니다", 그래서 거기에 있습니다. 하지만 저는 공유 프로젝트를 매일 사용하므로 그것도 중요하다고 생각합니다. 웹 사이트 프로젝트 (WSP)와 관련하여 그들은 또한 작동 할 수있었습니다. 제가 생각하기에 오랫동안 사용하지 않았던 것 같습니다.
rsenna

8

Sara Ford는이를 추가하기 위해 매크로를 제공했습니다. Visual Studio 2010에서 매크로 탐색기를 열면 "GenerateSlnFolderOnDirStructure"라는 매크로가 표시됩니다. 이렇게하면 솔루션 폴더 생성이 자동화되고 파일이 추가됩니다.


5

솔루션 폴더에 폴더 Cecilia Wirén-CeciliaSHARP

솔루션 폴더에 여러 파일을 추가하는 번거 로움을 제거합니다. 솔루션의 상황에 맞는 메뉴를 사용하고 새 솔루션 폴더를 만드는 옵션 바로 아래에 '솔루션 폴더로 폴더 추가'가 있습니다. 그러면 선택한 것과 동일한 이름의 솔루션 폴더가 생성되고 해당 폴더 내의 항목이 솔루션 폴더에 추가됩니다. 이것은 디스크의 파일을 이동하지 않습니다.


3

아니요, 지원되지 않습니다. 예상했듯이 솔루션 폴더는 .sln 파일의 가상 하위 항목이며 파일 시스템과는 아무 관련이 없습니다.


3

Visual Studio는이를 지원하지 않습니다. 그래도 VS2013과 비슷한 작업을 수행하는 확장을 만들었습니다. 매핑은 단방향 (하드 드라이브에서 솔루션으로)이지만 솔루션 폴더를 하드 드라이브의 물리적 폴더에 매핑합니다. 즉, 솔루션 폴더의 내용은 하드 드라이브 폴더의 내용을 반영하며 그 반대는 반영하지 않습니다.

그 길을 벗어나면 확장 프로그램이 여전히 유용 할 수 있습니다. 솔루션 폴더를 실제 폴더에 매핑하고, 정규식을 기반으로 파일 및 디렉터리를 필터링하고, .sln 파일의 매핑을 기억하는 기능을 지원합니다. 속성은 방해가되지 않으므로 확장이없는 개발자는 여전히 sln을 열 수 있으며 영향을받지 않습니다.

Visual Studio 갤러리에서 호스팅 : https://visualstudiogallery.msdn.microsoft.com/69e19ea6-4442-4cb6-b300-044dd21f02bd

편집 : bitbucket에 업로드되었습니다. 이제 오픈 소스. MIT 라이센스. https://bitbucket.org/LSS_NorthWind/physical-solution-folders


3

참고 : 예, 루트에 폴더를 만들 수 있지만 약간 까다 롭습니다 ....

약간의 노력을 기울여서 할 수 있습니다. 어떻게? 단계를 따르십시오.

  • 1- 폴더 만들기 예 : " newfolder 루트의 "(.sln 파일이있는 위치).
  • 2. 폴더 안에 프로젝트를 복사하여 붙여 넣습니다.
  • 3. sln 파일로 이동하여 이동 된 프로젝트를 찾고 이동 된 프로젝트의 주소에 newfolder \를 추가합니다.
  • 4. sln 파일을 저장합니다.
  • 5. 프로젝트를 열고 저장소를 git 등으로 커밋합니다.
  • 6. 저장소를 새로운 위치로 가져갑니다.

    완료되었습니다 ...

그래도 폴더를 볼 수없는 경우 -----

  • 1. 솔루션 폴더 xyz를 추가합니다.
  • 2. sln 파일을 열고 해당 폴더 이름을 폴더 이름으로 변경합니다.

완료 한 것을 축하합니다 ..

문제가 생기면 저에게 도움을 요청하세요 ..


3

"솔루션 폴더"를 만듭니다. 이것은 논리적 폴더를 생성하지만 물리적 폴더는 생성하지 않습니다. 솔루션 폴더를 마우스 오른쪽 버튼으로 클릭하고 새 프로젝트 대화 상자를 엽니 다. 그러나 확인을 클릭하기 전에 프로젝트 위치를 원하는 물리적 폴더로 변경해야합니다. 그러면 VS가이를 만들고 프로젝트를 내부에 배치합니다.


1

Visual Studio 프로젝트 파일에 대해 "새 필터 추가"를 선택하여 실제 폴더를 추가 할 수 있습니다. 기존 폴더 아래에서 "새 필터 추가"를 수행 할 수도 있습니다. 폴더가 생성되면 이름을 바꾸고 소스 또는 헤더 파일 또는 프로젝트에 적합한 파일을 추가하십시오. 이것은 Visual Studio IDE를 통해 실제 폴더를 만들 수있는 방법 중 하나입니다.


이 기능은 C ++ 프로젝트에만 해당됩니다.
Tamir Daniely

이 솔루션은 VS 프로젝트에도 적용됩니다. 문제는 솔루션 수준 폴더에 관한 것입니다.
Theo

0

솔루션 아래에 생성 된 폴더는 말한대로 가상입니다. 아마도 이것은 해결 방법이라고 할 수 있지만 새 항목 / 프로젝트를 추가하기 전이나 추가 할 때 물리적으로 디스크에 폴더를 만들 수 있으며 Robert는 아빠의 형제 자매 여야합니다.

추신-자세히 살펴보면 "밥이 삼촌이야"는 당신의 벌금 / 정렬을 의미한다고 설명해야 할 것 같습니다.


로버트가 어머니의 동생이라면 상관 없나요?
Darrel Lee

0

필자는이 기능을 몇 번 원했지만 결국에는 이 기능을 원하지 않습니다 . 솔루션 (파일)을 웹 애플리케이션의 루트로 생각하고 솔루션 폴더를 가상 디렉터리 (문자 적으로나 기능적으로)로 생각하십시오. 웹 가상 디렉터리의 내용은 물리적으로 완전히 다른 서버에있을 수 있습니다. Visual Studio가 솔루션 폴더 개념을 혼동 한 곳은 폴더 내에 새 파일을 만들 수 있다는 것입니다. 항상 "기존 추가" 해야합니다.콘텐츠를 추가 할 때는 합니다. 기존 항목을 추가하면 파일의 소스 위치에 대한 링크가 생성됩니다.

그러나 솔루션 폴더가 "물리적"폴더처럼 작동하지 않도록하는 이유는 솔루션 레이아웃이 반드시 소스 제어 레이아웃과 동일한 규칙을 사용하지 않을 수 있기 때문입니다. 솔루션 폴더를 사용하면 프로젝트와 항목을 원하는 방식으로 그룹화 할 수 있도록 프로젝트의 계층을 사용자 정의 할 수 있으며, 소스 제어 항목을 이동하는 악몽을 겪지 않고도 마음에 들지 않는다고 결정하고 다시 변경할 수 있습니다. 나머지 팀을 짜증나게합니다.


1
이것이 정답입니다. 가상 폴더와 동일한 이름의 폴더에 디스크에 파일을 만든 다음 '기존 추가'를 사용하여 VS에 파일을 추가하십시오.
리처드

4
가상 폴더와 실제 폴더를 모두 쉽게 구현할 수있었습니다. 분명히 간과입니다. 참조 참조 : 다른 모든 IDE.
Tamir Daniely

6
(IIS) 가상 디렉터리의 개념이 솔루션 폴더와 관련이있는 이유를 전혀 이해하지 못합니다. 소스 제어 인수에 관해서는 문제가 없습니다. 파일 이동이 나머지 팀을 짜증나게하는 이유는 무엇입니까? 일반적인 작업입니다. 그리고 소스 제어의 파일 레이아웃이 물리적 레이아웃과 다른 이유는 무엇입니까?
user247702

2
물리적 솔루션 폴더가 (조금이라도) 쉽게와 같은 현대적인 폴더 구조를 만들 수 것 NancyFx의 여러 프로젝트가 같은 범주로, src, test, tools, 등 당신은 확실히 대한 포인트에 프로젝트 초기에 그 결정을 할 것 팀을 짜증나게하지만 대부분의 건축 결정에 해당됩니다.
Eric Eskildsen

3
-1 내 사용 사례는 다음과 같습니다. 때로는 특정 문서를 솔루션에 추가하고 싶을 때도 있습니다. 빌드되지는 않지만 소스 제어에 보관됩니다. 우리는 보통 그들을위한 특별한 폴더를 가지고 있습니다. 내 솔루션에 포함 된 파일이 아니라 폴더 자체에 해당 폴더 를 갖고 싶습니다 . 예,이 제한을 우회하는 방법이 있지만 최적이 아닙니다. 솔루션의 폴더에 대한 실제 참조가 있으면 간단히 작동합니다.
rsenna

0

나는 이것에 대한 약간의 해결 방법이 있습니다 (좋지는 않지만 작동합니다).

  1. 솔루션에 폴더 만들기 (예 : "Contoso")
  2. 솔루션을 마우스 오른쪽 단추로 클릭 한 다음 "솔루션 탐색기에서 폴더 열기"를 클릭합니다.
  3. 솔루션 디렉터리에 물리적 폴더 (예 : "Contoso")를 만듭니다.
  4. 물리적 폴더에 파일을 복사 / 생성합니다.
  5. 솔루션 탐색기의 가상 폴더로 파일을 끕니다.

파일 참조를 수동으로 유지해야하기 때문에 좋지는 않지만 저에게는 효과적입니다.

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