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

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

我将三个 .ASPX 文件及其关联的 .cs 和 .designer.cs 文件移动到不同的文件夹,并更改了它们的名称。当我尝试重新编译时,我收到了上面关于 5-6 个不同的 .ASPX 文件的消息,包括我移动的三个。 .ASPX 文件中的行号总是靠近顶部(第 10-20 行左右),但每次都在不同的标签上。我还在 .cs 文件上收到了大约 250 条其他消息,说许多(也许是所有).ASPX 文件中的所有控件都不存在。

我找到的关于此消息的大多数文章都涉及不同版本的 MVC,但这不是 MVC 应用程序。我确实尝试调整 NuGet 设置,并尝试将 web.config 中的引用注释掉到 System.Web.Optimization,但都没有成功。

我还尝试从项目中排除有问题的 .ASPX 文件并重新包含它们。这导致该文件的消息消失,但是当我排除最后一个文件时,相同的消息出现在另一个文件上,通常是项目中的下一个文件。

编辑:其他几个问题的答案解决了添加缺失参考的问题,但在我的案例中参考已经存在。

当你第一次创建页面时,它会获取它的文件夹、相互之间的关系,并在这个页面中制作 link。切勿为不同的文件夹共享 .aspx 和 .aspx.cs。如果您认为您的 .aspx.cs 文件太大,只需移动到一些 class(例如,App_Code/MyClass),然后从您的 .aspx.cs 文件。如果您需要正确移动,只需在目标文件夹中创建新的.aspx 页面,然后将代码从旧页面复制到新页面,并删除旧页面。这是防止(在您的情况下解决)错误的最佳方法

我通过从源代码管理恢复项目,然后听从 Khazratbek 的建议解决了这个问题。我在新位置创建了三个新页面,只复制了旧文件的内容。