From b0842c552988dd5e34a788c6cbf494aaa274ca7b Mon Sep 17 00:00:00 2001 From: Renaud Paquay Date: Fri, 2 Jul 2010 21:08:50 -0700 Subject: [PATCH] Fix dynamic compilation issue in command line host --HG-- branch : dev --- src/Orchard/Commands/CommandHostAgent.cs | 7 ++++- .../Commands/CommandHostEnvironment.cs | 23 ++++++++++++++++ src/Orchard/Environment/OrchardStarter.cs | 26 ++++++++++--------- src/Orchard/Orchard.Framework.csproj | 1 + 4 files changed, 44 insertions(+), 13 deletions(-) create mode 100644 src/Orchard/Commands/CommandHostEnvironment.cs diff --git a/src/Orchard/Commands/CommandHostAgent.cs b/src/Orchard/Commands/CommandHostAgent.cs index 0884f4ff4..1e645502e 100644 --- a/src/Orchard/Commands/CommandHostAgent.cs +++ b/src/Orchard/Commands/CommandHostAgent.cs @@ -42,7 +42,7 @@ namespace Orchard.Commands { public int StartHost(TextReader input, TextWriter output) { try { - _hostContainer = OrchardStarter.CreateHostContainer(MvcSingletons); + _hostContainer = OrchardStarter.CreateHostContainer(ContainerRegistrations); _tenants = new Dictionary(); var host = _hostContainer.Resolve(); @@ -138,6 +138,11 @@ namespace Orchard.Commands { } + protected void ContainerRegistrations(ContainerBuilder builder) { + MvcSingletons(builder); + builder.RegisterType().As(); + } + protected void MvcSingletons(ContainerBuilder builder) { builder.RegisterInstance(ControllerBuilder.Current); builder.RegisterInstance(RouteTable.Routes); diff --git a/src/Orchard/Commands/CommandHostEnvironment.cs b/src/Orchard/Commands/CommandHostEnvironment.cs new file mode 100644 index 000000000..a44e69bbc --- /dev/null +++ b/src/Orchard/Commands/CommandHostEnvironment.cs @@ -0,0 +1,23 @@ +using System; +using System.Web.Hosting; +using Orchard.Environment; + +namespace Orchard.Commands { + public class CommandHostEnvironment : IHostEnvironment { + public bool IsFullTrust { + get { return AppDomain.CurrentDomain.IsFullyTrusted; } + } + + public string MapPath(string virtualPath) { + return HostingEnvironment.MapPath(virtualPath); + } + + public void RestartAppDomain() { + //Don't restart AppDomain in command line environment + } + + public void ResetSiteCompilation() { + //Don't restart AppDomain in command line environment + } + } +} \ No newline at end of file diff --git a/src/Orchard/Environment/OrchardStarter.cs b/src/Orchard/Environment/OrchardStarter.cs index e339e5361..c864ef091 100644 --- a/src/Orchard/Environment/OrchardStarter.cs +++ b/src/Orchard/Environment/OrchardStarter.cs @@ -115,18 +115,7 @@ namespace Orchard.Environment { .As() .InstancePerMatchingLifetimeScope("shell"); - return builder.Build(); - } - - private static void RegisterVolatileProvider(ContainerBuilder builder) where TService : IVolatileProvider { - builder.RegisterType() - .As() - .As() - .SingleInstance(); - } - - public static IOrchardHost CreateHost(Action registrations) { - var container = CreateHostContainer(registrations); + var container = builder.Build(); // // Register Virtual Path Providers @@ -138,6 +127,19 @@ namespace Orchard.Environment { } OrchardHostContainerRegistry.RegisterHostContainer(new DefaultOrchardHostContainer(container)); + + return container; + } + + private static void RegisterVolatileProvider(ContainerBuilder builder) where TService : IVolatileProvider { + builder.RegisterType() + .As() + .As() + .SingleInstance(); + } + + public static IOrchardHost CreateHost(Action registrations) { + var container = CreateHostContainer(registrations); return container.Resolve(); } } diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj index cd6d7f761..a4a40d938 100644 --- a/src/Orchard/Orchard.Framework.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -133,6 +133,7 @@ + Code