csproj 파일에서“Service Include”란 무엇입니까?


194

C # 솔루션에서 기존 프로젝트를 추가했습니다.
그 후 Visual Studio는 다른 .csproj 파일에 다음 항목을 추가했습니다.

<ItemGroup>
    <Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" />
</ItemGroup>

이게 뭐야?
삭제할 수 있습니까?


1
솔루션은 삭제 후 성공적으로 컴파일되었지만 런타임에 어떤 일이 발생합니까? 그것이 무엇을해야하는지 알아야합니다.
joe

답변:


260

나는 이것이 추가 된 비슷한 경우를 가지고 있었다.

<ItemGroup>
  <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
</ItemGroup>

이 포함은 NUnit 테스트 프로젝트를 만들면 VS2013에서 의도적으로 생성되지만 Microsoft 의이 답변에 설명 된 것처럼 테스트 프로젝트로 태그 지정하는 것을 잊지 마십시오 .

이 동작은 의도적 인 것입니다.

NUnit 및 XUnit과 같은 타사 테스트 프레임 워크를 지원하기 위해 Visual Studio 2012는 테스트 프로젝트가 포함되어 있는지 여부에 관계없이 솔루션 탐색기에 테스트 탐색기를로드했습니다. 이로 인해 대부분의 사용자가 테스트를 사용하지 않는 시작 및 솔루션 개방 시나리오가 몇 초 지연되었습니다.

Visual Studio 2013에서는 솔루션에 하나 이상의 테스트 프로젝트가 포함 된 경우에만 테스트 탐색기 패키지가로드되도록 변경했습니다. 테스트 프로젝트는 두 가지 방식으로 식별됩니다. 내장 단위 테스트 프로젝트 템플릿 중 하나에서 생성 된 프로젝트는 프로젝트 유형 GUID를 사용하여 식별됩니다. XUnit 또는 NUnit 테스트가 포함 된 클래스 라이브러리 프로젝트와 같은 다른 유형의 프로젝트는 첫 번째 테스트 발견 중에 테스트 탐색기에 의해 식별되고 <Service/>항목에 "태그"가 붙습니다 .


8
VS 15.3 이상에서도 여전히 유용한가요?
Jaanus Varus

5
@JaanusVarus 예, 이것은 여전히 ​​VS 15.4에서 발생합니다 (동작을 이해하려고 노력했기 때문에 여기로 나를 인도했습니다). 그것이 당신의 질문이라면 성능 결정을 다시 방문 해야하는지 확실하지 않습니다.
Lars Kemmann

2
15.6
dimaaan

2
@Adrian 이것은 당신이 테스트 프로젝트로 표시하는 방법입니다. VS는 기본적으로 "이것은 아마도 테스트 프로젝트 인 것 같습니다. 따라서 계속 표시해 드리겠습니다." 또는 Vladimirs의 답변에 언급 된 프로젝트 유형을 추가하십시오.
GalacticCowboy

2
Visual Studio 2017 (버전 15.x)에서는이 문제가 발생했습니다. 역사는 이 스레드 를 참조하십시오 . 이 스레드는 이것이 Visual Studio 15.7에서 최종적으로 수정 될 것이라고 언급합니다.
Structed

35

개인적 으로이 서비스가 프로젝트 파일에 추가되는 것을 좋아하지 않으며 적절한 서비스보다는 해결 방법과 비슷하다고 생각합니다. 로 테스트 프로젝트를 표시 그래서 테스트 프로젝트는 나에게 더 정확한 것 같습니다이 처음이 추가함으로써 달성 될 수있다 PropertyGroup:

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<TestProjectType>UnitTest</TestProjectType>

{3AC096D0-A1C2-E12C-1390-A8335801FDAB}테스트 프로젝트 및 {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}C #을 의미합니다. 다른 프로젝트 유형 guids는 여기 로 이동


11
^ 나도 선호 ProjectTypeGuids하지만 크로스 플랫폼 개발을하고 MonoDevelop를 사용하는 경우 {3AC096D0-A1C2-E12C-1390-A8335801FDAB}프로젝트 를 열 수 없습니다 : "이 프로젝트 유형은 MonoDevelop에서 지원되지 않습니다". 테스트 프로젝트 유형 GUID를 간단히 제거하면 두 IDE 모두 만족스러워 보입니다.
WynandB

3
<TestProjectType>에 가능한 다른 유형이 무엇인지 궁금합니다. 정보가 없습니다.
J Pollack

12

잘 알려진 / 상수 GUID 의 장점 은 매우 독특하고 Google에서 검색하기가 매우 쉽다는 것입니다. 내가하고, 찾은 것 : 이것이것 뿐만 아니라 다른 흥미로운 히트.
이것은 실제로 SDK와 함께 제공되는 T4 DSL 도구의 알려진 버그 인 것 같습니다. 다행히 일부 레지스트리 키를 변경하면 쉽게 해결할 수 있습니다.


8
그리고 지금 검색 할 때이 SO 질문을 얻습니다. ;-).
binki

분명히 T4 DSL 버그는 서비스 태그 B4F97281-0DBD-4835-9ED8-7DFB966E87FF 가 T4를 사용하지 않더라도 모든 프로젝트에 추가되었다는 것입니다. 이 버그는 Visual Studio 2008에서 수정되었습니다. GUID가 다르더라도 T4를 사용하는 프로젝트에 서비스 태그가 계속 추가됩니다. VS2017의 경우에도 여전히 그렇습니다.
duncanp
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.