Adding mvc3/razor placeholder support

Unofficial bits - do not use.
Integrates with mvc3 CSL hooks
Adds razor view engine to default configuration

--HG--
branch : mvc3p1
This commit is contained in:
Louis DeJardin
2010-08-23 13:10:12 -07:00
parent 585cd56c69
commit 4a84a0d591
33 changed files with 990 additions and 858 deletions

View File

@@ -39,7 +39,7 @@ namespace Orchard.Tests.Mvc.ModelBinders {
ValueProvider = input.ToValueProvider()
};
var binder = new KeyedListModelBinder<Foo>(binders, providers, foo => foo.Name);
var binder = new KeyedListModelBinder<Foo>(binders, foo => foo.Name);
var result = (IList<Foo>)binder.BindModel(controllerContext, bindingContext);

View File

@@ -51,7 +51,7 @@
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Web" />
<Reference Include="System.Web.Abstractions" />
<Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Reference Include="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\aspnetmvc\System.Web.Mvc.dll</HintPath>
</Reference>

View File

@@ -71,7 +71,7 @@ namespace Orchard.Core.Routable.Drivers {
}
protected override DriverResult Editor(RoutePart part, IUpdateModel updater) {
var model = new RoutableEditorViewModel();
updater.TryUpdateModel(model, Prefix, null, null);
part.Title = model.Title;

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
@@ -22,17 +23,10 @@ namespace Orchard.Web {
}
protected void Application_Start() {
// This is temporary until MVC3 is officially released.
// We want to avoid running against an outdated preview installed in the GAC
CheckMvcVersion(
new Version("3.0.10714.0")/*MVC3 Preview 1 file version #*/);
RegisterRoutes(RouteTable.Routes);
_host = OrchardStarter.CreateHost(MvcSingletons);
_host.Initialize();
//TODO: what's the failed initialization story - IoC failure in app start can leave you with a zombie appdomain
}
protected void Application_BeginRequest() {
@@ -45,58 +39,11 @@ namespace Orchard.Web {
_host.EndRequest();
}
private void CheckMvcVersion(params Version[] allowedVersions) {
Assembly loadedMvcAssembly = typeof(System.Web.Mvc.Controller).Assembly;
Version loadedMvcVersion = ReadAssemblyFileVersion(loadedMvcAssembly);
if (allowedVersions.All(allowed => loadedMvcVersion != allowed)) {
string message;
if (loadedMvcAssembly.GlobalAssemblyCache) {
message = string.Format(
"Orchard has been deployed with a version of {0} that has a different file version ({1}) " +
"than the version installed in the GAC ({2}).\r\n" +
"This implies that Orchard will not be able to run properly in this machine configuration.\r\n" +
"Please un-install MVC from the GAC or install a more recent version.",
loadedMvcAssembly.GetName().Name,
allowedVersions.First(),
loadedMvcVersion);
}
else {
message = string.Format(
"Orchard has been configured to run with a file version {1} of \"{0}\" " +
"but the version deployed with the application is {2}.\r\n" +
"This probably implies that Orchard is deployed with a newer version " +
"and the source code hasn't been updated accordingly.\r\n" +
"Update the Orchard.Web application source code (look for \"CheckMvcVersion\") to " +
"specify the correct file version number.\r\n",
loadedMvcAssembly.GetName().Name,
allowedVersions.First(),
loadedMvcVersion);
}
throw new HttpException(500, message);
}
static void MvcSingletons(ContainerBuilder builder) {
builder.Register(ctx => RouteTable.Routes).SingleInstance();
builder.Register(ctx => ModelBinders.Binders).SingleInstance();
builder.Register(ctx => ViewEngines.Engines).SingleInstance();
}
private Version ReadAssemblyFileVersion(Assembly assembly) {
object[] attributes = assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true);
if (attributes == null || attributes.Length != 1) {
string message = string.Format("Assembly \"{0}\" doesn't have a \"{1}\" attribute",
assembly.GetName().Name, typeof(AssemblyFileVersionAttribute).FullName);
throw new FileLoadException(message);
}
var attribute = (AssemblyFileVersionAttribute)attributes[0];
return new Version(attribute.Version);
}
protected void MvcSingletons(ContainerBuilder builder) {
builder.RegisterInstance(ControllerBuilder.Current);
builder.RegisterInstance(RouteTable.Routes);
builder.RegisterInstance(ModelBinders.Binders);
builder.RegisterInstance(ModelMetadataProviders.Current);
builder.RegisterInstance(ViewEngines.Engines);
}
}
}

View File

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>
</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{DFD137A2-DDB5-4D22-BE0D-FA9AD4C8B059}</ProjectGuid>
<ProjectTypeGuids>{F85E285D-A4E0-4152-9332-AB1D724D3325};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Futures.Modules.Packaging</RootNamespace>
<AssemblyName>Futures.Modules.Packaging</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CSharp" />
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Web.DynamicData" />
<Reference Include="System.Web.Entity" />
<Reference Include="System.Web.ApplicationServices" />
<Reference Include="System.ComponentModel.DataAnnotations">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data.DataSetExtensions">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Web.Extensions">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Web.Abstractions" />
<Reference Include="System.Web.Routing" />
<Reference Include="System.Xml" />
<Reference Include="System.Configuration" />
<Reference Include="System.Web.Services" />
<Reference Include="System.EnterpriseServices" />
</ItemGroup>
<ItemGroup>
<Compile Include="AdminMenu.cs" />
<Compile Include="Commands\PackagingCommands.cs" />
<Compile Include="Controllers\DownloadStreamResult.cs" />
<Compile Include="Controllers\PackagingController.cs" />
<Compile Include="ViewModels\PackagingHarvestViewModel.cs" />
<Compile Include="ViewModels\PackagingModulesViewModel.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ViewModels\PackagingSourcesViewModel.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="Module.txt" />
<Content Include="Views\Packaging\Harvest.ascx" />
<Content Include="Views\Packaging\Modules.ascx" />
<Content Include="Views\Packaging\Sources.ascx" />
<Content Include="Views\Packaging\_Subnav.ascx" />
<Content Include="Views\Web.config" />
</ItemGroup>
<ItemGroup>
<Folder Include="Content\" />
<Folder Include="Models\" />
<Folder Include="Scripts\" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Orchard\Orchard.Framework.csproj">
<Project>{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}</Project>
<Name>Orchard.Framework</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="Web.config" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target> -->
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)" />
</Target>
<ProjectExtensions>
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<UseIIS>False</UseIIS>
<AutoAssignPort>True</AutoAssignPort>
<DevelopmentServerPort>40980</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>
</IISUrl>
<NTLMAuthentication>False</NTLMAuthentication>
<UseCustomServer>True</UseCustomServer>
<CustomServerUrl>http://orchard.codeplex.com</CustomServerUrl>
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
</Project>

View File

