Моно сборка папок? - PullRequest
       5

Моно сборка папок?

3 голосов
/ 11 октября 2009

В системе Windows реестр имеет ключи, такие как:

HKLM \ SOFTWARE \ Microsoft \ .NETFramework \ v2.0.50727 \ AssemblyFoldersEx

для папок с точечными сетками, кроме gac.

Есть ли у не-выигрышной моно-системы способ их получения или это просто считалось неважным?

Ответы [ 2 ]

5 голосов
/ 11 октября 2009

Реестр не кроссплатформенный. Это также не очень хорошее место для хранения ваших данных конфигурации. НЕ ИСПОЛЬЗУЙТЕ РЕГИСТРАЦИЮ В .NET, ЕСЛИ ВЫ НЕ ИСПОЛЬЗУЕТЕ КОД УСТАВА.

GAC отслеживает глобальные сборки для вас как в Mono, так и в .NET. Любые локальные сборки должны храниться вместе с остальной частью вашей программы.

Если вам действительно нужны эти местоположения (а вам это не нужно), вам следует вручную указать эти местоположения в файле конфигурации.

Почему вы ищете физическое местоположение сборки, которая в любом случае находится в GAC?

3 голосов
/ 13 октября 2009

Для начала Mono в Linux сохраняет GAC в виде списка файлов, путей и ссылок между ними. Большая часть кода, который создает базовую моно-среду выполнения, использует флаг времени компиляции с именем MONO_ASSEMBLIES. Это значение по умолчанию установлено в $ prefix / lib в системе сборки.

В большинстве дистрибутивов Linux префикс $ установлен на "/ usr", поэтому MONO_ASSEMBLIES будет / usr / lib. С учетом этого фактические базовые пути для GAC $prefix/lib/mono/gac. Вы также можете установить переменную окружения для моно (MONO_GAC_PREFIX), которая позволяет вам установить несколько базовых путей для GAC.

Поскольку этот путь можно изменить для каждой установки, а моно позволяет использовать несколько путей с использованием переменной среды, вам может понадобиться базовый путь Assembly.Location . Кроме того, Assembly.GlobalAssemblyCache поможет вам определить, нужно ли вообще проверять его путь.

Надеюсь, это поможет!

...