c# - 是否可以内部化/IL 合并单个 C# 类?

标签 c# .net dependencies .net-assembly ilmerge

我有一个应用程序引用了一个相当大的库 DLL(我们称之为 lib.dll),但它只使用其中的一个类(我们称之为 Helper)。

lib.dll 有额外的传递引用,它们在编译时都被复制到我的项目的 bin 文件夹中。

我非常想避免这种开销,并找到一种方法将构成 Helper 的代码“复制”或“交叉编译”或“合并”到我的主项目中。

有没有可能这样做?我想避免 IL 合并 lib.dll 的完整性。

最佳答案

在某些情况下,您可以将第三方 dll 作为嵌入式资源嵌入并自行解析引用,如 Jeffrey Richter 所述here .

简而言之,在您的入口点:

AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => {
    string name = new AssemblyName(args.Name).Name;

    // Either hardcode the appropriate namespace or retrieve it at runtime in a way that makes sense for your project.
    string resourceName = string.Concat("My.Namespace.Resources.", name, ".dll");

    using(var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) {
        var buffer = new byte[stream.Length];
        stream.Read(buffer, 0, buffer.Length);

        return Assembly.Load(buffer);
    }
};

关于c# - 是否可以内部化/IL 合并单个 C# 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45999964/

相关文章:

c# - 对 Linq 查询进行排序

c# - 如何扩展基类功能

c# - 获取任何文件的缩略图,包括 Windows XP/Vista 上的 SolidWorks

java - 具有重复依赖项的可运行 JAR

c# - 在 listview-scroll 上加载数据

c# - WP7 Camera 的视角是多少?

asp.net - 如何使用 LinkBut​​ton 提交表单?

.net - 在 C++ .net4 中使用和不使用调试器的不同代码行为

c++ - 从没有虚函数的 C++ 类继承

添加为 sbt 依赖项时未找到 jboss 拦截器 api 1.1