@@ -0,0 +1,171 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{4A9C04A6-0986-4A92-A610-5F59FF273FB9}</ProjectGuid>
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Orchard.Pages</RootNamespace>
<AssemblyName>Orchard.Pages</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>3.5</OldToolsVersion>
<UpgradeBackupLocation />
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.ComponentModel.DataAnnotations">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Web.ApplicationServices" />
<Reference Include="System.Web.DynamicData" />
<Reference Include="System.Web.Entity" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\lib\aspnetmvc\System.Web.Mvc.dll</HintPath>
</Reference>
<Reference Include="System.Drawing" />
<Reference Include="System.Web" />
<Reference Include="System.Web.Abstractions" />
<Reference Include="System.Web.Routing" />
<Reference Include="System.Xml" />
<Reference Include="System.Configuration" />
<Reference Include="System.Web.Services" />
<Reference Include="System.EnterpriseServices" />
<Reference Include="System.Web.Mobile" />
<Reference Include="System.Xml.Linq" />
<Reference Include="Yaml, Version=1.0.3370.39839, Culture=neutral, PublicKeyToken=187a3d240e44a135, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\lib\yaml\Yaml.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="AdminMenu.cs" />
<Compile Include="Controllers\AdminController.cs" />
<Compile Include="Controllers\PageController.cs" />
<Compile Include="DataMigrations\PageDataMigration.cs" />
<Compile Include="Drivers\PageDriver.cs" />
<Compile Include="Models\Page.cs" />
<Compile Include="Permissions.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Routes.cs" />
<Compile Include="Security\AuthorizationEventHandler.cs" />
<Compile Include="Services\IPageService.cs" />
<Compile Include="Routing\IPageSlugConstraint.cs" />
<Compile Include="Services\PageService.cs" />
<Compile Include="Services\PageHomePageProvider.cs" />
<Compile Include="Routing\PageSlugConstraint.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Routing\PageSlugConstraintUpdator.cs" />
<Compile Include="ViewModels\PageCreateViewModel.cs" />
<Compile Include="ViewModels\PageEditViewModel.cs" />
<Compile Include="ViewModels\PagesViewModel.cs" />
<Compile Include="ViewModels\PageViewModel.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="Styles\admin.css" />
<Content Include="Content\Admin\images\draft.gif" />
<Content Include="Content\Admin\images\offline.gif" />
<Content Include="Content\Admin\images\online.gif" />
<Content Include="Content\Admin\images\published.gif" />
<Content Include="Content\Admin\images\scheduled.gif" />
<Content Include="Content\Site.css" />
<Content Include="Module.txt" />
<Content Include="Views\DisplayTemplates\Items\Pages.Page.SummaryAdmin.ascx" />
<Content Include="Views\DisplayTemplates\Items\Pages.Page.ascx" />
<Content Include="Views\DisplayTemplates\Items\Pages.Page.Summary.ascx" />
<Content Include="Views\EditorTemplates\Items\Pages.Page.ascx" />
<Content Include="Views\Admin\Create.ascx" />
<Content Include="Views\Admin\Edit.ascx" />
<Content Include="Views\Page\Item.ascx" />
<Content Include="Views\Admin\List.aspx" />
<Content Include="Web.config" />
<Content Include="Views\Web.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Orchard\Orchard.Framework.csproj">
<Project>{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}</Project>
<Name>Orchard.Framework</Name>
</ProjectReference>
<ProjectReference Include="..\..\Core\Orchard.Core.csproj">
<Project>{9916839C-39FC-4CEB-A5AF-89CA7E87119F}</Project>
<Name>Orchard.Core</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Handlers\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target> -->
<!-- To enable MVC area subproject support, uncomment the following two lines:
<UsingTask TaskName="Microsoft.Web.Mvc.Build.CreateAreaManifest" AssemblyName="Microsoft.Web.Mvc.Build, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<UsingTask TaskName="Microsoft.Web.Mvc.Build.CopyAreaManifests" AssemblyName="Microsoft.Web.Mvc.Build, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
-->
<Target Name="AfterBuild" DependsOnTargets="AfterBuildCompiler">
<PropertyGroup>
<AreasManifestDir>$(ProjectDir)\..\Manifests</AreasManifestDir>
</PropertyGroup>
<!-- If this is an area child project, uncomment the following line:
<CreateAreaManifest AreaName="$(AssemblyName)" AreaType="Child" AreaPath="$(ProjectDir)" ManifestPath="$(AreasManifestDir)" ContentFiles="@(Content)" />
-->
<!-- If this is an area parent project, uncomment the following lines:
<CreateAreaManifest AreaName="$(AssemblyName)" AreaType="Parent" AreaPath="$(ProjectDir)" ManifestPath="$(AreasManifestDir)" ContentFiles="@(Content)" />
<CopyAreaManifests ManifestPath="$(AreasManifestDir)" CrossCopy="false" RenameViews="true" />
-->
</Target>
<Target Name="AfterBuildCompiler" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" />
</Target>
<ProjectExtensions>
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<UseIIS>False</UseIIS>
<AutoAssignPort>True</AutoAssignPort>
<DevelopmentServerPort>1057</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>
</IISUrl>
<NTLMAuthentication>False</NTLMAuthentication>
<UseCustomServer>True</UseCustomServer>
<CustomServerUrl>http://orchard.codeplex.com</CustomServerUrl>
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
</Project>

View File

@@ -82,7 +82,9 @@
<Compile Include="ViewModels\SetupViewModel.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\Setup\Index.ascx" />
<None Include="Views\Setup\Index.cshtml">
<SubType>Designer</SubType>
</None>
<Content Include="Web.config" />
</ItemGroup>
<ItemGroup>

View File

