У меня есть три DLL-файла ProjBL.dll, ProjDL.dll и ProjMC.dll.Как загрузить зависимую сборку в памяти для использования метода Assembly.Load()
ProjBL.dll является бизнес-объекта DLL
ProjDL.dll является метод доступа к данным слой DLL
ProjMC.dll является DLL Мастер-класс содержит свойства
ProjDL.dll зависит от ProjMC.dll и ProjBL.dll зависит от ProjDL.dll
У меня есть загрузка ProjBL.dll в память с использованием метода Assembly.Load() из папки на диске D: с указанной папкой.
В настоящее время он дает ошибку, что «один из зависимых собрания не найден»
Метод, используемый как ниже
DirectoryInfo dllDirectory = new DirectoryInfo(folderPath);
FileInfo[] dllFiles = dllDirectory.GetFiles("*.dll");
int dllCount = dllFiles.Length;
FileStream fs = null;
if (dllCount > 0)
{
long streamLength = 0;
for (int fileCount = 0; fileCount < dllCount; fileCount++)
{
fs = new FileStream(dllFiles[fileCount].FullName, FileMode.Open);
streamLength += fs.Length;
fs.Close();
}
byte[] memory = new byte[streamLength];
byte[] memory1 = null;
byte[] memory2 = null;
byte[] memory3 = null;
fs = new FileStream(dllFiles[0].FullName, FileMode.Open);
BinaryReader br = new BinaryReader(fs);
memory1 = br.ReadBytes(Convert.ToInt32(fs.Length)); // Loads ProjMC.dll
fs = new FileStream(dllFiles[1].FullName, FileMode.Open);
br = new BinaryReader(fs);
memory2 = br.ReadBytes(Convert.ToInt32(fs.Length)); // Loads ProjDA.dll
fs = new FileStream(dllFiles[2].FullName, FileMode.Open);
br = new BinaryReader(fs);
memory3 = br.ReadBytes(Convert.ToInt32(fs.Length)); // Loads ProjBL.dll
fs.Close();
br.Close();
memory1.CopyTo(memory, 0);
memory2.CopyTo(memory, memory1.Length);
memory3.CopyTo(memory, (memory1.Length + memory2.Length));
assemblyUsed = Assembly.Load(memory);
}
return assemblyUsed;