From eb617281075dfe7188aaf96657e8d40052ea43b5 Mon Sep 17 00:00:00 2001 From: David Fowler Date: Thu, 6 Mar 2014 22:11:10 -0800 Subject: [PATCH] Fix webfx compile error. - Assembly.Load(byte[]) has been removed - Added IAssemblyLoaderEngine type that flows from the host --- .../Compilation/RoslynCompilationService.cs | 5 ++++- .../Services/IAssemblyLoaderEngine.cs | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 src/Microsoft.AspNet.Mvc.Razor/Services/IAssemblyLoaderEngine.cs diff --git a/src/Microsoft.AspNet.Mvc.Razor/Compilation/RoslynCompilationService.cs b/src/Microsoft.AspNet.Mvc.Razor/Compilation/RoslynCompilationService.cs index 203b105168..977bf5501e 100644 --- a/src/Microsoft.AspNet.Mvc.Razor/Compilation/RoslynCompilationService.cs +++ b/src/Microsoft.AspNet.Mvc.Razor/Compilation/RoslynCompilationService.cs @@ -14,12 +14,15 @@ namespace Microsoft.AspNet.Mvc.Razor.Compilation { private readonly IMetadataReferenceProvider _provider; private readonly IApplicationEnvironment _environment; + private readonly IAssemblyLoaderEngine _loader; public RoslynCompilationService(IServiceProvider serviceProvider) { // TODO: Get these services via ctor injection when we get container chaining implemented _provider = (IMetadataReferenceProvider)serviceProvider.GetService(typeof(IMetadataReferenceProvider)); _environment = (IApplicationEnvironment)serviceProvider.GetService(typeof(IApplicationEnvironment)); + _loader = (IAssemblyLoaderEngine)serviceProvider.GetService(typeof(IAssemblyLoaderEngine)); + } public Task Compile(string content) @@ -57,7 +60,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Compilation } // TODO: Flow loader to this code so we're not using Load() directly - var type = Assembly.Load(ms.ToArray()) + var type = _loader.LoadBytes(ms.ToArray(), null) .GetExportedTypes() .First(); diff --git a/src/Microsoft.AspNet.Mvc.Razor/Services/IAssemblyLoaderEngine.cs b/src/Microsoft.AspNet.Mvc.Razor/Services/IAssemblyLoaderEngine.cs new file mode 100644 index 0000000000..2432bff62a --- /dev/null +++ b/src/Microsoft.AspNet.Mvc.Razor/Services/IAssemblyLoaderEngine.cs @@ -0,0 +1,12 @@ +using System.Reflection; +using Microsoft.Net.Runtime.Services; + +namespace Microsoft.Net.Runtime +{ + [AssemblyNeutral] + public interface IAssemblyLoaderEngine + { + Assembly LoadFile(string path); + Assembly LoadBytes(byte[] assemblyBytes, byte[] pdbBytes); + } +}