Visual Studio 15 Preview 3을 설치하고 새로운 튜플 기능을 사용하려고했습니다.
static void Main(string[] args)
{
var x = DoSomething();
Console.WriteLine(x.x);
}
static (int x, int y) DoSomething()
{
return (1, 2);
}
컴파일 할 때 오류가 발생합니다.
사전 정의 된 유형 ‘System.ValueTuple´2’가 정의되지 않았거나 가져 오지 않았습니다.
블로그 게시물 에 따르면 이 기능은 기본적으로 “설정”되어 있어야합니다.
내가 뭘 잘못 했어?
답변
.NET 4.6.2 이하, .NET Core 1.x 및 .NET Standard 1.x의 경우 NuGet 패키지를 설치해야합니다 System.ValueTuple
.
Install-Package "System.ValueTuple"
또는 VS 2017에서 패키지 참조 사용 :
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
.NET Framework 4.7, .NET Core 2.0 및 .NET Standard 2.0에는 이러한 유형이 포함됩니다.
답변
의 일부입니다 .NET Framework 4.7
.
위의 프레임 워크 이상 (또는 .NET Core 2.0
/ .NET Standard 2.0
)을 타겟팅하지 않는 한 참조해야합니다 ValueTuple
. 이 작업을 추가하여System.ValueTuple
NuGet Package
답변
ValueTuple 유형은 최신 프레임 워크에 내장되어 있습니다.
- .NET Framework 4.7
- .NET 코어 2.0
- 모노 5.0
- .Net 표준 2.0
새로운 프레임 워크 버전 중 하나를 대상으로 할 때까지 ValueTuple 패키지를 참조해야합니다.
자세한 내용은 http://blog.monstuff.com/archives/2017/03/valuetuple-availability.html
답변
들어 비주얼 스튜디오 코드 에 내장 된 사용 터미널 및 실행 :
dotnet add package "System.ValueTuple"
dotnet restore
나중에 달리는 것을 잊지 마십시오 .
답변
VS 용 .NET 4.6.2 Developer Pack 이 설치되어 있는지 확인한 다음 System.ValueTuple
NuGet 에서 패키지를 가져 오십시오.
답변
다른 사람들이 같은 문제를 겪고 있다면 프로젝트를 4.7로 업데이트 한 후이 오류가 발생했습니다. 이상하게 도이 오류가 사라지려면 System.ValueTuple 참조를 제거해야했습니다.
답변
ValueTuple
.net Framework 프로젝트에 패키지 참조로 추가하는 것은 좋지 않습니다 . 아시다시피이 어셈블리는 4.7 .NET Framework에서 사용할 수 있습니다.
프로젝트가 ValueTuple
패키지 폴더 대신 .NET Framework 폴더의 모든 비용을 포함하려고 할 때 특정 어셈블리가 발견되지 않는 오류가 발생할 수 있습니다.
우리는 오늘 회사에서이 문제를 겪었습니다. 우리는 2 개의 프로젝트로 솔루션을 가지고있었습니다 (나는 그것을 단순화했습니다).
Lib
Web
Lib
ValueTuple을 포함하고을 사용하고 Web
있었습니다 Lib
. 그것은 알 수없는 이유에 의해 밝혀졌다 Web
에 해결 경로로 시도 할 때 ValueTuple
가졌다 HintPath
.NET 프레임 워크 디렉토리에 잘못된 버전을 복용했다. 그로 인해 애플리케이션이 충돌했습니다. ValueTuple
에 정의되지 않은 .csproj
의Web
도 HintPath
그 조립. 문제는 매우 이상했다. 일반적으로 패키지 폴더에서 어셈블리를 복사합니다. 이번은 정상이 아니었다.
나를 위해 항상 System.*
패키지 참조 를 추가하는 것은 위험합니다 . 그들은 종종 시한 폭탄과 같습니다. 그들은 처음에는 괜찮으며 최악의 순간에 당신의 얼굴에서 폭발 할 수 있습니다. 내 규칙 : .NET Framework에System.*
Nuget 패키지를 사용하지 마십시오 실제로 필요하지 않은 경우 .
프로젝트 내의 파일에 수동 ValueTuple
으로 추가하여 문제를 해결 했습니다..csproj
Web