单声道组装文件夹?

时间:2009-10-11 09:43:37

标签: .net mono cross-platform

在Windows系统上,注册表具有以下键:

  

HKLM \ SOFTWARE \微软\ .NETFramework \ V2.0.50727 \ AssemblyFoldersEx

用于除gac之外的点网组件文件夹的位置。

非胜利单声道系统是否有办法检索这些或者它被认为不重要?

2 个答案:

答案 0 :(得分:5)

注册表不是跨平台的。它也不是存储配置数据的好地方。除非您正在处理遗留代码,否则请勿在.NET中使用该注册表。

GAC可以在Mono和.NET中为您跟踪全局程序集。任何本地程序集都应与程序的其余部分保持一致。

如果您确实需要这些位置(而且不应该这样),那么您应该在配置文件中手动指定这些位置。

为什么要查找GAC中的程序集的物理位置?

答案 1 :(得分:3)

首先,Linux上的Mono将GAC存储为两者之间的文件,路径和链接列表。创建基本单声道运行时的大多数代码都使用名为MONO_ASSEMBLIES的编译时标志。默认情况下,此值在构建系统中设置为$ prefix / lib。

在大多数Linux发行版上,$ prefix设置为“/ usr”,因此MONO_ASSEMBLIES将是/ usr / lib。 考虑到这一点,GAC的实际基本路径为$prefix/lib/mono/gac。您还可以为单声道(MONO_GAC_PREFIX)设置环境变量,以便为GAC设置多个基本路径。

由于此路径可以按安装更改,而mono允许使用环境变量的多个路径,因此您可能需要获取Assembly.Location的基本路径。此外,Assembly.GlobalAssemblyCache将帮助您确定是否需要检查其路径。

我希望这有帮助!