【问题标题】:VS2010 refuses to compile a namespace, says it doesn't existVS2010拒绝编译命名空间,说不存在
【发布时间】:2011-06-14 16:37:28
【问题描述】:

我将我的项目从 Win XP 转移到 Win 7 的另一台计算机上。安装后,我意识到我的 App_code 文件夹中的某些东西,名为 mydata.web.utils 命名空间,有一个名为 WebConstants 的类(它是公共类和公共职能)。

现在在 global.asax 等领域,它告诉我“WebConstants 在这种情况下不存在”

即使我有:

<%@ Import Namespace="mydata.web.utils" %>

而 webconstants.cs 有:

namespace mydata.web.utils
{
  public class WebConstants
  {
   public static String APPLICATION_VERSION = "version";
  ........
  }
}

webconstants.cs 中没有语法错误或编译器错误

但在其他任何地方,它都在说“什么是‘网络’”??

如果我将命名空间从“web.utils”重命名为“web”,仍然是同样的问题。如果我将“web.utils”重命名为“wez”——那么编译器错误就会消失。

但我不能这样做,因为那样我就必须在整个项目中进行更改,这是一项繁重的工作。

我还在“构建输出”中注意到项目中没有正在编译的 App_code。也许是因为它是一个 ASP.net 文件夹,我不确定。这正常吗?

同一个源码,同一个visual studio,win7怎么报错,winXP电脑不报错?

【问题讨论】:

    标签: c# asp.net visual-studio visual-studio-2010


    【解决方案1】:

    右键单击 webcontants.cs 文件并转到属性。检查以确保“构建操作”设置为“编译”。它可能被设置为“内容”,在这种情况下 VS 不会选择它。

    【讨论】:

    • VS 2010:S 中有右键属性。我该怎么办?
    • 当您右键单击时,解决方案资源管理器中应该始终有一个属性选择。假设您没有更改键绑定,请尝试在解决方案资源管理器中选择 webconstants.cs 文件并按 Alt-Enter。
    • 顺便说一句,我几乎 100% 肯定这是你的问题。在您花时间解决其他问题之前,您可能想弄清楚如何在 VS 中检查构建操作。这是将类文件添加到 App_Code 文件夹的常见场景(可能无论如何都不应该使用,但这是另一个讨论)。
    • 有一个属性窗口。它说“全名”、“完整路径”和“自定义工具”,就是这样。与“构建行动”无关。右键单击或属性窗口中没有该选项。
    • 那么您还有其他问题。 Visual Studio 中的所有 .cs 文件都应具有生成操作属性。请参阅 MSDN:msdn.microsoft.com/en-us/library/0c6xyb66.aspx。 “您可以在解决方案资源管理器中选择任何文件,然后在“属性”窗口中检查其属性。Visual Basic 和 Visual C# 文件具有四个属性:文件名、构建操作、自定义工具和自定义工具命名空间。”
    【解决方案2】:

    如果您在其他项目中有此命名空间,请确保您也添加了对 Web 项目的引用。

    此外,请确保正在正确构建命名空间“mydata.web.utils”所在的项目。

    您还可以在构建失败后在 Visual Studio 的“输出”窗口中更改详细信息的级别:(Tools->Options->Project and Solutions->Build and Run,选择“Normal”,依次查看更多详细信息)。您可以从我的博客中获得更多详细信息:Error “ILMerge.Merge: The target assembly ‘blabla.blabla’ lists itself as an external reference” building a setup project

    【讨论】:

    • webconstants.cs 和 global.asax 在同一个项目中。即使在其他文件的同一个 App_code 文件夹中,它也无法识别 web.utils。我会试试你的最后一段。
    • 我还想为大家提一下……尽管如上所述,我在“错误列表”中看到了 8 个错误。在 Build 下,两个项目都成功编译,没有失败。很可能是 Visual Studio 2010 中的一个错误。
    • 您的博客响应状态为 500
    【解决方案3】:

    您是否尝试构建该项目?您是否在加载后验证您的项目中是否缺少任何 DLL 引用?

    【讨论】:

    • 在另一个项目(解决方案中的 2 个项目)中有 3 个引用警告它找不到 dll。但他们在那里,这只是一个警告。
    • @Dexter,这意味着vs找不到引用dll。只需删除那些有警告的引用并在您的项目中重新引用它们。然后它应该会成功编译,你应该一切顺利。
    • 无论错误是什么,关于正确引用(或取消引用)DLL,删除和修改一些程序集,以及重新安装 ajax 工具包,不知何故,它自己修复了。错误自行消失了。
    【解决方案4】:

    好的,阅读您在下面其他答案中的评论让我明白发生了什么......

    请看这个链接: namespace or class could not be found (ASP.NET WebSite "project")

    您需要将当前项目是一个asp.net 网站 转换为一个网络应用程序

    【讨论】:

    • 我肯定会做一些事情,但也许当我有更多时间的时候。转换一切可能需要大量工作。
    • 我不认为它实际上需要很多工作,当您右键单击该网站以转换为 webapplication 时有一个选项
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 2011-10-19
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多