Skip to content

Commit 6405ea5

Browse files
add save pdbtofile
1 parent f2da550 commit 6405ea5

File tree

3 files changed

+45
-21
lines changed

3 files changed

+45
-21
lines changed
Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
1-
using System;
2-
using System.IO;
3-
using System.Threading.Tasks;
4-
5-
namespace RazorEngineCore
6-
{
7-
public interface IRazorEngineCompiledTemplate<out T> where T : IRazorEngineTemplate
8-
{
9-
void SaveToStream(Stream stream);
10-
Task SaveToStreamAsync(Stream stream);
11-
void SaveToFile(string fileName);
12-
Task SaveToFileAsync(string fileName);
13-
string Run(Action<T> initializer);
14-
Task<string> RunAsync(Action<T> initializer);
15-
}
1+
using System;
2+
using System.IO;
3+
using System.Threading.Tasks;
4+
5+
namespace RazorEngineCore
6+
{
7+
public interface IRazorEngineCompiledTemplate<out T> where T : IRazorEngineTemplate
8+
{
9+
void SaveToStream(Stream stream);
10+
Task SaveToStreamAsync(Stream stream);
11+
void SaveToFile(string fileName);
12+
Task SaveToFileAsync(string fileName);
13+
void SavePdbToFile(string filename);
14+
Task SavePdbToFileAsync(string fileName);
15+
string Run(Action<T> initializer);
16+
Task<string> RunAsync(Action<T> initializer);
17+
}
1618
}

RazorEngineCore/RazorEngine.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace RazorEngineCore
1414
{
1515
public class RazorEngine : IRazorEngine
1616
{
17-
public IRazorEngineCompiledTemplate<T> Compile<T>(string content, Action<IRazorEngineCompilationOptionsBuilder> builderAction = null, bool addPdb = false) where T : IRazorEngineTemplate
17+
public IRazorEngineCompiledTemplate<T> Compile<T>(string content, Action<IRazorEngineCompilationOptionsBuilder> builderAction = null) where T : IRazorEngineTemplate
1818
{
1919
IRazorEngineCompilationOptionsBuilder compilationOptionsBuilder = new RazorEngineCompilationOptionsBuilder();
2020
compilationOptionsBuilder.AddAssemblyReference(typeof(T).Assembly);
@@ -38,7 +38,7 @@ public Task<IRazorEngineCompiledTemplate<T>> CompileAsync<T>(string content, Act
3838
return Task.Factory.StartNew(() => this.Compile<T>(content: content, builderAction: builderAction));
3939
}
4040

41-
public IRazorEngineCompiledTemplate Compile(string content, Action<IRazorEngineCompilationOptionsBuilder> builderAction = null, bool addPdb = false)
41+
public IRazorEngineCompiledTemplate Compile(string content, Action<IRazorEngineCompilationOptionsBuilder> builderAction = null)
4242
{
4343
IRazorEngineCompilationOptionsBuilder compilationOptionsBuilder = new RazorEngineCompilationOptionsBuilder();
4444
compilationOptionsBuilder.Inherits(typeof(RazorEngineTemplateBase));
@@ -66,12 +66,13 @@ protected virtual CompiledStreams CreateAndCompileToStream(string templateSource
6666
{
6767
templateSource = this.WriteDirectives(templateSource, options);
6868
string projectPath = @".";
69-
string pdbfileName = Path.GetRandomFileName() + ".cshtml";
69+
string fileName = string.IsNullOrWhiteSpace(options.TemplateFilename) ? Path.GetRandomFileName() + ".cshtml" : options.TemplateFilename;
70+
7071
if (options.GeneratePdbStream)
7172
{
7273
projectPath = Path.GetTempPath();
7374
Directory.CreateDirectory(projectPath);
74-
File.WriteAllText(Path.Combine(projectPath, pdbfileName), templateSource);
75+
File.WriteAllText(Path.Combine(projectPath, fileName), templateSource);
7576
}
7677

7778
RazorProjectEngine engine = RazorProjectEngine.Create(
@@ -82,7 +83,6 @@ protected virtual CompiledStreams CreateAndCompileToStream(string templateSource
8283
builder.SetNamespace(options.TemplateNamespace);
8384
});
8485

85-
string fileName = string.IsNullOrWhiteSpace(options.TemplateFilename) ? Path.GetRandomFileName() : options.TemplateFilename;
8686

8787
RazorSourceDocument document = RazorSourceDocument.Create(templateSource, fileName);
8888

RazorEngineCore/RazorEngineCompiledTemplateT.cs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ namespace RazorEngineCore
88
public class RazorEngineCompiledTemplate<T> : IRazorEngineCompiledTemplate<T> where T : IRazorEngineTemplate
99
{
1010
private readonly MemoryStream assemblyByteCode;
11+
private readonly MemoryStream pdbByteCode;
1112
private readonly Type templateType;
1213

1314
internal RazorEngineCompiledTemplate(MemoryStream assemblyByteCode, string templateNamespace)
@@ -20,7 +21,8 @@ internal RazorEngineCompiledTemplate(MemoryStream assemblyByteCode, string templ
2021
internal RazorEngineCompiledTemplate(MemoryStream assemblyByteCode, string templateNamespace, MemoryStream pdbByteCode)
2122
{
2223
this.assemblyByteCode = assemblyByteCode;
23-
24+
this.pdbByteCode = pdbByteCode;
25+
2426
Assembly assembly = Assembly.Load(assemblyByteCode.ToArray(), pdbByteCode.ToArray());
2527
this.templateType = assembly.GetType(templateNamespace + ".Template");
2628
}
@@ -91,6 +93,24 @@ public Task SaveToFileAsync(string fileName)
9193
}
9294
}
9395

96+
public void SavePdbToFile(string fileName)
97+
{
98+
this.SavePdbToFileAsync(fileName).GetAwaiter().GetResult();
99+
}
100+
public Task SavePdbToFileAsync(string fileName)
101+
{
102+
using (FileStream fileStream = new FileStream(
103+
path: fileName,
104+
mode: FileMode.OpenOrCreate,
105+
access: FileAccess.Write,
106+
share: FileShare.None,
107+
bufferSize: 4096,
108+
useAsync: true))
109+
{
110+
return pdbByteCode.CopyToAsync(fileStream);
111+
}
112+
}
113+
94114
public string Run(Action<T> initializer)
95115
{
96116
return this.RunAsync(initializer).GetAwaiter().GetResult();
@@ -105,5 +125,7 @@ public async Task<string> RunAsync(Action<T> initializer)
105125

106126
return await instance.ResultAsync();
107127
}
128+
129+
108130
}
109131
}

0 commit comments

Comments
 (0)