C# NET Framework从v3.5迁移到v4.0

C# NET Framework从v3.5迁移到v4.0,c#,frameworks,C#,Frameworks,我有一个VisualStudio2008解决方案和.NETFrameworkV3.5。最近,我已转换为Visual Studio 2010和.NET Framework v4.0 要更改为.NET Framework v4.0,我已通过“项目属性和生成”选项卡,将每个项目的目标更改为目标Framework v4.0。 但是,如果我打开配置项目文件csproj,我可以看到有一个与v3.5相关的标记: <ItemGroup> <Reference Include="Syst

我有一个VisualStudio2008解决方案和.NETFrameworkV3.5。最近,我已转换为Visual Studio 2010和.NET Framework v4.0

要更改为.NET Framework v4.0,我已通过“项目属性和生成”选项卡,将每个项目的目标更改为目标Framework v4.0。 但是,如果我打开配置项目文件csproj,我可以看到有一个与v3.5相关的标记:

 <ItemGroup>
   <Reference Include="System" />
   <Reference Include="System.Core">
    <RequiredTargetFramework>3.5</RequiredTargetFramework>
   </Reference>
   <Reference Include="System.Data" />
   <Reference Include="System.Drawing" />
   <Reference Include="System.Xml" />
   <Reference Include="WindowsBase">
    <RequiredTargetFramework>3.0</RequiredTargetFramework>
   </Reference>
 </ItemGroup>

3.5
3
我想知道,如果项目的目标是.NETFrameworkV4.0,为什么其中的一些参考文献会提到v3.0、v3.5框架。尽管该项目的目标是NetFrameworkV4.0,但其他项目也会出现这种情况

系统核心的目标是3.5
WindowsBase的目标是3.0

这些引用本身需要3.5(对于System.Core)和3.0(对于WindowsBase)。事实上,这并不是100%正确(见拉姆霍德对这个答案的评论)

到目前为止,2.0以上的任何.NETFramework本质上都是位于2.0之上的该站点的DLL。例如,几年前的一份工作中,我需要.NET2.0中的LINQ和Hashset,因为我的一半用户都被困在Win2K上,Win2K不支持.NET2.0以上的任何东西。我结束了对System.Core的重新编译,将其目标定为2.0,并能够使用更新的功能


我认为您无需担心。

我应该指出,两个RequiredTargetFramework XML元素也都是空的。这意味着没有针对3.5或3.0的参考。如果需要,您可以手动修改解决方案文件并删除这些行。@Ramhound:说得好。我从来没有仔细研究过csproj文件,所以我不知道。由于各种原因,我花了很多天的时间手工修改解决方案文件。在这种情况下,你的第一句话不是100%正确。在这种情况下,
System.Core
将是.NET Framework 4.0附带的版本,而用于WPF应用程序的
WindowsBase
也将是.NET Framework 4.0。这就是IDE在选择早期版本的.NET时知道如何显示警告图标的原因。功能,而不是bug。