2013-09-04 2 views
138

C# 솔루션에서 기존 프로젝트를 추가했습니다.csproj 파일에 "서비스 포함"이란 무엇입니까?

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

이가 무엇인가 : 그 후
은 Visual Studio에서 다른 .csproj 파일에 다음 항목을 추가했다?
삭제할 수 있습니까?

+0

솔루션을 삭제 한 후에 성공적으로 컴파일되었습니다.하지만 문제는 런타임에 어떻게됩니까? 나는 그것이 무엇을하는지 알아야한다. – joe

답변

203

내가이 추가 된 비슷한 경우가 있었다 :

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

이 포함 당신이 NUnit과 테스트 프로젝트를 만들 수 있지만 테스트 프로젝트로 태그를 잊어 버린 경우 VS2013에 의해 의도적으로 생성 될 밝혀, 이 answer Microsoft에서 설명하는대로 :

이 동작은 의도적입니다.

NUnit 및 XUnit과 같은 타사 테스트 프레임 워크를 지원하기 위해 Visual Studio 2012는 테스트 프로젝트가 포함되었는지 여부에 관계없이 솔루션을 열어서 테스트 탐색기를 열었습니다. 이로 인해 모든 사용자의 시동 및 솔루션 개방 시나리오에 지연이 추가되었으며 대다수는 테스트를 사용하지 않았습니다.

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

+3

VS 15.3 이상에서는 여전히 유용합니까? –

+4

@JaanusVarus 예, 여전히 VS 15.4에서 발생합니다 (동작을 이해하려고 시도하고 있었고 여기에서 저를 이끌었습니다). 그것이 당신의 질문이라면, 공연 결정을 재검토해야하는지 잘 모르겠습니다. –

10

GUID의 장점은 매우 독특하고 따라서 Google에서 쉽게 검색 할 수 있다는 것입니다. 나는 무엇을했고, 발견했다 : thisthis, 그리고 다른 흥미로운 히트.
SDK와 함께 제공되는 T4 DSL 도구에서 실제로 알려진 버그 인 것 같습니다. 다행히도 일부 레지스트리 키를 변경하여 해결하기가 쉽습니다.

+4

그리고 지금 내가 그것을 검색 할 때 나는이 질문을 얻는다 ;-). – binki

+2

이 링크가 질문에 대답 할 수 있지만 여기에 대답의 핵심 부분을 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. - [리뷰에서] (리뷰/저품절 포스트/19034960) –

23

개인적으로 나는 내 프로젝트 파일에이 서비스가 추가 된 것을 좋아하지 않으며 적절한 솔루션보다는 해결 방법과 같다고 생각합니다. 그래서 나에게 더 정확한 것 같다 테스트 프로젝트로 테스트 프로젝트를 표시하고이 첫 번째 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 번호를. 다른 프로젝트 유형에 대해서는 here

+7

^'ProjectTypeGuids'도 선호하지만, 크로스 플랫폼 개발을하고 MonoDevelop를 사용한다면'{3AC096D0-A1C2-E12C-1390-A8335801FDAB}'프로젝트를 열 수 없습니다 : "이 프로젝트 유형은 MonoDevelop에 의해 지원됩니다. " 테스트 프로젝트 유형 GUID 만 제거하면 두 IDE가 모두 만족스럽게 보입니다. – WynandB

+2

의 다른 가능한 유형은 무엇입니까? 그것에 대한 정보를 찾을 수 없습니다. –