diff --git a/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingCustomTool.cs b/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingCustomTool.cs
index 9bb20b3825..7bcc663a88 100644
--- a/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingCustomTool.cs
+++ b/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingCustomTool.cs
@@ -18,8 +18,8 @@ namespace ICSharpCode.TextTemplating
var assemblyResolver = new TextTemplatingAssemblyResolver(project);
var textTemplatingVariables = new TextTemplatingVariables();
var serviceProvider = new TextTemplatingServiceProvider();
- var host = new TextTemplatingHost(appDomainFactory, assemblyResolver, textTemplatingVariables, serviceProvider, applicationBase);
- return host;
+ var context = new TextTemplatingHostContext(project);
+ return new TextTemplatingHost(context, applicationBase);
}
string GetAssemblyBaseLocation()
diff --git a/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHost.cs b/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHost.cs
index 71dbb59852..7f40edde99 100644
--- a/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHost.cs
+++ b/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHost.cs
@@ -8,24 +8,13 @@ namespace ICSharpCode.TextTemplating
{
public class TextTemplatingHost : TemplateGenerator, ITextTemplatingHost, IServiceProvider
{
- ITextTemplatingAppDomainFactory appDomainFactory;
ITextTemplatingAppDomain templatingAppDomain;
- ITextTemplatingAssemblyResolver assemblyResolver;
- ITextTemplatingVariables templatingVariables;
- IServiceProvider serviceProvider;
+ TextTemplatingHostContext context;
string applicationBase;
- public TextTemplatingHost(
- ITextTemplatingAppDomainFactory appDomainFactory,
- ITextTemplatingAssemblyResolver assemblyResolver,
- ITextTemplatingVariables templatingVariables,
- IServiceProvider serviceProvider,
- string applicationBase)
+ public TextTemplatingHost(TextTemplatingHostContext context, string applicationBase)
{
- this.appDomainFactory = appDomainFactory;
- this.assemblyResolver = assemblyResolver;
- this.templatingVariables = templatingVariables;
- this.serviceProvider = serviceProvider;
+ this.context = context;
this.applicationBase = applicationBase;
}
@@ -47,12 +36,12 @@ namespace ICSharpCode.TextTemplating
void CreateAppDomain()
{
- templatingAppDomain = appDomainFactory.CreateTextTemplatingAppDomain(applicationBase);
+ templatingAppDomain = context.CreateTextTemplatingAppDomain(applicationBase);
}
protected override string ResolveAssemblyReference(string assemblyReference)
{
- return assemblyResolver.Resolve(assemblyReference);
+ return context.ResolveAssemblyReference(assemblyReference);
}
protected override string ResolvePath(string path)
@@ -63,12 +52,12 @@ namespace ICSharpCode.TextTemplating
string ExpandPath(string path)
{
- return templatingVariables.ExpandVariables(path);
+ return context.ExpandTemplateVariables(path);
}
object IServiceProvider.GetService(Type serviceType)
{
- return serviceProvider.GetService(serviceType);
+ return context.GetService(serviceType);
}
}
}
diff --git a/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHostContext.cs b/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHostContext.cs
new file mode 100644
index 0000000000..eb1b5fd849
--- /dev/null
+++ b/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHostContext.cs
@@ -0,0 +1,57 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using ICSharpCode.SharpDevelop.Project;
+
+namespace ICSharpCode.TextTemplating
+{
+ public class TextTemplatingHostContext
+ {
+ ITextTemplatingAppDomainFactory appDomainFactory;
+ ITextTemplatingAssemblyResolver assemblyResolver;
+ ITextTemplatingVariables templatingVariables;
+ IServiceProvider serviceProvider;
+
+ public TextTemplatingHostContext(IProject project)
+ : this(
+ new TextTemplatingAppDomainFactory(),
+ new TextTemplatingAssemblyResolver(project),
+ new TextTemplatingVariables(),
+ new TextTemplatingServiceProvider())
+ {
+ }
+
+ public TextTemplatingHostContext(
+ ITextTemplatingAppDomainFactory appDomainFactory,
+ ITextTemplatingAssemblyResolver assemblyResolver,
+ ITextTemplatingVariables templatingVariables,
+ IServiceProvider serviceProvider)
+ {
+ this.appDomainFactory = appDomainFactory;
+ this.assemblyResolver = assemblyResolver;
+ this.templatingVariables = templatingVariables;
+ this.serviceProvider = serviceProvider;
+ }
+
+ public object GetService(Type serviceType)
+ {
+ return serviceProvider.GetService(serviceType);
+ }
+
+ public string ExpandTemplateVariables(string name)
+ {
+ return templatingVariables.ExpandVariables(name);
+ }
+
+ public ITextTemplatingAppDomain CreateTextTemplatingAppDomain(string applicationBase)
+ {
+ return appDomainFactory.CreateTextTemplatingAppDomain(applicationBase);
+ }
+
+ public string ResolveAssemblyReference(string assemblyReference)
+ {
+ return assemblyResolver.Resolve(assemblyReference);
+ }
+ }
+}
diff --git a/src/AddIns/Misc/TextTemplating/Project/TextTemplating.csproj b/src/AddIns/Misc/TextTemplating/Project/TextTemplating.csproj
index 02116dbbdf..4bca22cf27 100644
--- a/src/AddIns/Misc/TextTemplating/Project/TextTemplating.csproj
+++ b/src/AddIns/Misc/TextTemplating/Project/TextTemplating.csproj
@@ -81,6 +81,7 @@
+
diff --git a/src/AddIns/Misc/TextTemplating/Test/Helpers/TestableTextTemplatingHost.cs b/src/AddIns/Misc/TextTemplating/Test/Helpers/TestableTextTemplatingHost.cs
index 8e22d5d10a..bf4cd0ada0 100644
--- a/src/AddIns/Misc/TextTemplating/Test/Helpers/TestableTextTemplatingHost.cs
+++ b/src/AddIns/Misc/TextTemplating/Test/Helpers/TestableTextTemplatingHost.cs
@@ -12,6 +12,7 @@ namespace TextTemplating.Tests.Helpers
public FakeTextTemplatingAssemblyResolver FakeTextTemplatingAssemblyResolver;
public FakeTextTemplatingVariables FakeTextTemplatingVariables;
public FakeServiceProvider FakeServiceProvider;
+ public TextTemplatingHostContext HostContext;
public TestableTextTemplatingHost(string applicationBase)
: this(
@@ -29,13 +30,20 @@ namespace TextTemplating.Tests.Helpers
FakeTextTemplatingVariables textTemplatingVariables,
FakeServiceProvider fakeServiceProvider,
string applicationBase)
- : base(appDomainFactory, assemblyResolver, textTemplatingVariables, fakeServiceProvider, applicationBase)
+ : this(
+ new TextTemplatingHostContext(appDomainFactory, assemblyResolver, textTemplatingVariables, fakeServiceProvider),
+ applicationBase)
{
FakeTextTemplatingAppDomainFactory = appDomainFactory;
FakeTextTemplatingAssemblyResolver = assemblyResolver;
FakeTextTemplatingVariables = textTemplatingVariables;
FakeServiceProvider = fakeServiceProvider;
}
+
+ public TestableTextTemplatingHost(TextTemplatingHostContext context, string applicationBase)
+ : base(context, applicationBase)
+ {
+ }
public string CallResolveAssemblyReference(string assemblyReference)
{