【问题标题】:NET Framework migration from v3.5 to v4.0NET Framework 从 v3.5 迁移到 v4.0
【发布时间】:2012-12-22 15:19:25
【问题描述】:

我有一个 Visual Studio 2008 解决方案和 .NET Framework v3.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>

如果项目的目标是 .NET Framework v4.0,我想知道为什么某些包含的引用是指 v3.0、v3.5 框架。尽管项目针对 NET 框架 v4.0,但其他项目也会发生这种情况。

System.Core 的目标是 3.5 WindowsBase 的目标是 3.0

【问题讨论】:

  • 这就是当您选择早期版本的 .NET 时 IDE 知道显示警告图标的方式。功能,而不是错误。

标签: c# frameworks


【解决方案1】:

这些引用本身需要 3.5(对于 System.Core)和 3.0(对于 WindowsBase)。实际上,这不是 100% 正确的(请参阅 Ramhound 对此答案的评论)。

到目前为止,任何高于 2.0 的 .NET 框架本质上都是位于 2.0 之上的 DLL。例如,几年前的一份工作,我需要 .NET 2.0 中的 LINQ 和 Hashset,因为我的一半用户都卡在 Win2K 上,它不支持 .NET 2.0 以上的任何东西。我最终从 Mono 重新编译 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
猜你喜欢
  • 2022-08-12
  • 1970-01-01
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多