Reference в директорию, отличную от расположения assembly
От: Lassor Россия  
Дата: 30.05.03 12:56
Оценка:
Подскажите, пожалуйста, как сделать сабж, цель примерно такая:

CClass1 (assembly1.dll)
CClass2 (assembly2.dll)

CClass2 inherits CClass1 + Reference на assembly1.dll

и чтобы после компиляции было следующее:

..\Dir\assembly2.dll
..\assembly1.dll

Спасибо
Re: Reference в директорию, отличную от расположения assembl
От: Akzhan Россия http://www.akzhan.midi.ru/devcorner/
Дата: 30.05.03 13:08
Оценка: 2 (1)
Здравствуйте, Lassor, Вы писали:

Используйте файлы конфигурации, переменная privatePath.
С уважением,
Акжан, http://www.akzhan.midi.ru/devcorner/ — мой уголок разработчика
Re[2]: Reference в директорию, отличную от расположения asse
От: Lassor Россия  
Дата: 30.05.03 14:08
Оценка:
Здравствуйте, Akzhan, Вы писали:

A>Используйте файлы конфигурации, переменная privatePath.


Да, вы правы, это возможно, но следуя из выдержки из msdn:

"The directories specified in privatePath must be subdirectories of the application base directory." (ms-help://MS.VSCC/MS.MSDNVS/cpguide/html/cpconspecifyingassemblyslocation.htm)

описанная директория должна быть под-директорией, интересует же обратный случай, когда референс ассембл в родительской..
Re[3]: Reference в директорию, отличную от расположения asse
От: Ed.ward Россия  
Дата: 30.05.03 14:36
Оценка:
Здравствуйте, Lassor, Вы писали:

L>Здравствуйте, Akzhan, Вы писали:


A>Используйте файлы конфигурации, переменная privatePath.


L>Да, вы правы, это возможно, но следуя из выдержки из msdn:


L>"The directories specified in privatePath must be subdirectories of the application base directory." (ms-help://MS.VSCC/MS.MSDNVS/cpguide/html/cpconspecifyingassemblyslocation.htm)


L>описанная директория должна быть под-директорией, интересует же обратный случай, когда референс ассембл в родительской..


Сие, Сударь, невозможно.
Это политика .NET — сборка видит только то, что лежит не выше ее директории.
Ну и GAC, конечно, есть.

Ed.ward
... << RSDN@Home 1.0 beta 7a >>
Re[4]: Reference в директорию, отличную от расположения asse
От: Lassor Россия  
Дата: 30.05.03 14:40
Оценка:
Здравствуйте, Ed.ward, Вы писали:

EW>Сие, Сударь, невозможно.

EW>Это политика .NET — сборка видит только то, что лежит не выше ее директории.
EW>Ну и GAC, конечно, есть.

Спасибо, видимо, действительно его использовать и придётся
Re[4]: Reference в директорию, отличную от расположения asse
От: PeterZT  
Дата: 30.05.03 15:07
Оценка:
Если сильно захотеть можно в космос улететь.
В AppDomain добавляем eventHandler на AssemblyResolve и хоть динамически эту сборку конструируй.
... << RSDN@Home 1.0 beta 7a >>
Re[5]: Reference в директорию, отличную от расположения asse
От: Ed.ward Россия  
Дата: 30.05.03 15:27
Оценка:
Здравствуйте, PeterZT, Вы писали:

PZT> Если сильно захотеть можно в космос улететь.

PZT>В AppDomain добавляем eventHandler на AssemblyResolve и хоть динамически эту сборку конструируй.

Динамически-то это да, но можно ли загрузить руками assembly находящуюся выше по дереву каталогов?

Ed.ward
... << RSDN@Home 1.0 beta 7a >>
Re[6]: Reference в директорию, отличную от расположения asse
От: PeterZT  
Дата: 31.05.03 20:38
Оценка: 3 (1)
EW>Динамически-то это да, но можно ли загрузить руками assembly находящуюся выше по дереву каталогов?

    FileInfo fi = new FileInfo("c:\\super-sborka.dll");
    byte[] res = new byte[fi.Length];
    using(FileStream fs = new FileStream(asm,FileMode.Open,
      FileAccess.Read))
    fs.Read(res,0,(int)fi.Length);
    Assembly asm = AppDomain.CurrentDomain.Load(res)
... << RSDN@Home 1.0 beta 7a >>
Re[4]: Reference в директорию, отличную от расположения asse
От: MaxMP Россия  
Дата: 01.06.03 00:54
Оценка: 20 (3)
Здравствуйте, Ed.ward, Вы писали:

EW>Сие, Сударь, невозможно.

EW>Это политика .NET — сборка видит только то, что лежит не выше ее директории.
EW>Ну и GAC, конечно, есть.

Не совсем так. Данное ограничение касается только private-сборок. Достаточно подписать сборку и добавить dependency в config, и можно использовать референсную сборку из любой директории и даже из веба

Пример config'а:
<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="B" culture="neutral" 
                    publicKeyToken="278fb7977f6c282e"/>
                <codeBase version="1.0.0.0" href="../B.dll"/><!-- Ниже уровнем! -->
         </dependentAssembly>

      </assemblyBinding>
   </runtime>
</configuration>
Re[7]: Reference в директорию, отличную от расположения asse
От: Banch  
Дата: 02.06.03 09:16
Оценка:
можно немного проще :)

Assembly objAssembly = Assembly.LoadFrom( @"c:\super-sborka.dll" );
Re[8]: Reference в директорию, отличную от расположения asse
От: MaxMP Россия  
Дата: 02.06.03 11:56
Оценка:
Здравствуйте, Banch, Вы писали:

B>можно немного проще


B>Assembly objAssembly = Assembly.LoadFrom( @"c:\super-sborka.dll" );


Это да, но это не поможет, когда в super-sborka.dll находятся референсные типы и другие референсные вещи.
Re[9]: Reference в директорию, отличную от расположения asse
От: mihailik Украина  
Дата: 03.06.03 08:38
Оценка:
B>Assembly objAssembly = Assembly.LoadFrom( @"c:\super-sborka.dll" );

MMP>Это да, но это не поможет, когда в super-sborka.dll находятся референсные типы и другие референсные вещи.


Стопудово поможет. Нужно только повесить handler на событие AppDomain.ResolveAssembly и возвращать нужную Assembly. Но handler нужно повесить до того, как референс понадобится первый раз.
... << RSDN@Home 1.0 beta 7a >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.