如何将同一项目中的类编译为不同的DLL

时间:2012-04-24 16:09:14

标签: c# dynamic dll compilation

大家好,我有一些类库项目。

我想知道如何将每个类编译为不同的DLL。

我不想为每个dll创建单独的项目,

我使用这个dll作为插件,但这些是非常简单的插件,我不想为每个插件创建项目。

我将把所有这些dll放在同一个目录中并动态加载它们,

谢谢

5 个答案:

答案 0 :(得分:2)

为每个类创建一个单独的.cs文件。

然后通过打开Visual Studio命令提示符CD到.cs文件的位置创建DLL,就像在Nygma7的答案中建议的那样,并在提示符下创建DLL: csc /target:library /out:test1.dll test1.cs等。

答案 1 :(得分:1)

为每个班级创建一个单独的项目。

答案 2 :(得分:1)

我认为这不是一个好的方法,但无论如何。您可以从项目中排除类,然后进行编译。

您还可以将编译器指令用作:

#define Class1
#if Class1
class 1
{
}
#endif

#undef Class2
#if Class2
class 2
{
}
#endif

然后在输出DLL中编译Class1或Class2。但是,这不会像您想要的那样自动化。无法想象其他方式。

答案 3 :(得分:0)

你需要退后一步思考你在问什么。您有几个类都是单个项目的一部分,但您希望将该项目构建到几个不同的部分中。你为什么想这么做?关于您的代码,有两件事情是正确的:

  1. 你的课程彼此依赖;即Class1取决于Class2。在这种情况下,你想要将它们构建到单独的dll中,因为这些dll不会自行运行。
  2. 你的课程彼此独立;即Class1Class2无关。在这种情况下,为什么他们在同一个项目中呢?这些类属于他们自己的项目,因此可以单独构建它们。
  3. 阅读完更新后,我怀疑你遇到#2。只要它们不相互依赖,您就应该将您的类分成他们自己的项目。你说过“我不想把它们分开”,但是你没有说为什么。你有理由不想让它们分开吗?您仍然可以将它们全部放在同一个解决方案中,您仍然可以使用一个命令构建它们。

答案 4 :(得分:0)

两种解决方案: 1 您可以在解决方案中分离创建新项目的类,您将创建一个类库,它将生成一个dll。 你必须去参考并添加对项目的新参考。

您应该考虑这是否是一个好的解决方案,如果您打算在其他项目中使用该类,那么这是一个很好的解决方案。

2 代码示例......

using System;
namespace SimpleMaths
{
  public class Operations
  {
    public static int add(int a, int b)
    {
        return a + b;
    }

    public static int substract(int a, int b)
    {
        return a - b;
    }

    public static int multiply(int a, int b)
    {
        return a * b;
    }
  }
}

现在打开开始>> VisualStudio2005 / 2008>> Visual Studio工具>> Visual Studio命令提示符。

现在进入命令提示找到保存刚刚创建的.cs文件的目录。使用CD命令。

csc / target:library /out:File.dll test.cs

这将生成您想要的dll文件