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.