我有一个应用程序引用了一个相当大的库 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/