저는 VS2010 beta2로 놀고있었습니다. 이미 System.Core.dll을 VS2010에서 이미 참조가없는 프로젝트에 추가하려고하면 프로젝트 시스템에서 이미 참조 된대로 해당 어셈블리를 추가 할 수 없다는 메시지가 나타납니다. VS2010/4.0에서 왜 그렇게하고 있는지 알고 싶습니다. System.Core에서 mscorlib에 몇 가지 유형을 전달했기 때문입니까?기본적으로 4.0의 System.Core.dll이 추가 되었습니까?
답변
System.Core는 ExtensionAttribute 및 LINQ Standard Query Operators와 같은 항목을 포함하므로 3.5 이후로 필수 프레임 워크에 포함되었습니다. 마찬가지로 VS2008에서 3.5 프로젝트를 만들면 System.Core에 대한 참조가 자동으로 추가됩니다.
3.5에서도 System.Core에 대한 참조가 기본적으로 추가된다는 것을 알고 있습니다. 하지만 차이점은 프로젝트에서 System.Core의 참조를 제거한 다음 다시 추가하려고하면 해당 어셈블리가 이미 프로젝트에 있음을 알리는 침대가됩니다. 이것은 3.5에서 발생하지 않습니다. – Niranjan
그 소리는 버그처럼 들립니다.이 필수 참조를 제거해서는 안되며 참조를 제거하더라도 다시 추가 할 수 있도록해야합니다. Connect에 대한보고 가치가 있습니다. – itowlson
버그 발생 : https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=525663 – Niranjan
"왜 그렇게하고 있는지"에 대한 대답은 아니지만 도움이 될 수 있습니다.
- 프로젝트가 Visual Studio 2010에서 Visual Studio 2010에서 그것은
ToolsVersion=4.0
과 .csproj 생성합니다 내가 암시System.Core.dll
를 참조로 이어질 행동의 체인을 어떻게 보는지이입니다. .NET 4의 MSBuild를 사용한다고 가정합니다.
- .csproj import
Microsoft.CSharp.targets
$(MSBuildBinPath)
에서 가져옵니다. 나는 그것이 .NET 4에서c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.CSharp.targets
- Microsoft.CSharp.targets 수입
Microsoft.Common.targets
- 될 것 세미콜론을 가지고
AdditionalExplicitAssemblyReferences
노드를 찾을 수 있습니다 Microsoft.NETFramework.props에서Microsoft.NETFramework.props
- Microsoft.Common.targets 수입을 추측 - 분리 된 어셈블리 목록. 거기에 System.Core.dll 및 나중에 대체 할 수있는 변수가 있습니다.
그래서, System.Core.dll의 비활성화 암시 적 참조, 당신은 c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.NETFramework.props
에 AdditionalExplicitAssemblyReferences
노드 목록에서 제거 할 수 있습니다. 당신이 사용하는 경우이 후
, 예를 들어, System.Linq
및 프로젝트에 System.Core.dll에 대한 참조가 없습니다, 당신은 논리적으로 만 Visual Studio에서 같은 오류를 컴파일이 질문에 대한 2008 년
감사를 얻을 것이다 우리는 vs2010과 함께 .Net4를 시도했지만 솔루션에 너무 많은 수하물이있어서 3.5로 다시 돌아갔습니다. 제기 한 버그 다음에 해결 방법을 발견 했으므로 System.Core에 대한 참조를 다시 빌드하지 않고 프로젝트에 추가 할 수있었습니다. –
SL4 프로젝트를 SL5로 포팅 할 때 VS2012에서 동일한 문제가 발생합니다. –