我在 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 文件夹时,应用程序工作正常。
最佳答案
共享对象在特定文件旁边时不会被加载,而是在它们的目录位于库加载路径中时加载。操作系统设置了一些对所有程序都有效的路径,但是如果你的库在别处,你需要自己指定目录。
导出 LD_LIBRARY_PATH
使用库的目录将使库加载器知道您希望从中加载库的其他路径。例如。如果您使用 libgit2sharp 脚本构建 libgit2,您可能会运行
export LD_LIBRARY_PATH=$HOME/libgit2sharp/libgit2/build
在控制台中让操作系统知道您从该 shell 启动的任何程序都可以在哪里找到 libgit2。
基于单声道的应用程序通常会提供一个脚本供用户运行,该脚本在调用单声道启动实际
.exe
之前设置环境。与程序。
关于asp.net-mvc - 在 Ubuntu 上的 Mono ASP.NET MVC 项目中使用 LibGit2Sharp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23590941/