c# - 分发时只需要常量的 DLL 吗?

标签 c# dll compilation constants

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

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

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

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

最佳答案

如果它们是真正的常量,用const引入,那么每个常量的值将在使用它的地方内联。例如,如果您有:

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

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

... 然后值“Hello”将内联到 Assembly2 中,您不需要 Assembly1 存在。没有代码会引用它,即使它仍列为 Assembly2 中的引用。

但是,如果您曾经通过反射(这是完全合理的)访问常量,那么您会希望有 Assembly1。

关于c# - 分发时只需要常量的 DLL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27948145/

相关文章:

c - 为什么此C程序编译时没有错误?

c# - 创建和验证邀请码/ token

c# - c#中来自c++的unsigned char数组

C++ 应用程序泄漏与其他应用程序的链接

angular - 在 Angular 4/5 中编译动态 HTML——类似于 Angular JS 中的 $compile

c++ - 在 MATLAB 中识别 VC++ 编译器

c# - 模拟类的 Func 属性

c# - 在 MVC 中发布多个对象列表

c# - 在 SQL 查询中转义值(带有 SQL 连接器的 C#)

c# - 在 C# 中重命名外部方法参数是否安全?