是一个只有分布需要常量的DLL吗?

时间:2015-01-14 16:45:37

标签: c# dll compilation constants

我创建了两个依赖于单个类库的可执行项目。

类库只包含类和常量(无变量或函数),用于存储两个可执行项目之间通信的应用程序级协议信息。

在测试我的两个程序时,我注意到它们运行时不需要位于同一目录中的类库(DLL)。

这里发生了什么?如果只使用常量,我是否需要分发DLL?

1 个答案:

答案 0 :(得分:4)

如果它们是真正的常量,与const一起引入,那么每个常量的值将被内联到其使用的位置。例如,如果您有:

// Assembly1
public static class Constants
{
    public const string Foo = "Hello";
}

// Assembly2
public class Test
{
    static void Main()
    {
        Console.WriteLine(Constants.Foo);
    }
}

...然后价值"你好"将被内联到Assembly2中,你不需要Assembly1出现。没有代码会引用它,即使它仍然作为Assembly2中的引用列出。

但是,如果您通过 reflection 访问常量(这是完全合理的),那么您可能希望将Assembly1存在。