错误 CS0012:类型 'ConnectionStringSettings' 在升级到 Visual Studio 2015 后未被引用的程序集中定义

error CS0012: The type 'ConnectionStringSettings' is defined in an assembly that is not referenced after upgrading to Visual Studio 2015

我刚刚从 Visual Studio 2013 Pro 升级到 Visual Studio 到 2015 (Enterprise),当我编译我的解决方案时,出现以下错误:

error CS0012: The type 'ConnectionStringSettings' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

安装过程中有什么我遗漏的吗?从现在开始我是否必须手动添加对我的项目的引用?

UPDATE:是的,在向项目添加对 System.Configuration 的引用后它确实有效,但问题更多的是为什么我需要在 Visual Studio 2015(它曾经在 Visual Studio 2013 中没有参考文献工作)

UPDATE:解释上下文:我在一个团队中工作,开发人员使用各种版本的 Visual Studio(2012 年起)。如果使用 Visual Studio < 2015 的开发人员忘记手动添加该引用,他们将不会收到编译错误,但 VS2015 上的开发人员会。所以团队了解这里发生的事情很重要:)

我能想到为什么你突然必须在 VS 2015 中添加对 System.Configuration.dll 的显式引用而你在早期版本的 VS 中不必这样做的两个原因:

  • 在解决方案迁移/更新期间,您的项目的 .NET Framework 设置已更改为更新的 .NET Framework。在较新的 .NET Framework 版本中,ConnectionStringSettings 类型已移至不同的程序集。

    老实说,这对我来说不太可能,但可以检查一下。

  • 构建系统 (MSBuild) .targets 在 VS 2015 中发生了变化。以前的构建目标会自动添加对 System.Configuration.dll 程序集的引用,而较新的构建目标不会不要再那样做了;这就是为什么您现在必须手动添加缺少的程序集引用。

    (请注意,当您在 Visual Studio 中创建项目时,构建系统通常会处理对 mscorlibSystemSystem.Core 的引用。即使你删除了这些程序集引用,它们在编译期间仍然是 "there"。也许在 VS 2015 之前,System.Configuration 已经发生了类似的事情。)

    我还没有证实这一点,但似乎是对这两者的更可能的解释。

这些只是试图解释这一点(又名猜测),所以也许有一个完全不同的原因。