2010-01-19 5 views
5

저는 VS2010 beta2로 놀고있었습니다. 이미 System.Core.dll을 VS2010에서 이미 참조가없는 프로젝트에 추가하려고하면 프로젝트 시스템에서 이미 참조 된대로 해당 어셈블리를 추가 할 수 없다는 메시지가 나타납니다. VS2010/4.0에서 왜 그렇게하고 있는지 알고 싶습니다. System.Core에서 mscorlib에 몇 가지 유형을 전달했기 때문입니까?기본적으로 4.0의 System.Core.dll이 추가 되었습니까?

+0

감사를 얻을 것이다 우리는 vs2010과 함께 .Net4를 시도했지만 솔루션에 너무 많은 수하물이있어서 3.5로 다시 돌아갔습니다. 제기 한 버그 다음에 해결 방법을 발견 했으므로 System.Core에 대한 참조를 다시 빌드하지 않고 프로젝트에 추가 할 수있었습니다. –

+0

SL4 프로젝트를 SL5로 포팅 할 때 VS2012에서 동일한 문제가 발생합니다. –

답변

3

System.Core는 ExtensionAttribute 및 LINQ Standard Query Operators와 같은 항목을 포함하므로 3.5 이후로 필수 프레임 워크에 포함되었습니다. 마찬가지로 VS2008에서 3.5 프로젝트를 만들면 System.Core에 대한 참조가 자동으로 추가됩니다.

+0

3.5에서도 System.Core에 대한 참조가 기본적으로 추가된다는 것을 알고 있습니다. 하지만 차이점은 프로젝트에서 System.Core의 참조를 제거한 다음 다시 추가하려고하면 해당 어셈블리가 이미 프로젝트에 있음을 알리는 침대가됩니다. 이것은 3.5에서 발생하지 않습니다. – Niranjan

+0

그 소리는 버그처럼 들립니다.이 필수 참조를 제거해서는 안되며 참조를 제거하더라도 다시 추가 할 수 있도록해야합니다. Connect에 대한보고 가치가 있습니다. – itowlson

+3

버그 발생 : https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=525663 – Niranjan

5

"왜 그렇게하고 있는지"에 대한 대답은 아니지만 도움이 될 수 있습니다.

  • 프로젝트가 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.propsAdditionalExplicitAssemblyReferences 노드 목록에서 제거 할 수 있습니다. 당신이 사용하는 경우이 후

, 예를 들어, System.Linq 및 프로젝트에 System.Core.dll에 대한 참조가 없습니다, 당신은 논리적으로 만 Visual Studio에서 같은 오류를 컴파일이 질문에 대한 2008 년