I compiled the test.cs
file (which references a third party library) using the dmcs
executable for Mac and the following command line program:
dmcs /out:program.exe test.cs /target:exe /reference:/Users/kevin/path/to/bin/Debug/project.dll
This compiled with no problems (excluding the /reference argument causes issues). This created a program.exe
executable in the current directory. When I tried to run it like this:
mono program.exe
I got the following error:
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.
The only way I could figure out to solve this was by copying the project.dll
file into the directory containing the program.exe
file. Once I copied project.dll
into the same directory, the program ran correctly.
Is there an extra argument I can pass to mono
to specify DLL's in a different program directory? Or, is there a flag I can pass to dmcs
to get it to compile the DLL`s directly into the binary?
You can use the probing element in app.config to achieve what you want
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin2\subbin;bin3"/>
</assemblyBinding>
</runtime>
</configuration>
Where you set privatePath to whatever directory you want. http://msdn.microsoft.com/en-us/library/823z9h8w(v=vs.80).aspx
However, unless you specify a sub directory, I'd strongly advice against this. If you really do not want to have the assembly in the same directory, consider linking as Uwe Keim suggested or use the GAC.
Linking: http://www.mono-project.com/Linker
GAC: http://www.mono-project.com/Assemblies_and_the_GAC
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With