[Opensim-dev] Adding an assembly reference to make available via script

Justin Clark-Casey jjustincc at googlemail.com
Thu May 27 23:45:16 UTC 2010


J Lothian wrote:
> Justin,
>  
> Thanks for pointing me in a direction, this was -very- helpful.  It 
> wasn't nearly as straightforward as I was expecting, but it did give me 
> the opportunity/excuse to get my hands dirty and dig into the projects 
> and code a bit.  I'm going to document the process a bit here, so it 
> gets archived for future reference.  I'm pretty sure I've narrowed down 
> the steps needed.
> The actual project that needs the assembly reference added to it is 
> OpenSim.Region.ScriptEngine.Shared.CodeTools, but this is just the 
> start.  This gets the assembly detectable by the compiler.  The next 
> step is adding the reference to the script being compiled.  In 
> OpenSim.Region.ScriptEngine.Shared.CodeTools.Compiler (Compiler.cs), in 
> the function CompileFromDotNetText, there is a section where 
> ReferencedAssemblies are added to the compiler as parameters, and the 
> assembly needs to be added here as well.  For example, to add a standard 
> library, the following line would be used:
>  
> parameters.ReferencedAssemblies.Add("System.dll");
>  
> Which, it turns out, I needed to do, as System.dll isn't added by 
> default, and our test script included a try/catch where Exception was 
> not detected as a type.  To add something like the MySql dll that comes 
> with OpenSim, it would look like this:
> 
> parameters.ReferencedAssemblies.Add(
> 
> Path.Combine(rootPath,"MySql.Data.dll"));The script engine automatically 
> wraps scripts in boilerplate code to put them inside a class and make 
> them compilable.  This has the side-effect of making "using" or "import" 
> statements inside scripts impossible, so these also need to be added to 
> the code. 
> For example, if your script is C#, then the function to alter is 
> CreateCSCompilerScript (in the same Compile.cs), adding the using 
> statement to the list inside this function.
>  
> If I get the chance later this summer, I may try to develop a more 
> robust system that attempts to (at the very least) detect the default 
> mono/.net libraries and automatically adjust this boilerplate to include 
> them...
>  
> Again, thanks for the help!

Glad that was of some use!  Would very much look forward to a boilerplate adjuster - being able to include extra libraries from OpenSim C# 'scripts' would be really useful.

Also, it would be great if you could copy the above into a new wiki page off http://opensimulator.org/wiki/Developer_Documentation#Scripting.  Things tend to stay a little bit more visible there.  Thanks!

-- 
Justin Clark-Casey (justincc)
http://justincc.org
http://twitter.com/justincc



More information about the Opensim-dev mailing list