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

本文关键字:2015 引用 定义 集中 程序集 程序 Studio Visual 类型 CS0012 错误 | 更新日期: 2023-09-27 18:04:08

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

错误CS0012:类型'ConnectionStringSettings'定义在未引用的程序集。必须添加对程序集的引用的系统。配置,版本=4.0.0.0,文化=中性,都必须b03f5f7f11d50a3a"。

在安装过程中我错过了什么吗?从现在开始,我必须手动添加一个引用到我的项目吗?

UPDATE:是的,它在添加一个引用到System后工作。配置到项目,但问题更多的是为什么我需要在Visual Studio 2015中这样做(它过去在Visual Studio 2013中没有参考就可以工作)

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

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

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

  • 在解决方案迁移/更新期间,您的项目的。net框架设置被更改为较新的。net框架。在较新的。net框架版本中,ConnectionStringSettings类型被移动到不同的程序集中。

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

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

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

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

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