2013-03-19 100 views
3

我創建了一個C#類庫。在這裏我插入兩個類。例如:c#DLL只能編譯一個類

Apple.cs Orange.cs

namespace FoodLibrary 
{ 
namespace Apples 
{ 
    public class Apples 
    { 
     public string type { get; set; } 
     public string colour { get; set; } 
     public string size { get; set; } 
    } 
} 
} 

幾乎一個完全相同的一個用於Orange.cs形成(命名空間蘋果和蘋果類會變成「橙色」)。

EDIT(這裏是請求Orange.cs):

namespace FoodLibrary 
{ 
    namespace Orange 
    { 
     class Orange 
     { 
      public string colour { get; set; } 
      public string type { get; set; } 
      public string size { get; set; } 
     } 
    } 
} 

建設/改造任意組合後,我將讓你在debug文件夾中的.dll。在引用這個DLL時,看起來我只能訪問一個命名空間/類(即Apple)。它允許我訪問我在班級庫中創建的第一堂課。無論我創建了多少個類,我只在我的DLL中獲得一個類。

我曾在相同的結果:

視覺工作室2010 視覺工作室快遞2008(C#)

端注:如果我更新的一類,工程(即添加新的屬性)它會在我構建時更改DLL。我嘗試過「清除」,「重建」和「構建」。

編輯:顯然我是一個白癡,並沒有意識到橙色不公開。一旦我改變它,它就起作用了。不確定爲什麼新項目生成的類是「公開」的,但是當添加新類時它不是,反之亦然。

感謝大家的建議。

+0

第二類的代碼是什麼? – maximpa 2013-03-19 23:47:21

+2

你可以發佈Oranges.cs的代碼嗎? – 2013-03-19 23:47:57

+1

爲什麼你有'Apples'類的'Apples'命名空間?爲什麼不在'FoodLibrary'中有'Apples'和'Oranges'? – 2013-03-19 23:51:00

回答

5

Orange類未聲明爲public像你的Apples類是。嘗試聲明Orange爲公共 - 您應該可以訪問它。

+0

哇,我是個白癡。謝謝,我現在會在路上。我認爲創建一個課程默認情況下將它們公開。我不會再犯這個錯誤。 – user2188733 2013-03-20 00:20:17

+0

爲什麼在創建一個新項目的時候是公共類,但是當添加一個新項目時,不是? – user2188733 2013-03-20 00:21:10

+0

@ user2188733有一個很好的討論爲什麼會發生在這個[問題](http://stackoverflow.com/questions/824555/why-visual-studio-doesnt-create-a-public-class-by-default)。這[問題](http://stackoverflow.com/questions/700086/how-do-you-default-a-new-class-to-public-when-creating-it-in-visual-studio)爲您提供信息關於如何改變這種行爲。 – 2013-03-20 00:27:55

0

在Visual Studio中,在解決方案資源管理器中選擇Orange.cs文件,然後查看屬性窗格。生成操作是否設置爲編譯?如果沒有,該文件不被包含爲源代碼。

由於某些奇怪的原因,Visual Studio在創建新文件時有時會將構建操作更改爲其他操作。檢查這傢伙的博客的截圖和類似的問題。

http://dimarzionist.wordpress.com/2008/07/24/strange-vs-2008resharper-behaviour-buildaction-property/

+0

不幸的是,這不是問題,因爲兩個Class文件都說屬性設置爲「Build」。 – user2188733 2013-03-20 00:09:26

+0

這值得一試。 :)我不認爲你可以打開Orange.cs文件的截圖嗎?其他人可能會看到問題,並有一個很好的答案。 – 2013-03-20 00:13:57

0
  1. 讓您的命名空間的名稱不同,以你的類名即命名空間=蘋果類=蘋果
  2. 更改命名空間ClassLibraryTest到FoodLibrary