1

我有一个 .NET 3.5 C# 控制台应用程序。我需要阅读 App.Config。当我去设置对 system.Configuration.dll 的引用时,我看到即使我的应用程序被编译为 Framework 的 3.5 版,Add Ref 对话框也只显示了 2.0 版的 dll。

所以我在下面找到了dll:

C:\Program Files\Reference Assemblies\Microsoft\Framework.NETFramework\v3.5\Profile\Client

我决定尝试直接设置对这个 3.5 dll 的引用。完成此操作后,我的项目最终得到了 2.0 版本。

到底是怎么回事?我认为如果一个应用程序是针对特定版本的框架编译的,那么作为框架一部分的所有 dll 都来自同一个版本。好像我在混合版本。我想我可以同时从旧版本的框架访问 dll 并不太惊讶,但是如果 3.5 文件夹中有更新的版本,为什么不使用它呢?或者这真的是放在 3.5 文件夹中的 2.0 dll 吗?

在此处输入图像描述

4

2 回答 2

2

System.Configuration.dll 来自框架的 v2.0。您找到的位置中的文件仍然与 .NET 2.0 文件相同,但它只是作为 3.5 客户端配置文件的打包组件存在(客户端配置文件只是完整 .NET 的精简版)。

.NET 3.5 版只是 2.0 版的一组扩展,因为它在 2.0 CLR 上运行,因此实现了来自 .NET 框架的 DLL 的 2.0、3.0 和 3.5 版本。System.Configuration.dll 中的类是引入的,并且仍然来自框架的 2.0 版本,因此 DLL 本身将始终为 2.0.0.0

有关更多详细信息:http ://en.wikipedia.org/wiki/.NET_Framework_3.5#.NET_Framework_3.5

于 2012-05-16T16:47:57.670 回答
1

.NET 3.5 基于 .NET 2.0 运行时,这意味着许多程序集仍然是 2.0。

这个是正常的。

于 2012-05-16T16:48:09.083 回答