我在Ubuntu上使用Mono的mcs。我有一个Monogame程序,必须在名为“libs”的子目录中找到Monogame库。它编译得很好,但是当涉及到运行时它会给我一个错误,说它无法找到它。
未处理的例外情况: System.IO.FileNotFoundException:无法加载文件或程序集“MonoGame.Framework,Version = 3.1.2.0,Culture = neutral,PublicKeyToken = null”或其依赖项之一。 文件名:'MonoGame.Framework,Version = 3.1.2.0,Culture = neutral,PublicKeyToken = null' [错误]致命的未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集“MonoGame.Framework,Version = 3.1.2.0,Culture = neutral,PublicKeyToken = null”或其依赖项之一。 文件名:'MonoGame.Framework,Version = 3.1.2.0,Culture = neutral,PublicKeyToken = null'
我的编译器标志如下:
mcs -r:libs/MonoGame.Framework.dll -target:winexe -out:main.exe *.cs
甚至没有来自编译器的警告,但它无法运行。我已经尝试了很多这些标志的变体,我找不到静态编译的选项(我真的不想)。 当库位于同一目录中时,它运行正常,但在子目录中它不起作用。我尝试了一些假设的解决方案,例如“AppDomain.CurrentDomain”和“Environment.SetEnvironmentVariable”,但这样做并没有用,老实说这是个坏主意。
答案 0 :(得分:1)
子目录不会成为搜索路径的一部分。如果您必须将其放在子目录中,我建议您使用specifies a private search path:
的应用程序配置文件解决此问题<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="libs" />
</assemblyBinding>
</runtime>
</configuration>