命名空间“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 文件中的以下部分删除 <add namespace="System.Web.Optimization" />
行
<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”(是否缺少程序集引用?)
Windows 更新后“命名空间‘System.Web.Mvc’中不存在类型或命名空间名称‘Html’”
.net 4.6.2 中的命名空间 system.web 错误中不存在类型或命名空间名称“HTTP”