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

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

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

Есть код, который использует System.Data.SQLite.dll. Она у меня установлена, в том числе и в GAC. Подгружается через Assembly.LoadFrom. Как сделать, чтобы она подгружалась из любого указанного места, например, из папки со приложением? Просто иначе программа работает только на моем компьютере, при запуске в чужой системе dll-ка, даже расположенная рядом с приложением, не находится программой. Выдается ошибка:
System.IO.FileNotFoundException: Не удалось загрузить
файл или сборку "System.Data.SQLite.dll" либо одну из их зависимостей. Не найден указанный модуль.
Что нужно прописать в код, чтобы программа работала везде (в смысле на любой Windows)?
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(); 
            }
    }
PS: У меня в C# практики очень мало - в основном, просто юзаю NET объекты в powershell, поэтому тема сборок, их подключения, атрибутов и пр. - для меня неизученное поле. Компилирую файл не в Visual Studio, а батником:
@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>

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


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

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

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