Невозможно загрузить DLL: указанное сетевое имя больше не доступно

По некоторым причинам я должен иметь dll не в той же папке, где живет основной исполняемый файл. Я использую метод, описанный здесь /questions/10251185/ukazhite-put-poiska-dlya-dllimport-vnet/10251195#10251195. Мой код выглядит так:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;

namespace testnetwork
{
class Program
{
    [DllImport("SomeLibrary.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, SetLastError = true)]
    public static extern int SomeMethod([MarshalAs(UnmanagedType.AnsiBStr)] string someInput);

    static void Main(string[] args)
    {
        string CurrentPath = Uri.UnescapeDataString(new Uri(Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase)).AbsolutePath);
        var paths = new List<string>
        {
            CurrentPath + "/Folder1",
            //CurrentPath + "/Folder2",
        };

        AddEnvironmentPaths(paths);

        SomeMethod("myinput");
    }

    static void AddEnvironmentPaths(IEnumerable<string> paths)
    {
        var path = new[] { Environment.GetEnvironmentVariable("PATH") ?? string.Empty };
        string newPath = string.Join(Path.PathSeparator.ToString(), path.Concat(paths));
        Environment.SetEnvironmentVariable("PATH", newPath);
    }
}
}

Все работает нормально, пока у меня нет подключения к интернету. Когда нет подключения к сети, я получаю ошибку

Произошло необработанное исключение типа "System.DllNotFoundException" в testnetwork.exe. Дополнительная информация: Невозможно загрузить DLL "SomeLibrary.dll": указанное сетевое имя больше не доступно. (Исключение из HRESULT: 0x80070040)

Похоже, DllImport работает по-другому, когда компьютер отключен от сети? В моей переменной%PATH% нет UNC-путей.

0 ответов

Другие вопросы по тегам