Загрузка 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>