Example #1
0
        /// <summary>
        /// Create an instance of TransformationRunner in the transformDomain
        /// </summary>
        public IDebugTransformationRun CreateTransformationRun(Type t, string content, Func <AssemblyLoadContext, AssemblyName, Assembly?>?resolver)
        {
            AssemblyLoadContext appDomain = null;

            try
            {
                appDomain = host.ProvideTemplatingAppDomain(content);
            }
            catch (Exception e)
            {
                if (Engine.IsCriticalException(e))
                {
                    throw;
                }
            }
            if (appDomain == null)
            {
                return(null);
            }
            appDomain.Resolving += resolver;
            //appDomain.AssemblyResolve += resolver;
            var context  = AssemblyLoadContext.GetLoadContext(t.Assembly);
            var assembly = context?.LoadFromAssemblyName(new AssemblyName(t.Assembly.FullName));

            return(assembly?.CreateInstance(t.FullName) as IDebugTransformationRun);
            //return appDomain.CreateInstanceAndUnwrap(t.Assembly.FullName, t.FullName) as IDebugTransformationRun;
        }
Example #2
0
		ITextTemplatingEngine GetEngine (ITextTemplatingEngineHost host, string content)
		{
			var appdomain = host.ProvideTemplatingAppDomain (content);
			if (appdomain == null) {
				return new TemplatingEngine ();
			} else {
				var type = typeof (TemplatingEngine);
				return (ITextTemplatingEngine) appdomain.CreateInstanceAndUnwrap (type.Assembly.FullName, type.FullName);
			}
		}
		public string ProcessTemplate (string content, ITextTemplatingEngineHost host)
		{
			AppDomain appdomain = host.ProvideTemplatingAppDomain (content);
			ITextTemplatingEngine engine;
			if (appdomain != null) {
				engine = (ITextTemplatingEngine)
					appdomain.CreateInstanceAndUnwrap (typeof (TemplatingEngine).Assembly.FullName,
					                                   typeof (TemplatingEngine).FullName);
			} else {
				engine = new TemplatingEngine ();
			}
			
			return engine.ProcessTemplate (content, host);
		}