我使用Mac的test.cs
可执行文件和以下命令行程序编译了dmcs
文件(引用第三方库):
dmcs /out:program.exe test.cs /target:exe /reference:/Users/kevin/path/to/bin/Debug/project.dll
编译没有问题(排除/ reference参数导致问题)。这在当前目录中创建了program.exe
可执行文件。当我试图像这样运行它时:
mono program.exe
我收到以下错误:
Unhandled Exception:
System.IO.FileNotFoundException: Could not load file or assembly 'project, Version=3.4.1.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies.
我能解决这个问题的唯一方法是将project.dll
文件复制到包含program.exe
文件的目录中。将project.dll
复制到同一目录后,程序运行正常。
是否有额外的参数可以传递给mono
以在不同的程序目录中指定DLL?或者,是否有一个标志我可以传递给dmcs
以使它将DLL直接编译成二进制文件?
答案 0 :(得分:3)
您可以使用app.config中的探测元素来实现您想要的效果
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin2\subbin;bin3"/>
</assemblyBinding>
</runtime>
</configuration>
将privatePath设置为您想要的任何目录。 http://msdn.microsoft.com/en-us/library/823z9h8w(v=vs.80).aspx
但是,除非你指定一个子目录,否则我强烈建议不要这样做。 如果您确实不希望将程序集放在同一目录中,请考虑使用Uwe Keim建议的链接或使用GAC。