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

Posted

技术标签:

【中文标题】错误 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 【发布时间】:2015-07-23 10:11:19 【问题描述】:

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

错误 CS0012:类型“ConnectionStringSettings”在 未引用的程序集。您必须添加对程序集的引用 'System.Configuration,版本=4.0.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a'。

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

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

更新:解释上下文:我在一个开发人员使用各种版本的 Visual Studio(2012 年以后)的团队工作。如果使用 Visual Studio

【问题讨论】:

您是否按照错误消息的提示进行操作(添加该程序集引用)? 尝试添加对System.Configuration的引用 我的问题更多:“为什么我需要用 VS2015 而不是 VS2013”​​ 解释否决票?我还是没有答案 【参考方案1】:

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

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

老实说,这在我看来不太可能,但可以检查。

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

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

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

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

【讨论】:

感谢您的回答。 VS2015安装了.Net 4.6框架,但是我们在项目中还是针对.Net 4.5(没有变化),所以我也不相信第一种解释。

以上是关于错误 CS0012:“ConnectionStringSettings”类型是在升级到 Visual Studio 2015 后未引用的程序集中定义的的主要内容,如果未能解决你的问题,请参考以下文章

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

奇怪错误 - CS0012:类型x在未引用的程序集中定义

Web api help page error CS0012: Type "System.Collections.Generic.Dictionary'2错误

Android C# HtmlAgilityPack

C# 视频播放

如何修补已签名的 dll