c#DLL仅使用一个类进行编译

时间:2013-03-19 23:43:10

标签: c# class dll compilation building

我创建了一个C#类库。在其中我插入两个类。例如:

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几乎完全相同的一个(命名空间Apples和class Apples将变成“Orange”)。

编辑(这是请求的Orange.cs):

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

在构建/重建任何组合后,我将在调试文件夹中获得.dll。在引用此DLL时,似乎我只能访问ONE命名空间/类(即Apple)。它允许我访问我在类库中创建的第一个类。我创建了多少个类并不重要,我只在我的DLL中获得一个。

我的结果相同:

Visual Studios 2010 Visual Studios Express 2008(C#)

备注:如果我更新一个有效的类(即添加一个新属性),它将在我构建时更改DLL。我尝试过“清除”,“重建”和“构建”。

编辑:显然我是个白痴,并没有意识到橙色不公开。一旦我改变它,它就有效了。不确定为什么新项目生成的类是“公共”的,但是在添加新类时它不是,反之亦然。

感谢大家的建议。

3 个答案:

答案 0 :(得分:5)

您的Orange课程未被public课程宣布为Apples。尝试将Orange声明为公开 - 您应该可以访问它。

答案 1 :(得分:0)

在Visual Studio中,在“解决方案资源管理器”中选择Orange.cs文件,然后查看“属性”窗格。 Build Actions是否设置为Compile?如果没有,则该文件不作为源代码包含。

由于某些奇怪的原因,Visual Studio在创建新文件时有时会将构建操作更改为其他内容。查看这家伙的博客,了解屏幕截图和类似问题。

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

答案 2 :(得分:0)

  1. 保持名称空间名称与您的类名不同,即namespace = AppleS class = Apple
  2. 将名称空间ClassLibraryTest更改为FoodLibrary