diff --git a/OpenSim/Server/Base/ServerUtils.cs b/OpenSim/Server/Base/ServerUtils.cs
index d06d612a2d..d6d3957ce5 100644
--- a/OpenSim/Server/Base/ServerUtils.cs
+++ b/OpenSim/Server/Base/ServerUtils.cs
@@ -139,8 +139,7 @@ namespace OpenSim.Server.Base
if (a.AddinFile.Contains(Registry.DefaultAddinsFolder))
{
m_log.InfoFormat("[SERVER]: Adding {0} from registry", a.Name);
- connector.PluginPath = String.Format("{0}/{1}", Registry.DefaultAddinsFolder, a.Name.Replace(',', '.'));
- }
+ connector.PluginPath = System.IO.Path.Combine(Registry.DefaultAddinsFolder,a.Name.Replace(',', '.')); }
else
{
m_log.InfoFormat("[SERVER]: Adding {0} from ./bin", a.Name);
@@ -216,20 +215,27 @@ namespace OpenSim.Server.Base
///
/// The arguments which control which constructor is invoked on the plugin
///
- public static T LoadPlugin(string dllName, Object[] args) where T:class
- {
- // This is good to debug configuration problems
- //if (dllName == string.Empty)
- // Util.PrintCallStack();
+ public static T LoadPlugin (string dllName, Object[] args) where T:class
+ {
+ // This is good to debug configuration problems
+ //if (dllName == string.Empty)
+ // Util.PrintCallStack();
+
+ string className = String.Empty;
- string[] parts = dllName.Split(new char[] {':'});
+ // The path for a dynamic plugin will contain ":" on Windows
+ string[] parts = dllName.Split (new char[] {':'});
- dllName = parts[0];
-
- string className = String.Empty;
-
- if (parts.Length > 1)
- className = parts[1];
+ if (parts [0].Length > 1) {
+ dllName = parts [0];
+ if (parts.Length > 1)
+ className = parts[1];
+ } else {
+ // This is Windows - we must replace the ":" in the path
+ dllName = String.Format ("{0}:{1}", parts [0], parts [1]);
+ if (parts.Length > 2)
+ className = parts[2];
+ }
return LoadPlugin(dllName, className, args);
}