命名空间“System.Web”中不存在类型或命名空间名称“优化”

Posted

技术标签:

【中文标题】命名空间“System.Web”中不存在类型或命名空间名称“优化”【英文标题】:The type or namespace name 'Optimization' does not exist in the namespace 'System.Web' 【发布时间】:2014-10-18 23:41:27 【问题描述】:

我正在部署一个新网站作为我的主站点,它运行良好。

我在根 url 下的所有应用程序都可以正常工作,除了一个。这是一个被大量使用的遗留系统(c#.net),不幸的是,我无权访问源代码。

当我运行旧版应用程序 www.mysite.com/crm 时,我收到以下错误:

Server Error in '/crm' Application.

Compilation Error

Description: An error occurred during the compilation of a resource required to 
service this request. Please review the following specific error details and modify 
your source code appropriately. 

Compiler Error Message: CS0234: The type or namespace name 'Optimization' does not 
exist in the namespace 'System.Web' (are you missing an assembly reference?)

Source Error:


Line 17:     <pages>
Line 18:       <namespaces>
Line 19:         <add namespace="System.Web.Optimization" />
Line 20:       </namespaces>
Line 21:     <controls>

Source File: e:\WebSites\newsite\Web.config    Line: 19 


Show Detailed Compiler Output:

Show Complete Compilation Source:


Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18446

错误是列出主站点的 web.config,它有效。但是,只有当我在主站点下运行应用程序时才会发生这种情况。

这是在 Server 2008 R2 和 IIS7 上运行的

我该如何纠正这个问题?我还能尝试什么?

更新

我不知道它是否有区别,但它在错误中引用的 Web.Config 是针对新网站的,而不是针对旧版应用程序的。我不确定为什么主站点配置是一个因素。

澄清

我无权访问旧版应用程序的源代码,因此无法调整该应用程序的属性。将优化 dll 粘贴到站点中也没有修复它。它可能适用于其他用户,但不适用于我。

解决方法

我在另一个 URL 下设置了新站点,并将到根 URL 的流量重定向到新 URL,并允许旧应用程序按原样运行,直到我们可以替换它。非常草率的解决方案,但现在可以使用。

【问题讨论】:

这个问题应该可以帮助您解决问题:***.com/questions/9475893/… 我看到了那个帖子,但是我不能修改子应用程序。在主站点上这样做会有所帮助吗? 上传所有丢失的dll到服务器上的部署文件夹,在这种情况下上传System.Web.Optimization.dll System.Web.Optimization and Microsoft.Web.Optimization won't load reference in vs 2012的可能重复 【参考方案1】:

我现在刚刚遇到这个问题:

我重新安装了优化框架,一切正常:

Install-Package Microsoft.AspNet.Web.Optimization

【讨论】:

我喜欢这个解决方案,我通常会使用它。无论如何,有时您会收到一条消息“项目中已经存在包'Microsoft.AspNet.Web.Optimization'”,但问题仍然没有解决。在这种情况下,只需从“packages”文件夹中删除它并重新安装。 我遇到了同样的问题。我的项目中不需要这个包,但每次我尝试启动应用程序时都会出现这个错误。解决方案 ID:在 Views/Web.config 文件中查找此导入并将其删除(如果需要)。【参考方案2】:

在 MVC5 中创建新区域后,我遇到了同样的问题。有自动生成 web.config 文件。检查 Views 文件夹下的 web.config 文件有一行

<add namespace="System.Web.Optimization" />

    如果您需要它,请使用以下命令安装它。

    Install-Package Microsoft.AspNet.Web.Optimization
    

    在如下所示的包管理器控制台中

    如果您认为没有必要,只需从 web.config 文件中的以下部分删除 &lt;add namespace="System.Web.Optimization" /&gt;

    <namespaces>
       <add namespace="System.Web.Mvc" />
       <add namespace="System.Web.Mvc.Ajax" />
       <add namespace="System.Web.Mvc.html" />
       <add namespace="System.Web.Routing" />
       <!--<add namespace="System.Web.Optimization" />-->
       <add namespace="AutoParts.Web" />        
    </namespaces>
    

【讨论】:

【参考方案3】:

检查旧应用程序的 Bin 文件夹。它可能只需要您放入该 DLL。 System.Web.Optimization 命名空间自 ASP.NET 4.5 起就存在,因此它甚至可能不受支持。旧版应用程序可能比这更旧。

【讨论】:

旧版应用比这更老。【参考方案4】:

在 Visual Studio 中 .. 转到您的项目并查看引用树。

右键单击 System.Web.Optimization 并选择 Properties

寻找path,你会发现它是空的 如果是这样的话 在您的 PC 中查找文件名 System.Web.Optimization.dll 并将其复制到项目的 bin 文件夹中,这将解决它

【讨论】:

它对我有用,实际上当我打开参考树时,这些问题库会自动加载。谢谢!【参考方案5】:

我刚刚遇到:“CS0234 C# 命名空间‘System.Web’中不存在类型或命名空间名称‘优化’(您是否缺少程序集引用?)”并找到了这个 *** 页面。 - 我的原因是我重命名了我正在使用的 Web 表单(aspx 页面),我还想重命名该表单后面的公共部分类。这样做会导致上述错误代码。我在(C#)后面的代码中添加了“using System.Web.Optimization;”,“清理”了解决方案,然后“构建”了解决方案,然后“重建”了解决方案,现在错误消失了,并且没有使用 using 语句,所以我摆脱了它。我的解决方案不再有那个或任何错误,所以我想我会分享这个奇怪的故事。我可能不需要使用那个“using”声明,但无论如何。

【讨论】:

【参考方案6】:

从 Views/Web.config 中删除引用对我有用。

【讨论】:

添加更多关于你的答案的信息,为什么它有效等等【参考方案7】:

主要到区域

@Html.ActionLink("My Area Home", "Index", "Home", new  area = "MyArea" , null)

主要区域

@Html.ActionLink("Home", "Index", "Home", new  area = "" , null)

【讨论】:

以上是关于命名空间“System.Web”中不存在类型或命名空间名称“优化”的主要内容,如果未能解决你的问题,请参考以下文章

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

错误:命名空间中不存在类型或命名空间 UI

Windows 更新后“命名空间‘System.Web.Mvc’中不存在类型或命名空间名称‘Html’”

.net 4.6.2 中的命名空间 system.web 错误中不存在类型或命名空间名称“HTTP”

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

VS2005中提示命名空间System.Web中不存在类型或命名空间名称‘caching’怎么办呢