4.0中的System.Core.dll默认添加?

Nir*_*jan 7 .net visual-studio-2010-beta-2

我正在玩VS2010 beta2.我注意到,如果我尝试将System.Core.dll添加到一个尚未引用该项目的项目中,在VS2010中,它会抱怨说我无法添加该程序集,因为它已经被项目系统引用.知道他们为什么在VS2010/4.0中这样做吗?是因为他们从System.Core转发了几种类型的mscorlib?

Ale*_*lex 5

不是"为什么他们这样做"的答案,但可能会有所帮助.

这就是我看到导致隐式引用的动作链System.Core.dll:

  • 您在Visual Studio 2010中创建一个项目.它生成.csproj ToolsVersion=4.0.假设它将使用.NET 4中的MSBuild.
  • 你.csproj的进口Microsoft.CSharp.targets$(MSBuildBinPath).我想会的c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.CSharp.targets
  • Microsoft.CSharp.targets导入 Microsoft.Common.targets
  • 在.NET 4中,Microsoft.Common.targets导入 Microsoft.NETFramework.props
  • 在Microsoft.NETFramework.props中,您可以找到AdditionalExplicitAssemblyReferencesnode,它具有以分号分隔的程序集列表.我发现有System.Core.dll和一个变量供以后更换.

因此,要禁用 System.Core.dll的隐式引用,可以从AdditionalExplicitAssemblyReferences节点中的列表中删除它c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.NETFramework.props.

在此之后,如果您使用,例如,System.Linq并且在项目中没有引用System.Core.dll,您将在逻辑上得到编译错误,就像在Visual Studio 2008中一样.


ito*_*son 3

自 3.5 以来,System.Core 一直是所需框架的一部分,因为它包含 ExtensionAttribute 和 LINQ 标准查询运算符等内容。同样,如果您在VS2008中创建3.5项目,它会自动为您添加对System.Core的引用。

  • 提出错误:https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=525663 (3认同)