Загрузка dll (net сборки) из локальной копии - C#
Формулировка задачи:
Есть код, который использует System.Data.SQLite.dll. Она у меня установлена, в том числе и в GAC.
Подгружается через Assembly.LoadFrom. Как сделать, чтобы она подгружалась из любого указанного места, например, из папки со приложением? Просто иначе программа работает только на моем компьютере, при запуске в чужой системе dll-ка, даже расположенная рядом с приложением, не находится программой. Выдается ошибка:
Что нужно прописать в код, чтобы программа работала везде (в смысле на любой Windows)?
PS: У меня в C# практики очень мало - в основном, просто юзаю NET объекты в powershell, поэтому тема сборок, их подключения, атрибутов и пр. - для меня неизученное поле. Компилирую файл не в Visual Studio, а батником:
System.IO.FileNotFoundException: Не удалось загрузить файл или сборку "System.Data.SQLite.dll" либо одну из их зависимостей. Не найден указанный модуль.
using System; using System.Text; using System.Collections.Generic; using System.IO; using System.Data.SQLite; using System.Data; using System.Threading; using Microsoft.Win32; using System.Runtime.InteropServices; using System.ComponentModel; using System.CodeDom.Compiler; using Microsoft.CSharp; using System.Reflection; ...... static void Main(string[] args) { try { string dllpath; Assembly asm; dllpath = AppDomain.CurrentDomain.BaseDirectory +"System.Data.SQLite.dll"; asm = Assembly.LoadFrom(dllpath); Console.WriteLine("-----begin debug-----"); Console.WriteLine("Local Path: " + dllpath); Console.WriteLine("Location: " + asm.Location); Console.WriteLine("FullName: " +asm.FullName); Console.WriteLine("------end debug------"); Test(args); } catch (FileNotFoundException ex) { Console.WriteLine("Файл не найден"); Console.WriteLine(ex.Message); Console.ReadKey(); } }
@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
Листинг программы
<?xml version="1.0"?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> <requiredRuntime version="v4.0.30319" /> </startup> </configuration>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д