Когда я запускаю приложение, у которого есть только один AppDomain, AppDomain.CurrentDomain.SetupInformation.PrivateBinPath
имеет значение null. Несмотря на то, что у меня есть пути проверки, установленные в MyApp.exe.config, как показано ниже.
Я бы испробовал, что AppDomain.CurrentDomain.SetupInformation.PrivateBinPath
содержит строку "Dir1;Dir2;Dir3"
.
Как я могу получить доступ к пути проверки, как это описано в файле MyApp.exe.config?
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="Foo" value="Bar" />
</appSettings>
<startup>
<!-- supportedRuntime version="v1.1.4322" / -->
</startup>
<runtime>
<gcConcurrent enabled="true" />
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<publisherPolicy apply="yes" />
<!-- Please add your subdirectories to the probing path! -->
<probing privatePath="Dir1;Dir2;Dir3" />
</assemblyBinding>
</runtime>
<system.windows.forms jitDebugging="true" />
</configuration>
Обновление
Поскольку Ханс Пассант указал комментарий ниже, SetupInformation.PrivateBinPath
не установлен для основного приложения. Таким образом, вышесказанное не работает. Каково было бы ваше предложение моделировать способ поиска fusion для сборок на пути зондирования или, по крайней мере, принять во внимание <probing privatePath="" />
из текущей конфигурации приложения? Самое лучшее, что я могу придумать, - это прочитать <probing privatePath="" />
из App.config вручную, когда текущий домен является основным доменом (AppDomain.CurrentDomain.IsDefaultAppDomain()
is true
). Есть ли лучший способ?
Обновление 2
Вот дополнительная информация о том, что это необходимо для: Эта проблема возникла в AppDomainAssemblyTypeScanner.GetAssemblyDirectories() Рамка Нэнси.
Нэнси автоматически обнаруживает и загружает сторонние модули и другие "плагины". По умолчанию предполагается, что это делается так же, как если бы загружались нормально связанные сборки (то есть, как это сделал fusion), просматривая траектории зондирования. Ассембли загружаются с помощью Assembly.Load
(в отличие от Assembly.LoadFrom
), так как я понимаю, все зависимые сборки загруженных сборок также должны быть доступны на пути исследования приложения/приложения.