Отключить поиск в GAC - PullRequest
       18

Отключить поиск в GAC

4 голосов
/ 10 марта 2011

Я пытаюсь использовать FSharp PowerPack для библиотеки ArgParser, но сталкиваюсь с некоторыми серьезными проблемами на моем компьютере, когда кажется, что загружается неправильная версия FSharp.Core.dll из GAC, которая затем вызывает загрузку ArgParser потерпеть неудачу. В идеале я бы решил проблему с этим (поскольку она работает на компьютерах моего коллеги), но я пробовал все виды комбинаций удаления и переустановки двоичных файлов FSharp из системы, но безрезультатно.

Поскольку мне не очень нравится тот факт, что я не могу просто отбросить DLL, которые известны , как правильные в исполняемом каталоге из-за GAC, если есть какой-либо способ просто отключить поиск в GAC, я с удовольствием сделаю это.

Я знаю, что это решение было бы чем-то вроде взлома, но сейчас мне просто нужно заставить его загружаться и работать, и я попробую что-нибудь.

EDIT

Еще немного информации. Вот выход нагрузки для проекта.

'PowerPackTest.exe' (Managed (v4.0.30319)): Loaded 'C:\WINNT\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'PowerPackTest.exe' (Managed (v4.0.30319)): Loaded 'C:\Projects\PowerPackTest\PowerPackTest\bin\Debug\PowerPackTest.exe', Symbols loaded.
'PowerPackTest.exe' (Managed (v4.0.30319)): Loaded 'C:\WINNT\Microsoft.Net\assembly\GAC_MSIL\FSharp.Core\v4.0_4.0.0.0__b03f5f7f11d50a3a\FSharp.Core.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'PowerPackTest.exe' (Managed (v4.0.30319)): Loaded 'C:\WINNT\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'PowerPackTest.exe' (Managed (v4.0.30319)): Loaded 'C:\WINNT\assembly\GAC_MSIL\FSharp.PowerPack\2.0.0.0__a19089b1c74d0809\FSharp.PowerPack.dll'
'PowerPackTest.exe' (Managed (v4.0.30319)): Loaded 'C:\WINNT\assembly\GAC_MSIL\FSharp.Core\2.0.0.0__b03f5f7f11d50a3a\FSharp.Core.dll'

Как видите, сначала он загружает FSharp.Core v4, но затем загружает v2 поверх него в последнюю секунду. Это не происходит на машинах моего коллеги.

Ответы [ 3 ]

4 голосов
/ 10 марта 2011

Предварительно собранные двоичные файлы PowerPack скомпилированы для CLR v2 и также ссылаются на FSharp.Core v2. Это, вероятно, то, что вызывает эту проблему. Я не совсем понимаю, почему версия PowerPack для .NET 4 не предлагается для загрузки (или в NuGet!), Но вы можете обойти это двумя способами:

Вы можете настроить перенаправление привязки сборки , но я не знаю, будет ли это работать для fsi.exe.

Или вы можете загрузить исходный код в F # PowerPack и скомпилировать свою собственную версию .NET 4. Это довольно просто.

0 голосов
/ 10 марта 2011

Я только что посмотрел на проект .net 4.0, где я использую ArgParser, я ссылаюсь на FSharp.Core и FSharp.Powerpack, а также в app.config у меня есть настройка перенаправления:

    <startup useLegacyV2RuntimeActivationPolicy="true">
       <supportedRuntime version="v4.0"/>
    </startup>

чч

0 голосов
/ 10 марта 2011

GAC всегда побеждает - это функция безопасности. Если у вас другая версия FSharp.Core, почему бы вам не сбросить ее и в GAC и не использовать привязку перенаправления в вашем app.config для принудительной загрузки более новой версии или перестроить ваше приложение (может быть невозможно ) против новой версии?

-Oisin

...