В качестве продолжения моего предыдущего question.`Assembly.Load` в отдельной папке
Я загружаю DLL через этот код. Пример 1:
var assembly = Assembly.LoadFile("C:\\Temp\\PROCESSOR\\SKM.dll");
И это отлично работает.
Но я использую сериализации, что внутренне использовать этот код, пример 2:
var ass1 = Assembly.Load("SKM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
И этот код выдает исключение: System.Runtime.Serialization.SerializationException: Unable to find assembly "SKM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null".
- это потому, что DLL в отдельной папке.
Как заставить CLR увидеть DLL в отдельном каталоге (не в подпапках основного приложения)?
Я попытался это:
<codeBase version="1.0.0.0" href="C:\\Temp\\PROCESSOR\\SKM.dll"/>
- не работают, потому что это работает только для вложенных папок.<probing privatePath="paths"/>
- не работает, потому что он работает только для подпапок.- Сначала запустите первый пример, а затем запустите второй пример. Но даже если уже загружен
SKM.dll
, CLR не видит мою сборку.
Боковое примечание, но вы получаете FullPath() полного пути. –
@HenkHolterman спасибо, я исправил его)) –
Возможно, ловить AppDomain.AssemblyResolve и вызов Assembly.LoadFrom с fullPath оттуда есть опция. – Ralf