我在VS 2013(c#)中有2个解决方案,SolutionA包含网站等,SolutionB包含密码生成器等常用逻辑(我也用于其他解决方案)。
SolutionB使用外部Bcrypt dll(以及其他)。但是,当我在SolutionA中包含对SolutionB中的projects / dll的引用时,我需要手动引用SolutionB中使用的dll。所以我的SolutionA仍然需要对Bcrypt DLL的引用...即使这只是在SolutionB代码中使用。
如何将这个外部Bcrypt dll包含在从SolutionB构建的dll中,所以我不需要在SolutionA中引用任何其他内容,而是我自己的SolutionB dll?
谢谢,希望它不会太混乱:)。
答案 0 :(得分:-1)
有各种选项,如 ILMerge /自定义工具等,可以将一个DLL嵌入到另一个DLL中。这是一种CODE方式:
'copy local' = false
。Embedded Resource
。AssemblyResolve
事件,如下所示:5
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
string dllName = args.Name + ".dll";
using (var stream= Assembly.GetExecutingAssembly().GetManifestResourceStream(dllName))
{
byte[] assemblyData = new byte[stream.Length];
stream.Read(assemblyData, 0, stream.Length);
return Assembly.Load(assemblyData);
}
};
如果Assembly.GetExecutingAssembly()
上面不起作用,它可能会尝试在解决方案A的资源流中搜索BCrypt。
尝试
Assembly.Load("SolutionBDLL")