App.config dllmap条目的可移植性

3

在Mono中,dllmap配置文件条目用于将对Windows DLL的请求映射到Linux(.so)库。但是,如果Microsoft的.NET框架尝试解析带有这样一个条目的配置文件,则会出现错误,因为它不理解"dllmap"。我认为我发行版中的其他所有内容都可以在Linux和Windows XP上不改变地分发。在所有涉及可移植性的内容中,这个配置项真的是致命的难点吗?难道没有办法在平台之间共享此文件吗?

2个回答

3
您确定需要“dllmap”条目吗?在Windows上,您不能仅依赖于自动映射“somelibrary”到“somelibrary.dll”,在Linux上则为“somelibrary.so”吗?
此外,我认为框架会跳过它不希望出现的条目...
编辑:在Linux中发布库的标准方法是将无版本链接指向最新版本。因此,您可以添加指向libfmodex-4.22.01.so的libfmodex.so。然后使用[DllImport(“fmodex”)],框架将自动解决其余部分。

  1. Windows库的名称为fmodex.dll。Linux库的名称为libfmodex-4.22.01.so。我不想重命名它们,而且我怀疑自动映射也无法解决这个问题。
  2. 我以为.NET会跳过它不理解的条目,直到我遇到一个运行时错误 - 显然它直到发生错误才尝试读取配置文件,当它尝试读取配置以确定如何做出反应时,它又遇到了另一个处理文件的错误。
- BlueMonkMN
我可以自己检查,但是我现在没有启动Linux:在.tar.gz文件中是否有符号链接这样的东西,以便在提取存档时您可以获得文件和指向它的符号链接? - BlueMonkMN
是的,这是tar的默认行为。 - skolima

0

将DLL导入代码放在一个独立的程序集DLL中。然后添加一个名为yourinterop.dll.config的文件,其中包含dllmap条目。这将被MS忽略并由Mono处理。请参阅我的重复问题


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接