【问题标题】:Using LibGit2Sharp in the Mono ASP.NET MVC project on Ubuntu在 Ubuntu 上的 Mono ASP.NET MVC 项目中使用 LibGit2Sharp
【发布时间】:2014-05-11 09:27:00
【问题描述】:

我在 Ubuntu 上的 MonoDevelop 中创建了 ASP.NET MVC 项目。
使用 Nuget,我添加了 LibGit2Sharp 包,但它没有为 linux 环境编译的 libgit2 库。
然后我下载了libgit2 源并编译了它们。
现在我有 libgit2-06d772d.so,但是当我将它放入我的 asp.net mvc 项目的 bin 文件夹时,我得到 System.DllNotFoundException git2-06d772d

注意
当我创建控制台项目并将 libgit2-06d772d.so 放入该项目的 bin 文件夹时,应用程序工作正常。

【问题讨论】:

    标签: asp.net-mvc ubuntu mono libgit2 libgit2sharp


    【解决方案1】:

    共享对象在特定文件旁边时不会被加载,但当它们的目录位于库加载路径中时。操作系统设置了一些对所有程序都有效的路径,但是如果你的库在别处,你需要自己指定目录。

    使用库的目录导出LD_LIBRARY_PATH 将使库加载器知道您希望从哪些其他路径加载库。例如。如果您使用 libgit2sharp 脚本构建 libgit2,您可能会运行

    export LD_LIBRARY_PATH=$HOME/libgit2sharp/libgit2/build
    

    在控制台中让操作系统知道你从那个 shell 启动的任何程序在哪里可以找到 libgit2。

    基于 mono 的应用程序通常会提供一个脚本供用户运行,该脚本在调用 mono 以启动实际的 .exe 程序之前设置环境。

    【讨论】:

    • 感谢您的回答,但没有帮助。如果这对于基于单声道的应用程序很常见,那么为什么在我创建控制台应用程序时它可以正常工作?
    • 这对于 unix 系统上的每个应用程序都很常见。 /usr/lib 是标准加载路径的一部分,所以把它放在那里会让每个程序都能找到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多