2012-11-20 119 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描述得非常好。我不知道爲什麼錯誤信息不是更有用。 –