【问题标题】:Public Static Class in same namespace as web form can't be resolved无法解析与 Web 表单相同命名空间中的公共静态类
【发布时间】:2014-08-05 01:42:07
【问题描述】:

我有一个 Webform MVP 项目,并且在 App_Code 文件夹的一个类中声明了一些扩展方法,这些方法在我后面的 Webform 代码中没有解析。 Webform 和静态类都在同一个命名空间中,但有些东西似乎不起作用......

我做了一个简单的示例来向您展示问题...

App_Code 中的类:

namespace ecommerce.mvp
{
    public static class Class1
    {
        public static void Test1()
        {

        }

    }
}

代码背后:

using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;


namespace ecommerce.mvp
{
    public partial class pdp : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Class1.Test1(); // <--- This symbol can't be resolved

请注意,两者都在同一个命名空间中……但由于某种原因,Class1 没有在后面的代码中解析……

我真的很感激任何帮助。 谢谢。

【问题讨论】:

  • 它们在同一个程序集中吗?如果没有,持有Class1 的程序集是否被另一个引用?
  • (Visual Studio 项目通常是一个程序集,如果您想知道的话)
  • 通过将 Class 1 的定义移动到与 pdp 相同的文件来测试它,如果有效,请报告!

标签: c# asp.net webforms namespaces scope


【解决方案1】:

右键单击 App_Code 文件夹中的 Class1.cs 类并检查其属性。 Build Action 必须设置为 Compile。 (有时会设置为 Content

【讨论】:

  • 太棒了!它工作得很好!非常感谢!当您从另一个项目复制或从头开始添加时,不应将 VS .cs .vb 文件设置为“自动编译”???
  • 默认情况下 App_Code 类不可用或无法访问,您需要在每次向 App_Code 文件夹添加新类时手动设置构建操作
  • 好吧,但是还是没有任何意义呢?
  • 确切地说,App_Code 似乎不推荐在使用 Web 应用程序项目创建的项目中(它经常在网站项目中使用)。 App_Code 的一个优点是您可以在运行时在 Bi​​n 文件夹中找到它。
【解决方案2】:

仅仅因为 2 个类共享相同的命名空间并不意味着它们自动对彼此可见如果它们位于不同的程序集/项目中

我能看到您遇到此问题的唯一方法是 Class1 是否在程序集/项目“Foo”(一个虚构的名称)中,而 pdp 类在程序集/项目“Bar”中(另一个虚构的名称)。

要解决此问题,您需要将对拥有Class1 的程序集的引用添加到拥有pdp 的程序集。

【讨论】:

    【解决方案3】:

    我遇到了类似的问题,但是抱怨的是另一个“项目”。就我而言,我发现有一些 .cs 文件作为“链接”包含在内,而我没有将新的 .cs 文件作为“链接”包含在抱怨的项目中。希望这可以帮助偶然发现这一点的人。所以,忠告:当错误列在“错误列表”中时,还要检查“项目”列。

    【讨论】:

      猜你喜欢
      • 2012-04-12
      • 2021-10-14
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 2010-11-28
      相关资源
      最近更新 更多