CS0234: 命名空间“System.Web”中不存在类型或命名空间名称“Optimization”(是否缺少程序集引用?)

时间:2021-08-09 07:46:15

使用ASP.NET MVC4的出现一个问题,S0234: 命名空间“System.Web”中不存在类型或命名空间名称“Optimization”(是否缺少程序集引用?),具体信息如下图所示:

CS0234: 命名空间“System.Web”中不存在类型或命名空间名称“Optimization”(是否缺少程序集引用?)

经查询,将Areas/Views下的Web.config文件中删除

<add namespace="System.Web.Optimization"/>
将上面的话删除,问题就会解决。


虽然使用ASP.NET MVC,但是没有认真了解,解决方案中,会有多个web.config文件,对不同文件的作用进行整理

1、解决方案下的web.config

      是整个解决方案的配置信息。包含三部分的内容:.NET的配置(例如:appSettings等);ASP.NET的配置(例如:syste.web的配置);部署服务器的配置信息(例如:system.webServer)等

2、Views文件下的web.config、Areas下的web.config

在views和areas文件夹下的配置文件,主要是配置本View下的相关信息,例如视图引擎的配置system.web.webPages.razor等,一般情况下无需修改这些配置文件。


ASP.NET MVC中各个config文件的配置原理及相关事项

解决方案的配置文件是一个整体的配置,而View及areas下面的主要是针对view的配置


在服务器端,所有部署到同一台服务器上的应用,共用一个machine.config,这个配置文件的所有的配置均会被继承至所有的应用中

而每一个应用的配置文件为web.config,其路径与machine.config的相同。

实际上一个服务器上会有多个配置文件,名称及解释如下图所示:

CS0234: 命名空间“System.Web”中不存在类型或命名空间名称“Optimization”(是否缺少程序集引用?)

1、配置文件中可通过属性设定,限制该属性是否可被重写。

2、当服务器初次收到请求后,就对虚拟路径上的所有配置文件进行解读,并保存至缓存区。ASP.NET 会根据配置文件的改变而改变缓存区的内容。因此,到再次收到请求后,ASP.NET会直接使用缓存去寻找请求的资源。

3、当配置文件发生变化时,或配置文件中使用configSource属性的所引用的文件发生变化时,应用程序会自动重启。但是,也有例外,若使用了restartOnExternalChanges="false",则发生变化时,应用程序不会重启。