Загрузка dll (net сборки) из локальной копии - C#

Узнай цену своей работы

Формулировка задачи:

Есть код, который использует System.Data.SQLite.dll. Она у меня установлена, в том числе и в GAC. Подгружается через Assembly.LoadFrom. Как сделать, чтобы она подгружалась из любого указанного места, например, из папки со приложением? Просто иначе программа работает только на моем компьютере, при запуске в чужой системе dll-ка, даже расположенная рядом с приложением, не находится программой. Выдается ошибка:
Листинг программы
  1. System.IO.FileNotFoundException: Не удалось загрузить
  2. файл или сборку "System.Data.SQLite.dll" либо одну из их зависимостей. Не найден указанный модуль.
Что нужно прописать в код, чтобы программа работала везде (в смысле на любой Windows)?
Листинг программы
  1. using System;
  2. using System.Text;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Data.SQLite;
  6. using System.Data;
  7. using System.Threading;
  8. using Microsoft.Win32;
  9. using System.Runtime.InteropServices;
  10. using System.ComponentModel;
  11. using System.CodeDom.Compiler;
  12. using Microsoft.CSharp;
  13. using System.Reflection;
  14. ......
  15. static void Main(string[] args)
  16. {
  17. try
  18. {
  19. string dllpath;
  20. Assembly asm;
  21. dllpath = AppDomain.CurrentDomain.BaseDirectory +"System.Data.SQLite.dll";
  22. asm = Assembly.LoadFrom(dllpath);
  23. Console.WriteLine("-----begin debug-----");
  24. Console.WriteLine("Local Path: " + dllpath);
  25. Console.WriteLine("Location: " + asm.Location);
  26. Console.WriteLine("FullName: " +asm.FullName);
  27. Console.WriteLine("------end debug------");
  28. Test(args);
  29. }
  30. catch (FileNotFoundException ex)
  31. {
  32. Console.WriteLine("Файл не найден");
  33. Console.WriteLine(ex.Message);
  34. Console.ReadKey();
  35. }
  36. }
PS: У меня в C# практики очень мало - в основном, просто юзаю NET объекты в powershell, поэтому тема сборок, их подключения, атрибутов и пр. - для меня неизученное поле. Компилирую файл не в Visual Studio, а батником:
Листинг программы
  1. @cmd /c C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /platform:x86 /r:System.Xml.dll;System.Data.SQLite.dll /out:prog.exe /target:exe prog.cs

Решение задачи: «Загрузка dll (net сборки) из локальной копии»

textual
Листинг программы
  1. <?xml version="1.0"?>
  2. <configuration>
  3. <startup useLegacyV2RuntimeActivationPolicy="true">
  4.   <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  5.   <requiredRuntime version="v4.0.30319" />
  6. </startup>
  7. </configuration>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут