Fix dynamic compilation issue in command line host

--HG--
branch : dev
This commit is contained in:
Renaud Paquay
2010-07-02 21:08:50 -07:00
parent e7aa444a95
commit b0842c5529
4 changed files with 44 additions and 13 deletions

View File

@@ -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<string, IStandaloneEnvironment>();
var host = _hostContainer.Resolve<IOrchardHost>();
@@ -138,6 +138,11 @@ namespace Orchard.Commands {
}
protected void ContainerRegistrations(ContainerBuilder builder) {
MvcSingletons(builder);
builder.RegisterType<CommandHostEnvironment>().As<IHostEnvironment>();
}
protected void MvcSingletons(ContainerBuilder builder) {
builder.RegisterInstance(ControllerBuilder.Current);
builder.RegisterInstance(RouteTable.Routes);

View File

@@ -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
}
}
}

View File

@@ -115,18 +115,7 @@ namespace Orchard.Environment {
.As<IContainer>()
.InstancePerMatchingLifetimeScope("shell");
return builder.Build();
}
private static void RegisterVolatileProvider<TRegister, TService>(ContainerBuilder builder) where TService : IVolatileProvider {
builder.RegisterType<TRegister>()
.As<TService>()
.As<IVolatileProvider>()
.SingleInstance();
}
public static IOrchardHost CreateHost(Action<ContainerBuilder> 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<TRegister, TService>(ContainerBuilder builder) where TService : IVolatileProvider {
builder.RegisterType<TRegister>()
.As<TService>()
.As<IVolatileProvider>()
.SingleInstance();
}
public static IOrchardHost CreateHost(Action<ContainerBuilder> registrations) {
var container = CreateHostContainer(registrations);
return container.Resolve<IOrchardHost>();
}
}

View File

@@ -133,6 +133,7 @@
<Compile Include="Caching\Signals.cs" />
<Compile Include="Collections\IPageOfItems.cs" />
<Compile Include="Collections\PageOfItems.cs" />
<Compile Include="Commands\CommandHostEnvironment.cs" />
<Compile Include="ContentManagement\Aspects\ICommonAspect.cs">
<SubType>Code</SubType>
</Compile>