setup.ConfigurationFile = fileName + ".config";\r
}\r
setup.ApplicationBase = Native.freeswitch.SWITCH_GLOBAL_dirs.mod_dir;\r
- setup.ShadowCopyDirectories = managedDir + ";";\r
setup.LoaderOptimization = LoaderOptimization.MultiDomainHost; // TODO: would MultiDomain work better since FreeSWITCH.Managed isn't gac'd?\r
setup.CachePath = shadowDir;\r
setup.ShadowCopyFiles = "true";\r
- setup.PrivateBinPath = "managed";\r
+\r
+ // computing private bin path\r
+ var binPath = setup.PrivateBinPath ?? string.Empty;\r
+\r
+ var binPaths = binPath.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries)\r
+ .Select(x => x.Trim())\r
+ .ToList();\r
+\r
+ // adding "managed" (modules) directory\r
+ if (!binPaths.Contains("managed", StringComparer.OrdinalIgnoreCase))\r
+ {\r
+ binPaths.Add("managed");\r
+ }\r
+\r
+ // adding "managed/<modulename>" directory for per-module references support\r
+ var moduleRefsDir = Path.GetFileName(fileName);\r
+ moduleRefsDir = Path.GetFileNameWithoutExtension(moduleRefsDir);\r
+\r
+ if (moduleRefsDir != null && moduleRefsDir.Trim() != "")\r
+ {\r
+ moduleRefsDir = Path.Combine("managed", moduleRefsDir);\r
+ if (!binPaths.Contains(moduleRefsDir, StringComparer.OrdinalIgnoreCase))\r
+ {\r
+ binPaths.Add(moduleRefsDir);\r
+ }\r
+ }\r
+\r
+ // bringing all together\r
+ setup.PrivateBinPath = string.Join(";", binPaths);\r
\r
// Create domain and load PM inside\r
System.Threading.Interlocked.Increment(ref appDomainCount);\r