<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>On further examination, it seems that when using mono_set_dirs (), is looking for:</div><div><br></div><div><b><span class="Apple-tab-span" style="white-space:pre">       </span>lib/mono/4.0</b></div><div>AND</div><div><span class="Apple-tab-span" style="white-space:pre">     </span><b>lib/mono/gac</b></div><div><b><br></b></div><div>Is there a way to avoid requiring the gac for an application with embedded mono?   A strace on all file open attempts shows that the gac is key to allowing the enumeration of types in System.Core.dll.   How do I work around this?  I don't want the file overhead of the gac if I can help it.  Just want to be able to indicate the 3 dependent assemblies.</div><div><br></div><div>Here are the calls (I have a very trimmed 2.10.6 distribution under "/home/jshore/Dev/EA/Isolated/dist"):</div><div><br></div><div><div>open("/home/jshore/Dev/EA/Isolated/lib/noarch/com.gf.core.dll", O_RDONLY) = 3</div><div>open("/home/jshore/Dev/EA/Isolated/dist/lib/mono/4.0/mscorlib.dll", O_RDONLY) = 3</div><div>...</div><div>open("/home/jshore/Dev/EA/Isolated/dist/lib/mono/gac/System.Core/4.0.0.0__b77a5c561934e089/System.Core.dll", O_RDONLY) = 3</div><div>open("/home/jshore/Dev/EA/Isolated/dist/lib/mono/gac/System/4.0.0.0__b77a5c561934e089/System.dll", O_RDONLY) = 3</div><div><br></div></div><div>Why doesn't mono look in lib/mono/4.0 for System.Core.dll?</div><div><br></div><br><div><div>On Apr 2, 2012, at 8:26 PM, Jonathan Shore wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi,<div><br></div><div>So I've been running some embedded apps with mono for a while successfully.   In each case have a full mono installation available locally on the box on which the application is run.</div><div><br></div><div>I needed to create a minimal mono environment  so can run the app with embedded mono, but without a full mono installation.   My application just depends on mscorlib.dll, System.Core.dll, and System.Data.dll (4.0).  I am testing on a virgin install of ubuntu 10.4, which for better or worse has an ancient mono installed (2.4.4), but would represent the typical target environment.  </div><div><br></div><div>I created a very minimal install and directed the mono VM to find what it needs in the application-local install, with:</div><div><br></div><div><pre class="c" style="font-family: monospace; font-size: 0.95em; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(248, 248, 248); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 5px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(221, 221, 221); border-right-color: rgb(221, 221, 221); border-bottom-color: rgb(221, 221, 221); border-left-color: rgb(221, 221, 221); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-top: 1em; margin-right: 1em; margin-bottom: 1em; margin-left: 1em; color: rgb(51, 51, 51); letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; position: static; z-index: auto; ">   mono_set_dirs <span style="color: rgb(0, 153, 0); ">(</span>myapp_lib<span style="color: rgb(51, 153, 51); ">,</span> myapp_etc<span style="color: rgb(0, 153, 0); ">)</span><span style="color: rgb(51, 153, 51); ">;</span></pre><div>This appears to work as expected.   Was able to load my assembly and start evaluation of a function.   However, ran into a problem when one of the functions attempts to use reflection to find a type.   I called Assembly.GetTypes() on the System.Core assembly, but throws the following exception:</div></div><div><br></div><div><div>searching assembly: System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</div><div>exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.</div><div>  at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (System.Reflection.Assembly,bool)</div><div>  at System.Reflection.Assembly.GetTypes () [0x00000] in <filename unknown>:0 </div></div><div><br></div><div>(the "searching" message is a diagnostic from my code).   I believe it successfully located System.Core, but for some reason is failing to load the classes.   Previously I did not have System.Core.dll in the same directory with my application dll and it complained about not finding (so it has definitely found the dll).</div><div><br></div><div>Any ideas on what causes the System.Reflection.ReflectionTypeLoadException to be thrown?</div><div><br></div><div>My setup is as follows:</div><div><br></div><div><div>$ ls lib</div><div>com.gf.core.dll  mono  System.Core.dll  System.Data.dll</div></div><div><br></div><div><div>$ ls mono</div><div>2.0 4.0</div></div><div><br></div><div><div>$ ls mono/2.0</div><div>mscorlib.dll  System.Core.dll  System.Data.dll</div></div><div><br></div><div><div><div>$ ls mono/4.0</div><div>mscorlib.dll  System.Core.dll  System.Data.dll</div></div></div><div><br></div><div>In my code, mono_set_dirs (...) is set to point to lib, and appears to pick up the dlls correctly.    Would the exception result from a DLL dependency or environmental element that is required?   Could the ancient mono 2.4.4 bundled with ubuntu be interfering?</div><div><br></div><div><br></div><div>Thanks</div><div>Jonathan</div><div><br></div></div></blockquote></div><br></body></html>