Error CS0234 The type or namespace name 'ITuple' does not exist in the namespace
4.7.1 SDK / targeting pack 설치 후 단위 테스트 프로젝트에서 다음과 같은 오류가 발생할 수 있습니다.
Error CS0234 The type or namespace name 'ITuple' does not exist in the namespace 'System.Runtime.CompilerServices' (are you missing an assembly reference?)
왜냐하면, 4.7.1에 포함된 어셈블리부터 ITuple을 제공하는데 Visual Studio Unit Test 프레임워크가 시스템에 설치된 4.7.1을 인식하고 fakes 생성 시 그 버전을 대상으로 하기 때문입니다.
하지만, 정작 유닛 테스트 C# 프로젝트의 Target framework이 4.0 등으로 되어 있다면 정상적인 4.7.1 어셈블리를 참조하지 못하므로 저런 오류가 발생하게 됩니다. 해결 방법은 다음의 글에 따라,
Error generating fakes with ITuple
; https://stackoverflow.com/questions/46959892/error-generating-fakes-with-ituple
단위 테스트 C# 프로젝트의 대상 플랫폼을 .NET 4.7.1로 맞추거나 위의 Q&A에 나온 대로 ITuple
fakes 생성을 하지 않도록 설정하면 됩니다.
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="mscorlib" Version="4.0.0.0"/>
<StubGeneration>
<Remove FullName="System.Runtime.CompilerServices.ITuple"/>
</StubGeneration>
</Fakes>
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]