static void OnAddinStarted(Addin addin) { //// 添加私有程序集探测路径 //var probingPath = AppDomain.CurrentDomain.SetupInformation.PrivateBinPath ?? string.Empty; //probingPath += args.Addin.File.BaseDirectory + ";"; //AppDomain.CurrentDomain.SetupInformation.PrivateBinPath = probingPath; // 添加路由 var asms = addin.Runtime.LoadAssemblies(); JointCode.AddIns.Mvc.System.AreaRegistration areaReg = null; // private AreaRegistration implementations foreach (var asm in asms) { Type[] types; if (!JcMvcUtil.TryGetTypes(asm, out types)) { continue; } foreach (var type in types) { if (!type.IsClass || type.IsAbstract) { continue; } if (!typeof(JointCode.AddIns.Mvc.System.AreaRegistration).IsAssignableFrom(type)) { continue; } var ar = Activator.CreateInstance(type) as JointCode.AddIns.Mvc.System.AreaRegistration; if (ar != null && areaReg != null) { throw new ConfigurationException(string.Format("More than one private area registrations has been found in addin [{0}]!", addin.Header.Name)); } areaReg = ar; AreaRegistrationHelper.RegisterArea(ar, null); } } if (areaReg != null) { var key = addin.Header.Name + "/" + PrivateAreaRegistrations; if (addin.Context.Framework.ContainsPropertyKey(PrivateAreaRegistrations)) { throw new ConfigurationException(string.Format( "The private area registration key [{0}] for addin [{1}] has been taken, please use another area name and try again!", key, addin.Header.Name)); } addin.Context.Framework.SetProperty(key, areaReg); } else { AreaRegistrationHelper.RegisterArea(addin.Header.Name, null); // 添加路由 } // 添加程序集引用 foreach (var asm in asms) { BuildManagerHelper.AddReferencedAssembly(asm); } }