为什么一个类在我的项目的一部分中被识别,而在另一部分中却没有?

时间:2013-08-16 18:15:49

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

我正在尝试创建一个私有方法的修改公共版本,该版本出现在我正在处理的项目的Controller类中。 private方法返回一个自定义类型的List,而在public方法中我想返回一个int的List。

因此,我将现有方法从\ Controllers文件夹中的控制器类复制到我添加到App_Code文件夹下的新Utils类。

但事实证明,对于要编译的代码,我需要添加某些“using”子句;没问题?

例如,在这行代码中:

get { return int.Parse(CCRCustomer.GetCustomerNumberFromUsername(User.Identity.Name)); }

...“身份”是红色的 - 无法识别。我认为“用户”是假设是我们的自定义类;但当我将鼠标悬停在它上面时,

它说,“模块System.Data.Entity ......”

然后将System.Data.Entity添加到using子句会导致其中的“Entity”部分被红色标记为无法识别。

下一个问题是这一行:

using (var conn = new EntityConnection(ConnectionString))

...在这种情况下,现在“EntityConnection”变得尴尬,变得红/无法识别。

具有原始类似代码的控制器类具有:

using System.Data.EntityClient;

...所以我想也许这就是我所需要的;但是将它添加到我的Utils课程中只需要用更多的红色奖励我 - 再次在“实体”上。

为什么从项目的一个部分看到引用的类,而不是从另一个部分看到?

1 个答案:

答案 0 :(得分:2)

在Web应用程序项目中,您无需将代码文件添加到app_code文件夹;在项目中创建一个常规的“Utils”文件夹,然后添加到该文件夹​​中。 app_code中的代码文件会编译到另一个程序集,这就是为什么对于放在app_code下的代码缺少对现有项目(例如实体框架)的引用。

编辑:为了更好地了解这一点,默认情况下为ASP.NET Mvc does not give you a way to add app_code folder。这是因为app_code主要存在于动态编译代码文件的网站中。 Web应用程序是预编译的,Mvc仅作为Visual Studio中的Web应用程序项目。虽然如链接的SO问题中所述,如果您确实需要,可以解决此问题。