Конференция ".Net" » Загрузка ресурсов для dll в других папках [C#]
 
  • dzmitry[li] (25.02.10 15:47) [0]
    Проблема: необходимо в dll (которая находится в другой папке относительно exe) достать/обработать ресурсы (на самом деле требуется в dll отобразить локализованую форму). Но ресурсы для dll упрямо беруться из папки в которой расположен exe-файл.
    dll подгружаются динамически

    исходник вида:
    Bug.cs (вызываемый exe-файл, ./Bug.exe)

    using System;
    using System.Globalization;
    using System.Threading;
    using System.IO;
    using System.Reflection;
    namespace Bug
    {
    class Program
    {
     public static void Main(string[] args)
     {
      Thread.CurrentThread.CurrentUICulture = new CultureInfo("ru");
      var MyClass1 = Find();
      if (MyClass1 != null)
       MyClass1.Run();
      Console.Write("Press any key to continue . . . ");
      Console.ReadKey(true);
     }

     private static IMyClass Find()
     {
      var FileInfo1 = new FileInfo(@"folder\Test.dll");
      Assembly Assembly1 = Assembly.LoadFile(FileInfo1.FullName);
      foreach (Type Type1 in Assembly1.GetTypes())
      {
       Type IFace = Type1.GetInterface("Bug.IMyClass");
       if (IFace != null)
       {
        IMyClass Result = (IMyClass)Activator.CreateInstance(Type1);
        return Result;
       }

      }
      return null;
     }
    }
    }



    IMyClass.cs (dll-интерфейс, ./IMyClass.dll)

    using System;
    namespace Bug
    {
    public interface IMyClass
    {
     void Run();
    }

    }



    Test.cs (dll-плагин, ./folder/Test.dll + ./folder/ru/Test.resources.dll)

    using System;
    using System.Resources;
    using System.Reflection;
    using Bug;
    namespace Test
    {
    public class MyClass : IMyClass
    {
     public MyClass()
     {
     }

     public void Run()
     {
      var Assembly1 = Assembly.GetExecutingAssembly();
      var ResourceManager1 = new ResourceManager("Test.Resources.Resource1", Assembly1);
      string s = ResourceManager1.GetString("string");
      Console.WriteLine(s);
     }

    }
    }



    Когда все файлы организовать в одном корне папки - локализованую строчку вижу,

    В чём мой затык?
  • dzmitry[li] (03.03.10 13:59) [1]
    проблему решил (другим методом)
    подсказка: AddPrivateBinPath
 
Конференция ".Net" » Загрузка ресурсов для dll в других папках [C#]
Есть новые Нет новых   [134427   +35][b:0][p:0.001]