2012-11-20 124 views
1

我的解决方案不会编译。我收到错误消息当我尝试编译我的项目:命名空间/参考错误

错误2类型或命名空间名称“安全”不存在命名空间“基地”存在(是否缺少程序集引用?)

然而,这是令人困惑的,因为我引用了该项目,那是正确的命名空间!这里的解决方案设置

解决方案基地 - Base.Domain - Base.Security - Base.Tests - Base.WebUI

在Base.Security

我有这样的自定义角色提供程序文件:

namespace Base.Security.Providers 
{ 
    public class EFRoleProvider : System.Web.Security.RoleProvider 
    { 
     //code here 
    } 
} 

我在Base.Tests和Base.Tests引用Base.Security我有以下文件(即是给我的错误):

using Base.Security.Providers; 

namespace Base.Tests 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var a = new EFRoleProvider(); 
      //more stuffs 
     } 
    } 
} 

我不明白为什么我不能从Base.Tests访问Base.Security类型?

+0

如果您右键单击您的项目并单击属性,您的名称空间和程序集名称会说什么?另外,如果你删除了你的using指令并右键单击'EFRoleProvider'并单击Resolve,它认为它应该使用什么组合? –

+0

该解决方案是否可以通过'Program'正确构建?有时候,这样的错误信息并没有真正意义,这是支持参考/汇编中更深层次问题的征兆。 – mellamokb

+0

你正在引用项目或程序集吗?你有没有尝试一个完整的清理和重建? –

回答

1

确保您的项目是针对相同的.NET版本构建的。当从.NET 4.0项目添加对.NET 3.5项目的引用时,我遇到了此问题。

要检查/更改.NET版本,请右键单击您的项目,选择属性,然后在“应用程序”选项卡下确保每个项目的“目标框架”相同。

您的代码看起来是正确的,这是引用设置方式的问题。

+0

就是这样!我有Base.Tests项目使用“.NET Framework 4.0客户端配置文件”而不是“.NET Framework 4.0”...添加了一些额外的参考,现在它的作品!在定时器启动时将接受这个答案。任何有关常规4.0和4.0“客户端配置文件”之间差异的见解? – solidau

+0

此外,我很确定其他人默认情况下是.NET 4.0 - 为什么控制台应用默认为“客户端配置文件”版本? – solidau

+1

我发现这篇文章:http://blogs.msdn.com/b/jgoldb/archive/2010/04/12/what-s-new-in-net-framework-4-client-profile-rtm.aspx描述得非常好。我不知道为什么错误信息不是更有用。 –