Загрузка 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>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д