c# DLL只编译一个类

本文关键字:一个 DLL 编译 | 更新日期: 2023-09-27 18:05:02

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

Apple.csOrange.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,几乎形成了一个完全相同的(命名空间apple和类apple将变成"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时,似乎我只能访问一个命名空间/类(即。苹果)。它允许我访问我在class Library中创建的第一个类。不管我创建多少个类,我只在DLL中得到一个。

我也有同样的结果:

Visual studio 2010Visual studio Express 2008 (c#)

旁注:如果我更新一个类的工作(即。添加一个新的属性),它将改变DLL时,我构建。我试过"clear"、"rebuild"answers"build"。

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

谢谢大家的建议。

c# DLL只编译一个类

您的Orange类不像您的Apples类那样声明为public。尝试将Orange声明为公共的-您应该能够访问它。

在Visual Studio中,在解决方案资源管理器中选择Orange.cs文件,并查看属性窗格。生成操作设置为编译吗?如果没有,则该文件没有作为源代码包含。

Visual Studio,出于一些奇怪的原因,有时在我创建新文件时将构建操作更改为其他内容。看看这家伙的博客截图和类似的问题。

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

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