Skip to content
This repository was archived by the owner on Apr 6, 2024. It is now read-only.

Commit e1bc183

Browse files
authored
Merge pull request #36 from cake-contrib/feature/gh-33
(GH-33) Make Json.NET available in Razor templates
2 parents 8423385 + eef993e commit e1bc183

File tree

4 files changed

+25
-1
lines changed

4 files changed

+25
-1
lines changed

src/Cake.Issues.Reporting.Generic.Tests/Cake.Issues.Reporting.Generic.Tests.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@
5252
<Reference Include="Cake.Testing, Version=0.28.0.0, Culture=neutral, processorArchitecture=MSIL">
5353
<HintPath>..\packages\Cake.Testing.0.28.0\lib\net46\Cake.Testing.dll</HintPath>
5454
</Reference>
55+
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
56+
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
57+
</Reference>
5558
<Reference Include="Shouldly, Version=3.0.0.0, Culture=neutral, PublicKeyToken=6042cbcb05cbc941, processorArchitecture=MSIL">
5659
<HintPath>..\packages\Shouldly.3.0.0\lib\net451\Shouldly.dll</HintPath>
5760
</Reference>

src/Cake.Issues.Reporting.Generic.Tests/GenericIssueReportFixture.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,27 @@
88
internal class GenericIssueReportFixture
99
{
1010
public GenericIssueReportFixture(GenericIssueReportTemplate template)
11+
: this()
1112
{
1213
this.Log = new FakeLog { Verbosity = Verbosity.Normal };
1314
this.GenericIssueReportFormatSettings =
1415
GenericIssueReportFormatSettings.FromEmbeddedTemplate(template);
1516
}
1617

1718
public GenericIssueReportFixture(string templateContent)
19+
: this()
1820
{
1921
this.Log = new FakeLog { Verbosity = Verbosity.Normal };
2022
this.GenericIssueReportFormatSettings =
2123
GenericIssueReportFormatSettings.FromContent(templateContent);
2224
}
2325

26+
private GenericIssueReportFixture()
27+
{
28+
// Make sure Json.NET assembly is loaded as it is the case while running from Cake.
29+
var temp = typeof(Newtonsoft.Json.JsonSerializer);
30+
}
31+
2432
public FakeLog Log { get; set; }
2533

2634
public GenericIssueReportFormatSettings GenericIssueReportFormatSettings { get; set; }

src/Cake.Issues.Reporting.Generic.Tests/packages.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<package id="Cake.Issues.Reporting" version="0.3.0" targetFramework="net461" />
66
<package id="Cake.Issues.Testing" version="0.3.0" targetFramework="net461" />
77
<package id="Cake.Testing" version="0.28.0" targetFramework="net461" />
8+
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net461" />
89
<package id="Shouldly" version="3.0.0" targetFramework="net46" />
910
<package id="StyleCop.Analyzers" version="1.0.2" targetFramework="net46" developmentDependency="true" />
1011
<package id="xunit" version="2.3.1" targetFramework="net46" />

src/Cake.Issues.Reporting.Generic/RazorEngineReferenceResolver.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
namespace Cake.Issues.Reporting.Generic
22
{
3+
using System;
34
using System.Collections.Generic;
45
using System.IO;
56
using System.Linq;
@@ -27,14 +28,25 @@ public IEnumerable<CompilerReference> GetReferences(
2728
yield return CompilerReference.From(this.FindLoaded(loadedAssemblies, "System.dll"));
2829
yield return CompilerReference.From(this.FindLoaded(loadedAssemblies, "System.Core.dll"));
2930
yield return CompilerReference.From(this.FindLoaded(loadedAssemblies, "netstandard.dll"));
31+
yield return CompilerReference.From(this.FindLoaded(loadedAssemblies, "Newtonsoft.Json.dll"));
3032
yield return CompilerReference.From(this.FindLoaded(loadedAssemblies, "Cake.Core.dll"));
3133
yield return CompilerReference.From(this.FindLoaded(loadedAssemblies, "Cake.Issues.dll"));
3234
yield return CompilerReference.From(typeof(RazorEngine.Engine).Assembly);
3335
}
3436

3537
private string FindLoaded(IEnumerable<string> refs, string find)
3638
{
37-
return refs.First(r => r.EndsWith(Path.DirectorySeparatorChar + find));
39+
var result = refs.FirstOrDefault(r => r.EndsWith(Path.DirectorySeparatorChar + find));
40+
41+
if (result == null)
42+
{
43+
throw new InvalidOperationException(
44+
string.Format(
45+
"Could not find loaded assembly {0}.",
46+
find));
47+
}
48+
49+
return result;
3850
}
3951
}
4052
}

0 commit comments

Comments
 (0)