2009-10-11 11 views
3

Sur un système Windows le registre a des touches comme:Dossiers d'assemblage mono?

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

pour les emplacements de montage dot net dossiers autres que la gac. Est-ce qu'un système mono non-win a un moyen de récupérer ces derniers ou était-il simplement considéré comme non important?

+4

Pourquoi devrait-on le vouloir? Le programme d'installation est celui qui installe les assemblys dans Applicationdirectory ou dans AssemblyCache - votre code n'a rien à voir avec ces dossiers. –

+0

"votre code n'a rien à voir avec ces dossiers" Comment pouvez-vous le savoir. Je n'ai jamais rien dit sur mon code. –

+0

Alors s'il vous plaît expliquer pourquoi vous avez besoin de connaître cet emplacement. Les chances sont que vous faites quelque chose que vous ne devriez pas faire. – skolima

Répondre

5

Le registre n'est pas multi-plateforme. Ce n'est pas non plus un bon endroit pour stocker vos données de configuration. N'UTILISEZ PAS LE REGISTRE DANS .NET À MOINS QUE VOUS NE TRAITEZ AVEC LE CODE HÉRITAGE.

Le GAC est là pour assurer le suivi des assemblages globaux pour vous dans Mono et .NET. Tous les assemblages locaux doivent être conservés avec le reste de votre programme.

Si vous avez vraiment besoin de ces emplacements (et vous ne devriez pas), vous devez spécifier manuellement ces emplacements dans un fichier de configuration. Pourquoi cherchez-vous l'emplacement physique d'un assemblage qui se trouve dans le GAC de toute façon?

3

Pour commencer, Mono sous Linux stocke le GAC sous la forme d'une liste de fichiers, de chemins et de liens entre les deux. La plupart du code qui crée l'exécution de base mono utilise un indicateur de temps de compilation nommé MONO_ASSEMBLIES. Cette valeur est définie par défaut sur $ prefix/lib dans le système de construction. Sur la plupart des distributions Linux, le préfixe $ est défini sur "/ usr", alors MONO_ASSEMBLIES serait/usr/lib. Dans cet esprit, les chemins de base réels pour le GAC sont $prefix/lib/mono/gac. Vous pouvez également définir une variable d'environnement pour le mono (MONO_GAC_PREFIX) qui vous permet de définir plusieurs chemins de base pour le GAC.

Étant donné que ce chemin peut être modifié par installation et que mono permet d'utiliser plusieurs chemins à l'aide d'une variable d'environnement, vous devrez peut-être obtenir le chemin de base Assembly.Location. En outre, Assembly.GlobalAssemblyCache vous aidera à déterminer si vous devez vérifier son chemin du tout.

J'espère que cela aide!