@@ -18,6 +18,7 @@ using Orchard.Mvc.Filters;
using Orchard.Mvc.ModelBinders;
using Orchard.Mvc.Routes;
using Orchard.Mvc.ViewEngines;
using Orchard.Mvc.ViewEngines.Razor;
using Orchard.Mvc.ViewEngines.WebForms;
using Orchard.Settings;
using Orchard.Setup.Commands;
@@ -37,6 +38,7 @@ namespace Orchard.Setup {
builder.RegisterType<RoutePublisher>().As<IRoutePublisher>().InstancePerLifetimeScope();
builder.RegisterType<ModelBinderPublisher>().As<IModelBinderPublisher>().InstancePerLifetimeScope();
builder.RegisterType<WebFormViewEngineProvider>().As<IViewEngineProvider>().InstancePerLifetimeScope();
builder.RegisterType<RazorViewEngineProvider>().As<IViewEngineProvider>().InstancePerLifetimeScope();
builder.RegisterType<ViewEngineFilter>().As<IFilterProvider>().InstancePerLifetimeScope();
builder.RegisterType<ThemeFilter>().As<IFilterProvider>().InstancePerLifetimeScope();
builder.RegisterType<PageTitleBuilder>().As<IPageTitleBuilder>().InstancePerLifetimeScope();

View File

@@ -1,52 +0,0 @@
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<SetupViewModel>" %>
<%@ Import Namespace="Orchard.Setup.ViewModels"%>
<h1><%: Html.TitleForPage(T("Get Started").ToString())%></h1>
<%
using (Html.BeginFormAntiForgeryPost()) { %>
<%: Html.ValidationSummary() %>
<h2><%: T("Please answer a few questions to configure your site.")%></h2>
<fieldset class="site">
<div>
<label for="SiteName"><%: T("What is the name of your site?") %></label>
<%: Html.TextBoxFor(svm => svm.SiteName, new { autofocus = "autofocus" })%>
</div>
<div>
<label for="AdminUsername"><%: T("Choose a user name:") %></label>
<%: Html.EditorFor(svm => svm.AdminUsername)%>
</div>
<div>
<label for="AdminPassword"><%: T("Choose a password:") %></label>
<%: Html.PasswordFor(svm => svm.AdminPassword) %>
</div>
<div>
<label for="ConfirmAdminPassword"><%: T("Confirm the password:") %></label>
<%: Html.PasswordFor(svm => svm.ConfirmPassword)%>
</div>
</fieldset><%
if (!Model.DatabaseIsPreconfigured) { %>
<fieldset class="data">
<legend><%: T("How would you like to store your data?") %></legend>
<%: Html.ValidationMessage("DatabaseOptions", "Unable to setup data storage") %>
<div>
<%: Html.RadioButtonFor(svm => svm.DatabaseOptions, true, new { id = "builtin" })%>
<label for="builtin" class="forcheckbox"><%: T("Use built-in data storage (SQL Server Compact)")%></label>
</div>
<div>
<%: Html.RadioButtonFor(svm => svm.DatabaseOptions, false, new { id = "sql" })%>
<label for="sql" class="forcheckbox"><%: T("Use an existing SQL Server (or SQL Express) database") %></label>
<div data-controllerid="sql">
<label for="DatabaseConnectionString"><%: T("Connection string") %></label>
<%: Html.EditorFor(svm => svm.DatabaseConnectionString)%>
<span class="hint"><%: T("Example:") %><br /><%: T("Data Source=sqlServerName;Initial Catalog=dbName;Persist Security Info=True;User ID=userName;Password=password") %></span>
</div>
<div data-controllerid="sql">
<label for="DatabaseTablePrefix"><%: T("Database Table Prefix") %></label>
<%: Html.EditorFor(svm => svm.DatabaseTablePrefix)%>
</div>
</div>
</fieldset><%
} %>
<fieldset>
<input class="button primaryAction" type="submit" value="<%: T("Finish Setup") %>" />
</fieldset><%
} %>

View File

@@ -0,0 +1,58 @@
<div>
@model Orchard.Setup.ViewModels.SetupViewModel
<h1>@Html.TitleForPage(T("Get Started").ToString())</h1>
@using (Html.BeginFormAntiForgeryPost()) {
<text>
@Html.ValidationSummary()
<h2>@T("Please answer a few questions to configure your site.")</h2>
<fieldset class="site">
<div>
<label for="SiteName">@T("What is the name of your site?")</label>
@Html.TextBoxFor(svm => svm.SiteName, new { autofocus = "autofocus" })
</div>
<div>
<label for="AdminUsername">@T("Choose a user name:")</label>
@Html.EditorFor(svm => svm.AdminUsername)
</div>
<div>
<label for="AdminPassword">@T("Choose a password:")</label>
@Html.PasswordFor(svm => svm.AdminPassword)
</div>
<div>
<label for="ConfirmAdminPassword">@T("Confirm the password:")</label>
@Html.PasswordFor(svm => svm.ConfirmPassword)
</div>
</fieldset>
@if (!Model.DatabaseIsPreconfigured) {
<fieldset class="data">
<legend>@T("How would you like to store your data?")</legend>
@Html.ValidationMessage("DatabaseOptions", "Unable to setup data storage")
<div>
@Html.RadioButtonFor(svm => svm.DatabaseOptions, true, new { id = "builtin" })
<label for="builtin" class="forcheckbox">@T("Use built-in data storage (SQL Server Compact)")</label>
</div>
<div>
@Html.RadioButtonFor(svm => svm.DatabaseOptions, false, new { id = "sql" })
<label for="sql" class="forcheckbox">@T("Use an existing SQL Server (or SQL Express) database")</label>
<div data-controllerid="sql">
<label for="DatabaseConnectionString">@T("Connection string")</label>
@Html.EditorFor(svm => svm.DatabaseConnectionString)
<span class="hint">
@T("Example:")<br />@T("Data Source=sqlServerName;Initial Catalog=dbName;Persist Security Info=True;User ID=userName;Password=password")
</span>
</div>
<div data-controllerid="sql">
<label for="DatabaseTablePrefix">@T("Database Table Prefix")</label>
@Html.EditorFor(svm => svm.DatabaseTablePrefix)
</div>
</div>
</fieldset>
}
<fieldset>
<input class="button primaryAction" type="submit" value='@T("Finish Setup")' />
</fieldset>
</text>
}
</div>

View File

@@ -6,7 +6,7 @@
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{50B779EA-EC00-4699-84C0-03B395C365D2}</ProjectGuid>
<ProjectTypeGuids>{e53f8fea-eae0-44a6-8774-ffd645390401};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Orchard.Web</RootNamespace>

View File

@@ -9,8 +9,31 @@
-->
<configuration>
<configSections>
<sectionGroup name="system.razor.web" type="System.Razor.Web.Configuration.SystemRazorWebSectionGroup, System.Razor.Web">
<section name="host" type="System.Razor.Web.Configuration.HostSection, System.Razor.Web" requirePermission="false" />
<section name="pages" type="System.Razor.Web.Configuration.RazorPagesSection, System.Razor.Web" requirePermission="false" />
</sectionGroup>
</configSections>
<appSettings/>
<system.diagnostics configSource="Config\Diagnostics.config"/>
<system.razor.web>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="Orchard.Mvc.ViewEngines.Razor.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Linq"/>
<add namespace="System.Collections.Generic"/>
<add namespace="Orchard.Mvc.Html"/>
</namespaces>
</pages>
</system.razor.web>
<!--
Set default transaction timeout to 30 minutes so that interactive debugging
is easier (default timeout is less than one minute)
@@ -76,8 +99,8 @@
<providers>
<clear/>
<add name="OrchardRoleProvider" type="Orchard.Security.Providers.OrchardRoleProvider, Orchard.Framework"/>
<add connectionStringName="ApplicationServices" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<!--<add connectionStringName="ApplicationServices" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>-->
<!--<add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>-->
</providers>
</roleManager>
<!--
@@ -123,7 +146,7 @@
<probing privatePath="App_Data/Dependencies"/>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="2.0.0.0" newVersion="3.0.0.0"/>
<bindingRedirect oldVersion="2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>

View File

@@ -79,144 +79,348 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.ArchiveLater", "Orc
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
CodeCoverage|Any CPU = CodeCoverage|Any CPU
Coverage|Any CPU = Coverage|Any CPU
Debug|Any CPU = Debug|Any CPU
FxCop|Any CPU = FxCop|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{50B779EA-EC00-4699-84C0-03B395C365D2}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{50B779EA-EC00-4699-84C0-03B395C365D2}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{50B779EA-EC00-4699-84C0-03B395C365D2}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{50B779EA-EC00-4699-84C0-03B395C365D2}.Coverage|Any CPU.Build.0 = Release|Any CPU
{50B779EA-EC00-4699-84C0-03B395C365D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{50B779EA-EC00-4699-84C0-03B395C365D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{50B779EA-EC00-4699-84C0-03B395C365D2}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{50B779EA-EC00-4699-84C0-03B395C365D2}.FxCop|Any CPU.Build.0 = Release|Any CPU
{50B779EA-EC00-4699-84C0-03B395C365D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{50B779EA-EC00-4699-84C0-03B395C365D2}.Release|Any CPU.Build.0 = Release|Any CPU
{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}.Coverage|Any CPU.Build.0 = Release|Any CPU
{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}.FxCop|Any CPU.Build.0 = Release|Any CPU
{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}.Release|Any CPU.Build.0 = Release|Any CPU
{ABC826D4-2FA1-4F2F-87DE-E6095F653810}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{ABC826D4-2FA1-4F2F-87DE-E6095F653810}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{ABC826D4-2FA1-4F2F-87DE-E6095F653810}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{ABC826D4-2FA1-4F2F-87DE-E6095F653810}.Coverage|Any CPU.Build.0 = Release|Any CPU
{ABC826D4-2FA1-4F2F-87DE-E6095F653810}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ABC826D4-2FA1-4F2F-87DE-E6095F653810}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ABC826D4-2FA1-4F2F-87DE-E6095F653810}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{ABC826D4-2FA1-4F2F-87DE-E6095F653810}.FxCop|Any CPU.Build.0 = Release|Any CPU
{ABC826D4-2FA1-4F2F-87DE-E6095F653810}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ABC826D4-2FA1-4F2F-87DE-E6095F653810}.Release|Any CPU.Build.0 = Release|Any CPU
{F112851D-B023-4746-B6B1-8D2E5AD8F7AA}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{F112851D-B023-4746-B6B1-8D2E5AD8F7AA}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{F112851D-B023-4746-B6B1-8D2E5AD8F7AA}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{F112851D-B023-4746-B6B1-8D2E5AD8F7AA}.Coverage|Any CPU.Build.0 = Release|Any CPU
{F112851D-B023-4746-B6B1-8D2E5AD8F7AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F112851D-B023-4746-B6B1-8D2E5AD8F7AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F112851D-B023-4746-B6B1-8D2E5AD8F7AA}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{F112851D-B023-4746-B6B1-8D2E5AD8F7AA}.FxCop|Any CPU.Build.0 = Release|Any CPU
{F112851D-B023-4746-B6B1-8D2E5AD8F7AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F112851D-B023-4746-B6B1-8D2E5AD8F7AA}.Release|Any CPU.Build.0 = Release|Any CPU
{954CA994-D204-468B-9D69-51F6AD3E1C29}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{954CA994-D204-468B-9D69-51F6AD3E1C29}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{954CA994-D204-468B-9D69-51F6AD3E1C29}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{954CA994-D204-468B-9D69-51F6AD3E1C29}.Coverage|Any CPU.Build.0 = Release|Any CPU
{954CA994-D204-468B-9D69-51F6AD3E1C29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{954CA994-D204-468B-9D69-51F6AD3E1C29}.Debug|Any CPU.Build.0 = Debug|Any CPU
{954CA994-D204-468B-9D69-51F6AD3E1C29}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{954CA994-D204-468B-9D69-51F6AD3E1C29}.FxCop|Any CPU.Build.0 = Release|Any CPU
{954CA994-D204-468B-9D69-51F6AD3E1C29}.Release|Any CPU.ActiveCfg = Release|Any CPU
{954CA994-D204-468B-9D69-51F6AD3E1C29}.Release|Any CPU.Build.0 = Release|Any CPU
{D9A7B330-CD22-4DA1-A95A-8DE1982AD8EB}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{D9A7B330-CD22-4DA1-A95A-8DE1982AD8EB}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{D9A7B330-CD22-4DA1-A95A-8DE1982AD8EB}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{D9A7B330-CD22-4DA1-A95A-8DE1982AD8EB}.Coverage|Any CPU.Build.0 = Release|Any CPU
{D9A7B330-CD22-4DA1-A95A-8DE1982AD8EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D9A7B330-CD22-4DA1-A95A-8DE1982AD8EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D9A7B330-CD22-4DA1-A95A-8DE1982AD8EB}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{D9A7B330-CD22-4DA1-A95A-8DE1982AD8EB}.FxCop|Any CPU.Build.0 = Release|Any CPU
{D9A7B330-CD22-4DA1-A95A-8DE1982AD8EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D9A7B330-CD22-4DA1-A95A-8DE1982AD8EB}.Release|Any CPU.Build.0 = Release|Any CPU
{79AED36E-ABD0-4747-93D3-8722B042454B}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{79AED36E-ABD0-4747-93D3-8722B042454B}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{79AED36E-ABD0-4747-93D3-8722B042454B}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{79AED36E-ABD0-4747-93D3-8722B042454B}.Coverage|Any CPU.Build.0 = Release|Any CPU
{79AED36E-ABD0-4747-93D3-8722B042454B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{79AED36E-ABD0-4747-93D3-8722B042454B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{79AED36E-ABD0-4747-93D3-8722B042454B}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{79AED36E-ABD0-4747-93D3-8722B042454B}.FxCop|Any CPU.Build.0 = Release|Any CPU
{79AED36E-ABD0-4747-93D3-8722B042454B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{79AED36E-ABD0-4747-93D3-8722B042454B}.Release|Any CPU.Build.0 = Release|Any CPU
{6CB3EB30-F725-45C0-9742-42599BA8E8D2}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{6CB3EB30-F725-45C0-9742-42599BA8E8D2}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{6CB3EB30-F725-45C0-9742-42599BA8E8D2}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{6CB3EB30-F725-45C0-9742-42599BA8E8D2}.Coverage|Any CPU.Build.0 = Release|Any CPU
{6CB3EB30-F725-45C0-9742-42599BA8E8D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6CB3EB30-F725-45C0-9742-42599BA8E8D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6CB3EB30-F725-45C0-9742-42599BA8E8D2}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{6CB3EB30-F725-45C0-9742-42599BA8E8D2}.FxCop|Any CPU.Build.0 = Release|Any CPU
{6CB3EB30-F725-45C0-9742-42599BA8E8D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6CB3EB30-F725-45C0-9742-42599BA8E8D2}.Release|Any CPU.Build.0 = Release|Any CPU
{D10AD48F-407D-4DB5-A328-173EC7CB010F}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{D10AD48F-407D-4DB5-A328-173EC7CB010F}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{D10AD48F-407D-4DB5-A328-173EC7CB010F}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{D10AD48F-407D-4DB5-A328-173EC7CB010F}.Coverage|Any CPU.Build.0 = Release|Any CPU
{D10AD48F-407D-4DB5-A328-173EC7CB010F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D10AD48F-407D-4DB5-A328-173EC7CB010F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D10AD48F-407D-4DB5-A328-173EC7CB010F}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{D10AD48F-407D-4DB5-A328-173EC7CB010F}.FxCop|Any CPU.Build.0 = Release|Any CPU
{D10AD48F-407D-4DB5-A328-173EC7CB010F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D10AD48F-407D-4DB5-A328-173EC7CB010F}.Release|Any CPU.Build.0 = Release|Any CPU
{9916839C-39FC-4CEB-A5AF-89CA7E87119F}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{9916839C-39FC-4CEB-A5AF-89CA7E87119F}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{9916839C-39FC-4CEB-A5AF-89CA7E87119F}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{9916839C-39FC-4CEB-A5AF-89CA7E87119F}.Coverage|Any CPU.Build.0 = Release|Any CPU
{9916839C-39FC-4CEB-A5AF-89CA7E87119F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9916839C-39FC-4CEB-A5AF-89CA7E87119F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9916839C-39FC-4CEB-A5AF-89CA7E87119F}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{9916839C-39FC-4CEB-A5AF-89CA7E87119F}.FxCop|Any CPU.Build.0 = Release|Any CPU
{9916839C-39FC-4CEB-A5AF-89CA7E87119F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9916839C-39FC-4CEB-A5AF-89CA7E87119F}.Release|Any CPU.Build.0 = Release|Any CPU
{2FC1D9C8-446D-4414-B252-5E9FBE61EB63}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{2FC1D9C8-446D-4414-B252-5E9FBE61EB63}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{2FC1D9C8-446D-4414-B252-5E9FBE61EB63}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{2FC1D9C8-446D-4414-B252-5E9FBE61EB63}.Coverage|Any CPU.Build.0 = Release|Any CPU
{2FC1D9C8-446D-4414-B252-5E9FBE61EB63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2FC1D9C8-446D-4414-B252-5E9FBE61EB63}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2FC1D9C8-446D-4414-B252-5E9FBE61EB63}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{2FC1D9C8-446D-4414-B252-5E9FBE61EB63}.FxCop|Any CPU.Build.0 = Release|Any CPU
{2FC1D9C8-446D-4414-B252-5E9FBE61EB63}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2FC1D9C8-446D-4414-B252-5E9FBE61EB63}.Release|Any CPU.Build.0 = Release|Any CPU
{17C44253-65A2-4597-98C7-16EE576824B6}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{17C44253-65A2-4597-98C7-16EE576824B6}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{17C44253-65A2-4597-98C7-16EE576824B6}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{17C44253-65A2-4597-98C7-16EE576824B6}.Coverage|Any CPU.Build.0 = Release|Any CPU
{17C44253-65A2-4597-98C7-16EE576824B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{17C44253-65A2-4597-98C7-16EE576824B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{17C44253-65A2-4597-98C7-16EE576824B6}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{17C44253-65A2-4597-98C7-16EE576824B6}.FxCop|Any CPU.Build.0 = Release|Any CPU
{17C44253-65A2-4597-98C7-16EE576824B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{17C44253-65A2-4597-98C7-16EE576824B6}.Release|Any CPU.Build.0 = Release|Any CPU
{63FBD4D9-E1DA-4A7B-AA6A-D6074FE50867}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{63FBD4D9-E1DA-4A7B-AA6A-D6074FE50867}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{63FBD4D9-E1DA-4A7B-AA6A-D6074FE50867}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{63FBD4D9-E1DA-4A7B-AA6A-D6074FE50867}.Coverage|Any CPU.Build.0 = Release|Any CPU
{63FBD4D9-E1DA-4A7B-AA6A-D6074FE50867}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{63FBD4D9-E1DA-4A7B-AA6A-D6074FE50867}.Debug|Any CPU.Build.0 = Debug|Any CPU
{63FBD4D9-E1DA-4A7B-AA6A-D6074FE50867}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{63FBD4D9-E1DA-4A7B-AA6A-D6074FE50867}.FxCop|Any CPU.Build.0 = Release|Any CPU
{63FBD4D9-E1DA-4A7B-AA6A-D6074FE50867}.Release|Any CPU.ActiveCfg = Release|Any CPU
{63FBD4D9-E1DA-4A7B-AA6A-D6074FE50867}.Release|Any CPU.Build.0 = Release|Any CPU
{14C049FD-B35B-415A-A824-87F26B26E7FD}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{14C049FD-B35B-415A-A824-87F26B26E7FD}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{14C049FD-B35B-415A-A824-87F26B26E7FD}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{14C049FD-B35B-415A-A824-87F26B26E7FD}.Coverage|Any CPU.Build.0 = Release|Any CPU
{14C049FD-B35B-415A-A824-87F26B26E7FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{14C049FD-B35B-415A-A824-87F26B26E7FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{14C049FD-B35B-415A-A824-87F26B26E7FD}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{14C049FD-B35B-415A-A824-87F26B26E7FD}.FxCop|Any CPU.Build.0 = Release|Any CPU
{14C049FD-B35B-415A-A824-87F26B26E7FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{14C049FD-B35B-415A-A824-87F26B26E7FD}.Release|Any CPU.Build.0 = Release|Any CPU
{67C1D3AF-A0EC-46B2-BAE1-DF1DA8E0B890}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{67C1D3AF-A0EC-46B2-BAE1-DF1DA8E0B890}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{67C1D3AF-A0EC-46B2-BAE1-DF1DA8E0B890}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{67C1D3AF-A0EC-46B2-BAE1-DF1DA8E0B890}.Coverage|Any CPU.Build.0 = Release|Any CPU
{67C1D3AF-A0EC-46B2-BAE1-DF1DA8E0B890}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{67C1D3AF-A0EC-46B2-BAE1-DF1DA8E0B890}.Debug|Any CPU.Build.0 = Debug|Any CPU
{67C1D3AF-A0EC-46B2-BAE1-DF1DA8E0B890}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{67C1D3AF-A0EC-46B2-BAE1-DF1DA8E0B890}.FxCop|Any CPU.Build.0 = Release|Any CPU
{67C1D3AF-A0EC-46B2-BAE1-DF1DA8E0B890}.Release|Any CPU.ActiveCfg = Release|Any CPU
{67C1D3AF-A0EC-46B2-BAE1-DF1DA8E0B890}.Release|Any CPU.Build.0 = Release|Any CPU
{5D0F00F0-26C9-4785-AD61-B85710C60EB0}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{5D0F00F0-26C9-4785-AD61-B85710C60EB0}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{5D0F00F0-26C9-4785-AD61-B85710C60EB0}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{5D0F00F0-26C9-4785-AD61-B85710C60EB0}.Coverage|Any CPU.Build.0 = Release|Any CPU
{5D0F00F0-26C9-4785-AD61-B85710C60EB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5D0F00F0-26C9-4785-AD61-B85710C60EB0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5D0F00F0-26C9-4785-AD61-B85710C60EB0}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{5D0F00F0-26C9-4785-AD61-B85710C60EB0}.FxCop|Any CPU.Build.0 = Release|Any CPU
{5D0F00F0-26C9-4785-AD61-B85710C60EB0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5D0F00F0-26C9-4785-AD61-B85710C60EB0}.Release|Any CPU.Build.0 = Release|Any CPU
{8C7FCBC2-E6E1-405E-BFB5-D8D9E67A09C4}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{8C7FCBC2-E6E1-405E-BFB5-D8D9E67A09C4}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{8C7FCBC2-E6E1-405E-BFB5-D8D9E67A09C4}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{8C7FCBC2-E6E1-405E-BFB5-D8D9E67A09C4}.Coverage|Any CPU.Build.0 = Release|Any CPU
{8C7FCBC2-E6E1-405E-BFB5-D8D9E67A09C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8C7FCBC2-E6E1-405E-BFB5-D8D9E67A09C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8C7FCBC2-E6E1-405E-BFB5-D8D9E67A09C4}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{8C7FCBC2-E6E1-405E-BFB5-D8D9E67A09C4}.FxCop|Any CPU.Build.0 = Release|Any CPU
{8C7FCBC2-E6E1-405E-BFB5-D8D9E67A09C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8C7FCBC2-E6E1-405E-BFB5-D8D9E67A09C4}.Release|Any CPU.Build.0 = Release|Any CPU
{5E5E7A21-C7B2-44D8-8593-2F9541AE041D}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{5E5E7A21-C7B2-44D8-8593-2F9541AE041D}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{5E5E7A21-C7B2-44D8-8593-2F9541AE041D}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{5E5E7A21-C7B2-44D8-8593-2F9541AE041D}.Coverage|Any CPU.Build.0 = Release|Any CPU
{5E5E7A21-C7B2-44D8-8593-2F9541AE041D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5E5E7A21-C7B2-44D8-8593-2F9541AE041D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5E5E7A21-C7B2-44D8-8593-2F9541AE041D}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{5E5E7A21-C7B2-44D8-8593-2F9541AE041D}.FxCop|Any CPU.Build.0 = Release|Any CPU
{5E5E7A21-C7B2-44D8-8593-2F9541AE041D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5E5E7A21-C7B2-44D8-8593-2F9541AE041D}.Release|Any CPU.Build.0 = Release|Any CPU
{4AB4B5B6-277E-4FF6-B69B-7AE9E16D2A56}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{4AB4B5B6-277E-4FF6-B69B-7AE9E16D2A56}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{4AB4B5B6-277E-4FF6-B69B-7AE9E16D2A56}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{4AB4B5B6-277E-4FF6-B69B-7AE9E16D2A56}.Coverage|Any CPU.Build.0 = Release|Any CPU
{4AB4B5B6-277E-4FF6-B69B-7AE9E16D2A56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4AB4B5B6-277E-4FF6-B69B-7AE9E16D2A56}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4AB4B5B6-277E-4FF6-B69B-7AE9E16D2A56}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{4AB4B5B6-277E-4FF6-B69B-7AE9E16D2A56}.FxCop|Any CPU.Build.0 = Release|Any CPU
{4AB4B5B6-277E-4FF6-B69B-7AE9E16D2A56}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4AB4B5B6-277E-4FF6-B69B-7AE9E16D2A56}.Release|Any CPU.Build.0 = Release|Any CPU
{E65E5633-C0FF-453C-A906-481C14F969D6}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{E65E5633-C0FF-453C-A906-481C14F969D6}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{E65E5633-C0FF-453C-A906-481C14F969D6}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{E65E5633-C0FF-453C-A906-481C14F969D6}.Coverage|Any CPU.Build.0 = Release|Any CPU
{E65E5633-C0FF-453C-A906-481C14F969D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E65E5633-C0FF-453C-A906-481C14F969D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E65E5633-C0FF-453C-A906-481C14F969D6}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{E65E5633-C0FF-453C-A906-481C14F969D6}.FxCop|Any CPU.Build.0 = Release|Any CPU
{E65E5633-C0FF-453C-A906-481C14F969D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E65E5633-C0FF-453C-A906-481C14F969D6}.Release|Any CPU.Build.0 = Release|Any CPU
{7354DF37-934B-46CF-A13C-455D5F5F5413}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{7354DF37-934B-46CF-A13C-455D5F5F5413}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{7354DF37-934B-46CF-A13C-455D5F5F5413}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{7354DF37-934B-46CF-A13C-455D5F5F5413}.Coverage|Any CPU.Build.0 = Release|Any CPU
{7354DF37-934B-46CF-A13C-455D5F5F5413}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7354DF37-934B-46CF-A13C-455D5F5F5413}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7354DF37-934B-46CF-A13C-455D5F5F5413}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{7354DF37-934B-46CF-A13C-455D5F5F5413}.FxCop|Any CPU.Build.0 = Release|Any CPU
{7354DF37-934B-46CF-A13C-455D5F5F5413}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7354DF37-934B-46CF-A13C-455D5F5F5413}.Release|Any CPU.Build.0 = Release|Any CPU
{33B1BC8D-E292-4972-A363-22056B207156}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{33B1BC8D-E292-4972-A363-22056B207156}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{33B1BC8D-E292-4972-A363-22056B207156}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{33B1BC8D-E292-4972-A363-22056B207156}.Coverage|Any CPU.Build.0 = Release|Any CPU
{33B1BC8D-E292-4972-A363-22056B207156}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{33B1BC8D-E292-4972-A363-22056B207156}.Debug|Any CPU.Build.0 = Debug|Any CPU
{33B1BC8D-E292-4972-A363-22056B207156}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{33B1BC8D-E292-4972-A363-22056B207156}.FxCop|Any CPU.Build.0 = Release|Any CPU
{33B1BC8D-E292-4972-A363-22056B207156}.Release|Any CPU.ActiveCfg = Release|Any CPU
{33B1BC8D-E292-4972-A363-22056B207156}.Release|Any CPU.Build.0 = Release|Any CPU
{72457126-E118-4171-A08F-9A709EE4B7FC}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{72457126-E118-4171-A08F-9A709EE4B7FC}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{72457126-E118-4171-A08F-9A709EE4B7FC}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{72457126-E118-4171-A08F-9A709EE4B7FC}.Coverage|Any CPU.Build.0 = Release|Any CPU
{72457126-E118-4171-A08F-9A709EE4B7FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{72457126-E118-4171-A08F-9A709EE4B7FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{72457126-E118-4171-A08F-9A709EE4B7FC}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{72457126-E118-4171-A08F-9A709EE4B7FC}.FxCop|Any CPU.Build.0 = Release|Any CPU
{72457126-E118-4171-A08F-9A709EE4B7FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{72457126-E118-4171-A08F-9A709EE4B7FC}.Release|Any CPU.Build.0 = Release|Any CPU
{CDE24A24-01D3-403C-84B9-37722E18DFB7}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{CDE24A24-01D3-403C-84B9-37722E18DFB7}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{CDE24A24-01D3-403C-84B9-37722E18DFB7}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{CDE24A24-01D3-403C-84B9-37722E18DFB7}.Coverage|Any CPU.Build.0 = Release|Any CPU
{CDE24A24-01D3-403C-84B9-37722E18DFB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CDE24A24-01D3-403C-84B9-37722E18DFB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CDE24A24-01D3-403C-84B9-37722E18DFB7}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{CDE24A24-01D3-403C-84B9-37722E18DFB7}.FxCop|Any CPU.Build.0 = Release|Any CPU
{CDE24A24-01D3-403C-84B9-37722E18DFB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CDE24A24-01D3-403C-84B9-37722E18DFB7}.Release|Any CPU.Build.0 = Release|Any CPU
{17F86780-9A1F-4AA1-86F1-875EEC2730C7}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{17F86780-9A1F-4AA1-86F1-875EEC2730C7}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{17F86780-9A1F-4AA1-86F1-875EEC2730C7}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{17F86780-9A1F-4AA1-86F1-875EEC2730C7}.Coverage|Any CPU.Build.0 = Release|Any CPU
{17F86780-9A1F-4AA1-86F1-875EEC2730C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{17F86780-9A1F-4AA1-86F1-875EEC2730C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{17F86780-9A1F-4AA1-86F1-875EEC2730C7}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{17F86780-9A1F-4AA1-86F1-875EEC2730C7}.FxCop|Any CPU.Build.0 = Release|Any CPU
{17F86780-9A1F-4AA1-86F1-875EEC2730C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{17F86780-9A1F-4AA1-86F1-875EEC2730C7}.Release|Any CPU.Build.0 = Release|Any CPU
{94E694A2-D140-468D-A277-C5FCE1D13E9B}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{94E694A2-D140-468D-A277-C5FCE1D13E9B}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{94E694A2-D140-468D-A277-C5FCE1D13E9B}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{94E694A2-D140-468D-A277-C5FCE1D13E9B}.Coverage|Any CPU.Build.0 = Release|Any CPU
{94E694A2-D140-468D-A277-C5FCE1D13E9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{94E694A2-D140-468D-A277-C5FCE1D13E9B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{94E694A2-D140-468D-A277-C5FCE1D13E9B}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{94E694A2-D140-468D-A277-C5FCE1D13E9B}.FxCop|Any CPU.Build.0 = Release|Any CPU
{94E694A2-D140-468D-A277-C5FCE1D13E9B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{94E694A2-D140-468D-A277-C5FCE1D13E9B}.Release|Any CPU.Build.0 = Release|Any CPU
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.Coverage|Any CPU.Build.0 = Release|Any CPU
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.FxCop|Any CPU.Build.0 = Release|Any CPU
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.Release|Any CPU.Build.0 = Release|Any CPU
{EA2B9121-EF54-40A6-A53E-6593C86EE696}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{EA2B9121-EF54-40A6-A53E-6593C86EE696}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{EA2B9121-EF54-40A6-A53E-6593C86EE696}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{EA2B9121-EF54-40A6-A53E-6593C86EE696}.Coverage|Any CPU.Build.0 = Release|Any CPU
{EA2B9121-EF54-40A6-A53E-6593C86EE696}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EA2B9121-EF54-40A6-A53E-6593C86EE696}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EA2B9121-EF54-40A6-A53E-6593C86EE696}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{EA2B9121-EF54-40A6-A53E-6593C86EE696}.FxCop|Any CPU.Build.0 = Release|Any CPU
{EA2B9121-EF54-40A6-A53E-6593C86EE696}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EA2B9121-EF54-40A6-A53E-6593C86EE696}.Release|Any CPU.Build.0 = Release|Any CPU
{0E7646E8-FE8F-43C1-8799-D97860925EC4}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{0E7646E8-FE8F-43C1-8799-D97860925EC4}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{0E7646E8-FE8F-43C1-8799-D97860925EC4}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{0E7646E8-FE8F-43C1-8799-D97860925EC4}.Coverage|Any CPU.Build.0 = Release|Any CPU
{0E7646E8-FE8F-43C1-8799-D97860925EC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0E7646E8-FE8F-43C1-8799-D97860925EC4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0E7646E8-FE8F-43C1-8799-D97860925EC4}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{0E7646E8-FE8F-43C1-8799-D97860925EC4}.FxCop|Any CPU.Build.0 = Release|Any CPU
{0E7646E8-FE8F-43C1-8799-D97860925EC4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0E7646E8-FE8F-43C1-8799-D97860925EC4}.Release|Any CPU.Build.0 = Release|Any CPU
{8A4E42CE-79F8-4BE2-8B1E-A6B83432123B}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{8A4E42CE-79F8-4BE2-8B1E-A6B83432123B}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{8A4E42CE-79F8-4BE2-8B1E-A6B83432123B}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{8A4E42CE-79F8-4BE2-8B1E-A6B83432123B}.Coverage|Any CPU.Build.0 = Release|Any CPU
{8A4E42CE-79F8-4BE2-8B1E-A6B83432123B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8A4E42CE-79F8-4BE2-8B1E-A6B83432123B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8A4E42CE-79F8-4BE2-8B1E-A6B83432123B}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{8A4E42CE-79F8-4BE2-8B1E-A6B83432123B}.FxCop|Any CPU.Build.0 = Release|Any CPU
{8A4E42CE-79F8-4BE2-8B1E-A6B83432123B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8A4E42CE-79F8-4BE2-8B1E-A6B83432123B}.Release|Any CPU.Build.0 = Release|Any CPU
{D5D447D7-EF8E-43A6-B9A4-3B025DD9F45D}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{D5D447D7-EF8E-43A6-B9A4-3B025DD9F45D}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{D5D447D7-EF8E-43A6-B9A4-3B025DD9F45D}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{D5D447D7-EF8E-43A6-B9A4-3B025DD9F45D}.Coverage|Any CPU.Build.0 = Release|Any CPU
{D5D447D7-EF8E-43A6-B9A4-3B025DD9F45D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D5D447D7-EF8E-43A6-B9A4-3B025DD9F45D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D5D447D7-EF8E-43A6-B9A4-3B025DD9F45D}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{D5D447D7-EF8E-43A6-B9A4-3B025DD9F45D}.FxCop|Any CPU.Build.0 = Release|Any CPU
{D5D447D7-EF8E-43A6-B9A4-3B025DD9F45D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D5D447D7-EF8E-43A6-B9A4-3B025DD9F45D}.Release|Any CPU.Build.0 = Release|Any CPU
{DFD137A2-DDB5-4D22-BE0D-FA9AD4C8B059}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{DFD137A2-DDB5-4D22-BE0D-FA9AD4C8B059}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{DFD137A2-DDB5-4D22-BE0D-FA9AD4C8B059}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{DFD137A2-DDB5-4D22-BE0D-FA9AD4C8B059}.Coverage|Any CPU.Build.0 = Release|Any CPU
{DFD137A2-DDB5-4D22-BE0D-FA9AD4C8B059}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DFD137A2-DDB5-4D22-BE0D-FA9AD4C8B059}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DFD137A2-DDB5-4D22-BE0D-FA9AD4C8B059}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{DFD137A2-DDB5-4D22-BE0D-FA9AD4C8B059}.FxCop|Any CPU.Build.0 = Release|Any CPU
{DFD137A2-DDB5-4D22-BE0D-FA9AD4C8B059}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DFD137A2-DDB5-4D22-BE0D-FA9AD4C8B059}.Release|Any CPU.Build.0 = Release|Any CPU
{0DFA2E10-96C8-4E05-BC10-B710B97ECCDE}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{0DFA2E10-96C8-4E05-BC10-B710B97ECCDE}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
{0DFA2E10-96C8-4E05-BC10-B710B97ECCDE}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{0DFA2E10-96C8-4E05-BC10-B710B97ECCDE}.Coverage|Any CPU.Build.0 = Release|Any CPU
{0DFA2E10-96C8-4E05-BC10-B710B97ECCDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0DFA2E10-96C8-4E05-BC10-B710B97ECCDE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0DFA2E10-96C8-4E05-BC10-B710B97ECCDE}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
{0DFA2E10-96C8-4E05-BC10-B710B97ECCDE}.FxCop|Any CPU.Build.0 = Release|Any CPU
{0DFA2E10-96C8-4E05-BC10-B710B97ECCDE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0DFA2E10-96C8-4E05-BC10-B710B97ECCDE}.Release|Any CPU.Build.0 = Release|Any CPU
{1C981BB3-26F7-494C-9005-CC27A5144233}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
{1C981BB3-26F7-494C-9005-CC27A5144233}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
{1C981BB3-26F7-494C-9005-CC27A5144233}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1C981BB3-26F7-494C-9005-CC27A5144233}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1C981BB3-26F7-494C-9005-CC27A5144233}.FxCop|Any CPU.ActiveCfg = Debug|Any CPU
{1C981BB3-26F7-494C-9005-CC27A5144233}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1C981BB3-26F7-494C-9005-CC27A5144233}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection

View File

@@ -0,0 +1,11 @@
--- CommandBackgroundService.cs
+++ CommandBackgroundService.cs
@@ -1,7 +1,7 @@
using Orchard.Tasks;
namespace Orchard.Commands {
- public class CommandBackgroundService : IBackgroundService {
+ class CommandBackgroundService : IBackgroundService {
public void Sweep() {
// Don't run any background service in command line
}

View File

@@ -173,12 +173,10 @@ namespace Orchard.Commands {
};
}
protected void MvcSingletons(ContainerBuilder builder) {
builder.RegisterInstance(ControllerBuilder.Current);
builder.RegisterInstance(RouteTable.Routes);
builder.RegisterInstance(ModelBinders.Binders);
builder.RegisterInstance(ModelMetadataProviders.Current);
builder.RegisterInstance(ViewEngines.Engines);
static void MvcSingletons(ContainerBuilder builder) {
builder.Register(ctx => RouteTable.Routes).SingleInstance();
builder.Register(ctx => ModelBinders.Binders).SingleInstance();
builder.Register(ctx => ViewEngines.Engines).SingleInstance();
}
private class CommandHostShellContainerRegistrations : IShellContainerRegistrations {

View File

@@ -1,15 +1,158 @@
using Autofac;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Autofac;
using Autofac.Integration.Web;
namespace Orchard.Environment {
public class DefaultOrchardHostContainer : IOrchardHostContainer {
//IContainerProvider
public class DefaultOrchardHostContainer : IOrchardHostContainer, IMvcServiceLocator {
private readonly IContainer _container;
public DefaultOrchardHostContainer(IContainer container) {
_container = container;
}
public T Resolve<T>() {
return _container.Resolve<T>();
static bool TryResolveAtScope(ILifetimeScope scope, string key, Type serviceType, out object value) {
if (scope == null) {
value = null;
return false;
}
return key == null ? scope.TryResolve(serviceType, out value) : scope.TryResolve(key, serviceType, out value);
}
bool TryResolve(string key, Type serviceType, out object value) {
// shared objects are resolved from the host first
// this is to ensure the lifecycle of components registered at the host level
// is consistent inside and outside of a containerproviderscope
return
TryResolveAtScope(_container, key, serviceType, out value) ||
TryResolveAtScope(Scope.CurrentLifetimeScope, key, serviceType, out value);
}
static object CreateInstance(Type t) {
if (t.IsAbstract || t.IsInterface)
return null;
return Activator.CreateInstance(t);
}
TService Resolve<TService>(Type serviceType, TService defaultValue = default(TService)) {
object value;
return TryResolve(null, serviceType, out value) ? (TService)value : defaultValue;
}
TService Resolve<TService>(Type serviceType, string key, TService defaultValue = default(TService)) {
object value;
return TryResolve(key, serviceType, out value) ? (TService)value : defaultValue;
}
TService Resolve<TService>(Type serviceType, Func<Type, TService> defaultFactory) {
object value;
return TryResolve(null, serviceType, out value) ? (TService)value : defaultFactory(serviceType);
}
TService Resolve<TService>(Type serviceType, string key, Func<Type, TService> defaultFactory) {
object value;
return TryResolve(key, serviceType, out value) ? (TService)value : defaultFactory(serviceType);
}
TService IOrchardHostContainer.Resolve<TService>() {
// Resolve service, or null
return Resolve(typeof(TService), default(TService));
}
object IServiceProvider.GetService(Type serviceType) {
// Resolve service, or null
return Resolve(serviceType, default(object));
}
object IServiceLocator.GetInstance(Type serviceType) {
// Create instance, or default ctor
return Resolve(serviceType, CreateInstance);
}
object IServiceLocator.GetInstance(Type serviceType, string key) {
// Create instance, or default ctor
return Resolve(serviceType, key, CreateInstance);
}
TService IServiceLocator.GetInstance<TService>() {
// Create instance, or default ctor
return Resolve(typeof(TService), t => (TService)CreateInstance(t));
}
TService IServiceLocator.GetInstance<TService>(string key) {
// Create instance, or default ctor
return Resolve(typeof(TService), key, t => (TService)CreateInstance(t));
}
IEnumerable<TService> IServiceLocator.GetAllInstances<TService>() {
return Resolve(typeof(IEnumerable<TService>), Enumerable.Empty<TService>());
}
IEnumerable<object> IServiceLocator.GetAllInstances(Type serviceType) {
return Resolve<IEnumerable>(typeof(IEnumerable<>).MakeGenericType(serviceType), Enumerable.Empty<object>()).Cast<object>();
}
void IMvcServiceLocator.Release(object instance) {
// Autofac manages component disposal lifecycle internally.
}
public static IDisposable ContainerProviderScope(IContainerProvider containerProvider) {
return new Scope(containerProvider);
}
class Scope : IDisposable {
private readonly IContainerProvider _containerProvider;
readonly Scope _prior;
public Scope(IContainerProvider containerProvider) {
_containerProvider = containerProvider;
_prior = Current;
Current = this;
}
public void Dispose() {
Current = _prior;
}
public static ILifetimeScope CurrentLifetimeScope {
get {
var currentScope = Current;
if (currentScope != null &&
currentScope._containerProvider != null) {
return currentScope._containerProvider.RequestLifetime;
}
return null;
}
}
[ThreadStatic]
static Scope _fallback;
static readonly object _contextKey = new object();
static Scope Current {
get {
var context = HttpContext.Current;
return context != null ? (Scope)context.Items[_contextKey] : _fallback;
}
set {
var context = HttpContext.Current;
if (context != null)
context.Items[_contextKey] = value;
else {
_fallback = value;
}
}
}
}
}
}
}

View File

@@ -17,7 +17,6 @@ using Orchard.Utility.Extensions;
namespace Orchard.Environment {
public class DefaultOrchardHost : IOrchardHost, IShellSettingsManagerEventHandler, IShellDescriptorManagerEventHandler {
private readonly ControllerBuilder _controllerBuilder;
private readonly IHostLocalRestart _hostLocalRestart;
private readonly IShellSettingsManager _shellSettingsManager;
private readonly IShellContextFactory _shellContextFactory;
@@ -36,16 +35,13 @@ namespace Orchard.Environment {
IProcessingEngine processingEngine,
IExtensionLoaderCoordinator extensionLoaderCoordinator,
ICacheManager cacheManager,
ControllerBuilder controllerBuilder,
IHostLocalRestart hostLocalRestart ) {
_shellSettingsManager = shellSettingsManager;
_shellContextFactory = shellContextFactory;
_runningShellTable = runningShellTable;
_processingEngine = processingEngine;
_extensionLoaderCoordinator = extensionLoaderCoordinator;
_cacheManager = cacheManager;
_controllerBuilder = controllerBuilder;
_hostLocalRestart = hostLocalRestart;
T = NullLocalizer.Instance;
@@ -62,8 +58,7 @@ namespace Orchard.Environment {
void IOrchardHost.Initialize() {
Logger.Information("Initializing");
ViewEngines.Engines.Insert(0, LayoutViewEngine.CreateShim());
_controllerBuilder.SetControllerFactory(new OrchardControllerFactory());
//ServiceLocator.SetLocator(t => _containerProvider.RequestLifetime.Resolve(t));
BuildCurrent();
}

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Web.Hosting;
using System.Web.Mvc;
using Autofac;
using Autofac.Configuration;
using Orchard.Caching;
@@ -129,7 +130,9 @@ namespace Orchard.Environment {
}
}
OrchardHostContainerRegistry.RegisterHostContainer(new DefaultOrchardHostContainer(container));
var hostContainer = new DefaultOrchardHostContainer(container);
MvcServiceLocator.SetCurrent(hostContainer);
OrchardHostContainerRegistry.RegisterHostContainer(hostContainer);
return container;
}

View File

@@ -10,10 +10,9 @@ namespace Orchard.Mvc.ModelBinders {
public KeyedListModelBinder(
ModelBinderDictionary binders,
ModelMetadataProvider providers,
Func<T, string> keySelector) {
_binders = binders;
_providers = providers;
_providers = ModelMetadataProviders.Current;
_keySelector = keySelector;
}

View File

@@ -11,6 +11,7 @@ namespace Orchard.Mvc {
public class MvcModule : Module {
protected override void Load(ContainerBuilder moduleBuilder) {
moduleBuilder.RegisterType<OrchardControllerFactory>().As<IControllerFactory>().InstancePerDependency();
moduleBuilder.RegisterType<FilterResolvingActionInvoker>().As<IActionInvoker>().InstancePerDependency();
moduleBuilder.RegisterType<ShellRoute>().InstancePerDependency();

View File

@@ -136,12 +136,14 @@ namespace Orchard.Mvc.Routes {
}
public void ProcessRequest(HttpContext context) {
_containerProvider.BeginRequestLifetime();
try {
_httpHandler.ProcessRequest(context);
}
finally {
_containerProvider.EndRequestLifetime();
using (DefaultOrchardHostContainer.ContainerProviderScope(_containerProvider)) {
_containerProvider.BeginRequestLifetime();
try {
_httpHandler.ProcessRequest(context);
}
finally {
_containerProvider.EndRequestLifetime();
}
}
}
@@ -155,6 +157,7 @@ namespace Orchard.Mvc.Routes {
class HttpAsyncHandler : HttpHandler, IHttpAsyncHandler {
private readonly IHttpAsyncHandler _httpAsyncHandler;
private IDisposable _scope;
public HttpAsyncHandler(ContainerProvider containerProvider, IHttpAsyncHandler httpAsyncHandler)
: base(containerProvider, httpAsyncHandler) {
@@ -162,12 +165,14 @@ namespace Orchard.Mvc.Routes {
}
public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData) {
_scope = DefaultOrchardHostContainer.ContainerProviderScope(_containerProvider);
_containerProvider.BeginRequestLifetime();
try {
return _httpAsyncHandler.BeginProcessRequest(context, cb, extraData);
}
catch {
_containerProvider.EndRequestLifetime();
_scope.Dispose();
throw;
}
}
@@ -178,6 +183,7 @@ namespace Orchard.Mvc.Routes {
}
finally {
_containerProvider.EndRequestLifetime();
_scope.Dispose();
}
}
}

View File

@@ -0,0 +1,76 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Razor.Web;
using System.Reflection;
using System.Text;
using System.Threading;
using Orchard.Environment;
using Orchard.Environment.Extensions.Loaders;
using Orchard.FileSystems.Dependencies;
namespace Orchard.Mvc.ViewEngines.Razor {
public class RazorCompilationEventsShim : IShim {
private static int _initialized;
private IOrchardHostContainer _hostContainer;
private static RazorCompilationEventsShim _instance;
private RazorCompilationEventsShim() {
RazorBuildProvider.CodeGenerationStarted += new EventHandler(RazorBuildProvider_CodeGenerationStarted);
OrchardHostContainerRegistry.RegisterShim(this);
}
void RazorBuildProvider_CodeGenerationStarted(object sender, EventArgs e) {
var provider = (RazorBuildProvider)sender;
var descriptors = DependenciesFolder.LoadDescriptors();
var entries = descriptors
.SelectMany(descriptor => Loaders
.Where(loader => descriptor.LoaderName == loader.Name)
.Select(loader => new {
loader,
descriptor,
directive = loader.GetWebFormAssemblyDirective(descriptor),
dependencies = loader.GetWebFormVirtualDependencies(descriptor)
}));
foreach (var entry in entries) {
if (entry.directive != null) {
if (entry.directive.StartsWith("<%@ Assembly Name=\"")) {
provider.AssemblyBuilder.AddAssemblyReference(Assembly.Load(entry.descriptor.Name));
}
else if (entry.directive.StartsWith("<%@ Assembly Src=\"")) {
provider.AssemblyBuilder.AddAssemblyReference(BuildManager.GetCompiledAssembly(entry.descriptor.VirtualPath));
}
}
foreach (var virtualDependency in entry.dependencies) {
provider.AddVirtualPathDependency(virtualDependency);
}
}
}
public IOrchardHostContainer HostContainer {
get { return _hostContainer; }
set {
_hostContainer = value;
BuildManager = _hostContainer.Resolve<IBuildManager>();
DependenciesFolder = _hostContainer.Resolve<IDependenciesFolder>();
Loaders = _hostContainer.Resolve<IEnumerable<IExtensionLoader>>();
}
}
public IBuildManager BuildManager { get; set; }
public IDependenciesFolder DependenciesFolder { get; set; }
public IEnumerable<IExtensionLoader> Loaders { get; set; }
public static void EnsureInitialized() {
var uninitialized = Interlocked.CompareExchange(ref _initialized, 1, 0) == 0;
if (uninitialized)
_instance = new RazorCompilationEventsShim();
}
}
}

View File

@@ -0,0 +1,86 @@
using System.Linq;
using System.Web.Mvc;
using Orchard.Logging;
using Orchard.Mvc.ViewEngines.WebForms;
namespace Orchard.Mvc.ViewEngines.Razor {
public class RazorViewEngineProvider : IViewEngineProvider {
public RazorViewEngineProvider() {
Logger = NullLogger.Instance;
RazorCompilationEventsShim.EnsureInitialized();
}
static string[] DisabledFormats = new[] { "~/Disabled" };
public ILogger Logger { get; set; }
public IViewEngine CreateThemeViewEngine(CreateThemeViewEngineParams parameters) {
// Area: if "area" in RouteData. Url hit for module...
// Area-Layout Paths - no-op because LayoutViewEngine uses multi-pass instead of layout paths
// Area-View Paths - no-op because LayoutViewEngine relies entirely on Partial view resolution
// Area-Partial Paths - enable theming views associated with a module based on the route
// Layout Paths - no-op because LayoutViewEngine uses multi-pass instead of layout paths
// View Paths - no-op because LayoutViewEngine relies entirely on Partial view resolution
// Partial Paths -
// {area}/{controller}/
// for "routed" request views...
// enable /Views/{area}/{controller}/{viewName}
// enable /Views/{partialName}
// enable /Views/"DisplayTemplates/"+{templateName}
// enable /Views/"EditorTemplates/+{templateName}
var partialViewLocationFormats = new[] {
parameters.VirtualPath + "/Views/{0}.cshtml",
};
//Logger.Debug("PartialViewLocationFormats (theme): \r\n\t-{0}", string.Join("\r\n\t-", partialViewLocationFormats));
var areaPartialViewLocationFormats = new[] {
parameters.VirtualPath + "/Views/{2}/{1}/{0}.cshtml",
};
//Logger.Debug("AreaPartialViewLocationFormats (theme): \r\n\t-{0}", string.Join("\r\n\t-", areaPartialViewLocationFormats));
var viewEngine = new CshtmlViewEngine {
MasterLocationFormats = DisabledFormats,
ViewLocationFormats = DisabledFormats,
PartialViewLocationFormats = partialViewLocationFormats,
AreaMasterLocationFormats = DisabledFormats,
AreaViewLocationFormats = DisabledFormats,
AreaPartialViewLocationFormats = areaPartialViewLocationFormats,
ViewLocationCache = new ThemeViewLocationCache(parameters.VirtualPath),
};
return viewEngine;
}
public IViewEngine CreateModulesViewEngine(CreateModulesViewEngineParams parameters) {
var areaFormats = new[] {
"~/Core/{2}/Views/{1}/{0}.cshtml",
"~/Modules/{2}/Views/{1}/{0}.cshtml",
};
//Logger.Debug("AreaFormats (module): \r\n\t-{0}", string.Join("\r\n\t-", areaFormats));
var universalFormats = parameters.VirtualPaths
.SelectMany(x => new[] {
x + "/Views/{0}.cshtml",
})
.ToArray();
//Logger.Debug("UniversalFormats (module): \r\n\t-{0}", string.Join("\r\n\t-", universalFormats));
var viewEngine = new CshtmlViewEngine {
MasterLocationFormats = DisabledFormats,
ViewLocationFormats = universalFormats,
PartialViewLocationFormats = universalFormats,
AreaMasterLocationFormats = DisabledFormats,
AreaViewLocationFormats = areaFormats,
AreaPartialViewLocationFormats = areaFormats,
};
return viewEngine;
}
}
}

View File

@@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;
using Orchard.Localization;
using Orchard.Mvc.Html;
using Orchard.Security;
using Orchard.Security.Permissions;
namespace Orchard.Mvc.ViewEngines.Razor {
public abstract class WebViewPage : WebViewPage<object> {
}
public abstract class WebViewPage<TModel> : System.Web.Mvc.WebViewPage<TModel> {
public WebViewPage() {
T = NullLocalizer.Instance;
}
public Localizer T { get; set; }
public override void InitHelpers() {
base.InitHelpers();
T = LocalizationUtilities.Resolve(ViewContext, VirtualPath);
}
public MvcHtmlString H(string value) {
return MvcHtmlString.Create(Html.Encode(value));
}
public bool AuthorizedFor(Permission permission) {
return Html.Resolve<IAuthorizer>().Authorize(permission);
}
}
}

View File

@@ -85,6 +85,10 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\lib\sharpziplib\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
<Reference Include="Microsoft.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\lib\aspnetmvc\Microsoft.WebPages.dll</HintPath>
</Reference>
<Reference Include="NHibernate, Version=2.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\lib\fluentnhibernate\NHibernate.dll</HintPath>
@@ -102,6 +106,10 @@
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Razor.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\lib\aspnetmvc\System.Razor.Web.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Serialization">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
@@ -371,6 +379,9 @@
<Compile Include="Environment\IHostLocalRestart.cs" />
<Compile Include="Environment\IShellContainerRegistrations.cs" />
<Compile Include="FileSystems\Dependencies\DynamicModuleVirtualPathProvider.cs" />
<Compile Include="Mvc\ViewEngines\Razor\RazorCompilationEventsShim.cs" />
<Compile Include="Mvc\ViewEngines\Razor\RazorViewEngineProvider.cs" />
<Compile Include="Mvc\ViewEngines\Razor\WebViewPage.cs" />
<Compile Include="Services\IHtmlFilter.cs" />
<Compile Include="Utility\Hash.cs" />
<Compile Include="Data\ISessionConfigurationCache.cs" />
@@ -781,7 +792,6 @@
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.