2011-07-15 183 views
6

我創建了一個名爲Foo的解決方案。 添加了一個名爲Foo.Common的類庫 添加了一個控制檯應用程序,用於從調用ConsoleApp調用庫代碼。找不到命名空間!

我從ConsoleApp引用的Foo.Common和類型:

using Foo.Common; 
public class Program 
{ 
    CommonClass c = new CommonClass();    

    static void Main(string[] args) 
    { 
    } 
} 

,並把它恢復:

Error 1 The type or namespace name '**Foo**' could not be found (are you missing a using directive or an assembly reference?) Z:\Foo\Solution1\ConsoleApplication1\Program.cs 3 11 ConsoleApplication1

爲什麼會出現呢?

發生了什麼事?

+0

是CommonClass聲明爲'public'?如果沒有,則不能在Foo.Common類庫外部使用它。 – dtb

+0

您是否使用Visual Studio?如果是這樣,對象瀏覽器(視圖菜單)將顯示加載的名稱空間。 –

+0

是公開..... –

回答

6

確保

  • ConsoleApp項目具有對Foo.Common項目參考(做瀏覽Foo.Common.dll),

    Screenshot

  • 該文件包含S A using指令在其中CommonClass聲明的命名空間,

  • CommonClass被聲明爲public

所以你的文件應該是這樣的:


CommonClass.csFoo.Common項目:

namespace Foo.Common 
{ 
    public class CommonClass 
    { 
     public CommonClass() 
     { 
     } 
    } 
} 

Program.cs中ConsoleApp項目:

using Foo.Common; 

namespace ConsoleApp 
{ 
    public class Program 
    { 
     public static void Main() 
     { 
      CommonClass x = new CommonClass(); 
     } 
    } 
} 
+0

就是這樣。但是當我編譯時,我得到了上面的編譯錯誤。 –

+0

這正是我通過「項目」選項卡添加參考的方式。 –

+7

好的錯誤是由於項目在.net 4客戶端配置文件中的設置。 –

0

右鍵單擊新的控制檯應用程序的解決方案/項目,並添加引用,並添加包含富命名空間

+0

我沒有Foo命名空間。我有Foo.Common –

+0

,我添加了Foo.Common庫作爲參考。 –

+0

因此它在另一個解決方案中看起來像namspace Foo.Common {public class CommonClass ...}? –

0

你添加到庫中的引用該項目?查看控制檯項目中的「參考」。如果它不在那裏,你需要添加它。

+0

我已經添加它。 –

0

我張貼這是一個評論,但我想在這裏展開。可能發生的情況是將它看作是一種聲明而不是關鍵字。看來你有類似以下內容:

using System; 
namespace TestNamespace 
{ 
    using Foo.Common; 
    public Class { } 
} 

嘗試

using System; 
using Foo.Common; 
namespace TestNamespace 
{ 
    public Class { } 
} 

相反。

+0

這是完全有效的了'using'指令在命名空間聲明中。 「using」語句沒有歧義。 – dtb

+0

事實上,它不僅是有效的,但有些人強烈推薦它,[這個問題](http://stackoverflow.com/q/125319/180803)有一些很好的信息。儘管在命名空間和外部使用一個'using'肯定不是很好的風格! – Carson63000

+0

是的,我意識到在我發佈後不久,它對於做命名空間別名非常有用。儘管如此,我認爲它可能是相關的,但猜測它是.NET 4客戶端配置文件。 – mletterle

2

確保在您的項目設置,目標框架設置爲.NET Framework 4中,而不是.NET Framework 4的客戶端配置文件。我得到這個相同的行爲,當它被設置爲客戶端配置文件,並儘快修復是我設置它只是普通的.NET Framework 4