diff --git a/Libraries/Westwind.RazorHosting.dll b/Libraries/Westwind.RazorHosting.dll index 0a54f78..ba8c8d2 100644 Binary files a/Libraries/Westwind.RazorHosting.dll and b/Libraries/Westwind.RazorHosting.dll differ diff --git a/Libraries/Westwind.RazorHosting.xml b/Libraries/Westwind.RazorHosting.xml index f4e400e..bab057f 100644 --- a/Libraries/Westwind.RazorHosting.xml +++ b/Libraries/Westwind.RazorHosting.xml @@ -394,6 +394,11 @@ Buffer size for streamed template output when using filenames + + + Specifies %Temp% folder for compiled files + + Factory that creates a RazorHost instance in a remote diff --git a/Westwind.RazorHosting/Core/RazorEngine.cs b/Westwind.RazorHosting/Core/RazorEngine.cs index 4b1aa52..da752ad 100644 --- a/Westwind.RazorHosting/Core/RazorEngine.cs +++ b/Westwind.RazorHosting/Core/RazorEngine.cs @@ -489,13 +489,7 @@ public string CompileTemplate( LastGeneratedCode = writer.ToString(); } - var compilerParameters = new CompilerParameters(ReferencedAssemblies.ToArray()); - //compilerParameters.IncludeDebugInformation = true; - compilerParameters.GenerateInMemory = Configuration.CompileToMemory; - - - if (!Configuration.CompileToMemory) - compilerParameters.OutputAssembly = Path.Combine(Configuration.TempAssemblyPath, "_" + Guid.NewGuid().ToString("n") + ".dll"); + var compilerParameters = CreateCompilerParameters(); CompilerResults compilerResults = codeProvider.CompileAssemblyFromDom(compilerParameters, razorResults.GeneratedCode); if (compilerResults.Errors.Count > 0) @@ -735,6 +729,22 @@ public void SetError() } public Exception LastException { get; set; } + + + protected virtual CompilerParameters CreateCompilerParameters() + { + var compilerParameters = new CompilerParameters(ReferencedAssemblies.ToArray()); + //compilerParameters.IncludeDebugInformation = true; + compilerParameters.GenerateInMemory = Configuration.CompileToMemory; + + if (!Configuration.CompileToMemory) + compilerParameters.OutputAssembly = Path.Combine(Configuration.TempAssemblyPath, "_" + Guid.NewGuid().ToString("n") + ".dll"); + + if (Configuration.TempFiles != null) + compilerParameters.TempFiles = Configuration.TempFiles; + + return compilerParameters; + } } public enum CodeProvider diff --git a/Westwind.RazorHosting/Core/RazorEngineConfiguration.cs b/Westwind.RazorHosting/Core/RazorEngineConfiguration.cs index 29988c2..4260a44 100644 --- a/Westwind.RazorHosting/Core/RazorEngineConfiguration.cs +++ b/Westwind.RazorHosting/Core/RazorEngineConfiguration.cs @@ -34,6 +34,7 @@ using System; using System.Text; using System.IO; +using System.CodeDom.Compiler; namespace Westwind.RazorHosting { @@ -88,8 +89,10 @@ public int StreamBufferSize } private int _StreamBufferSize = 2048; - - + /// + /// Specifies %Temp% folder for compiling files + /// + public TempFileCollection TempFiles { get; set; } } }