From b54a0da6e8ad159af52deb6e140bc985027bc2d6 Mon Sep 17 00:00:00 2001 From: David Fowler Date: Fri, 24 Jan 2014 01:55:17 -0800 Subject: [PATCH] Updated MVC. - Use new HttpAbstractions - Updated the build - Added new projects --- Mvc.sln | 82 +++-- build/_git-clone.shade | 9 + build/_git-pull.shade | 8 + build/_git.shade | 5 + build/_k-generate-projects.shade | 330 ++++++++++++++++++ build/_k-standard-goals.shade | 1 + build/k10.txt | 50 +++ build/net45.txt | 57 +++ samples/MvcSample/Home2Controller.cs | 7 +- samples/MvcSample/HomeController.cs | 13 +- samples/MvcSample/MvcSample.csproj | 33 +- samples/MvcSample/MvcSample.k10.csproj | 61 ++++ samples/MvcSample/MvcSample.net45.csproj | 76 ++++ samples/MvcSample/Startup.cs | 4 +- samples/MvcSample/packages.config | 7 +- samples/MvcSample/project.json | 13 + .../Microsoft.AspNet.Mvc.Forms.csproj | 13 +- .../Microsoft.AspNet.Mvc.Forms.k10.csproj | 62 ++++ .../Microsoft.AspNet.Mvc.Forms.net45.csproj | 73 ++++ .../packages.config | 3 +- src/Microsoft.AspNet.Mvc.Forms/project.json | 11 + .../Microsoft.AspNet.Mvc.Razor.csproj | 26 +- .../Microsoft.AspNet.Mvc.Razor.k10.csproj | 76 ++++ .../Microsoft.AspNet.Mvc.Razor.net45.csproj | 95 +++++ .../Razor/MvcCSharpRazorCodeParser.cs | 4 +- src/Microsoft.AspNet.Mvc.Razor/RazorView.cs | 4 +- .../packages.config | 5 +- src/Microsoft.AspNet.Mvc.Razor/project.json | 11 +- .../ActionInvokerFactory.cs | 1 - .../ActionResults/ContentResult.cs | 4 +- .../ActionResults/NoContentResult.cs | 4 +- src/Microsoft.AspNet.Mvc/Controller.cs | 4 +- .../ControllerActionInvoker.cs | 12 +- .../DefaultControllerFactory.cs | 4 +- .../IActionDescriptorProvider.cs | 1 - .../IActionInvokerFactory.cs | 1 - .../IActionResultFactory.cs | 3 +- .../IControllerFactory.cs | 4 +- .../Microsoft.AspNet.Mvc.csproj | 11 +- .../Microsoft.AspNet.Mvc.k10.csproj | 86 +++++ .../Microsoft.AspNet.Mvc.net45.csproj | 105 ++++++ src/Microsoft.AspNet.Mvc/MvcHandler.cs | 4 +- src/Microsoft.AspNet.Mvc/RequestContext.cs | 6 +- .../Routing/IRouteData.cs | 4 +- src/Microsoft.AspNet.Mvc/View/ViewContext.cs | 4 +- src/Microsoft.AspNet.Mvc/packages.config | 3 +- src/Microsoft.AspNet.Mvc/project.json | 6 +- 47 files changed, 1243 insertions(+), 163 deletions(-) create mode 100644 build/_git-clone.shade create mode 100644 build/_git-pull.shade create mode 100644 build/_git.shade create mode 100644 build/_k-generate-projects.shade create mode 100644 build/k10.txt create mode 100644 build/net45.txt create mode 100644 samples/MvcSample/MvcSample.k10.csproj create mode 100644 samples/MvcSample/MvcSample.net45.csproj create mode 100644 samples/MvcSample/project.json create mode 100644 src/Microsoft.AspNet.Mvc.Forms/Microsoft.AspNet.Mvc.Forms.k10.csproj create mode 100644 src/Microsoft.AspNet.Mvc.Forms/Microsoft.AspNet.Mvc.Forms.net45.csproj create mode 100644 src/Microsoft.AspNet.Mvc.Forms/project.json create mode 100644 src/Microsoft.AspNet.Mvc.Razor/Microsoft.AspNet.Mvc.Razor.k10.csproj create mode 100644 src/Microsoft.AspNet.Mvc.Razor/Microsoft.AspNet.Mvc.Razor.net45.csproj create mode 100644 src/Microsoft.AspNet.Mvc/Microsoft.AspNet.Mvc.k10.csproj create mode 100644 src/Microsoft.AspNet.Mvc/Microsoft.AspNet.Mvc.net45.csproj diff --git a/Mvc.sln b/Mvc.sln index 0f15c5a73c..62d11a2cc1 100644 --- a/Mvc.sln +++ b/Mvc.sln @@ -3,17 +3,25 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 VisualStudioVersion = 12.0.21005.1 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Mvc", "src\Microsoft.AspNet.Mvc\Microsoft.AspNet.Mvc.csproj", "{2A0C26F1-0240-4AE1-AE00-4691C291B122}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MvcSample", "samples\MvcSample\MvcSample.csproj", "{069EA0A1-BB68-41D1-A973-3429EC09264C}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Mvc.Razor", "src\Microsoft.AspNet.Mvc.Razor\Microsoft.AspNet.Mvc.Razor.csproj", "{224A14D0-ECA7-441C-AE89-B6E66A57EF9B}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{DAAE4C74-D06F-4874-A166-33305D2643CE}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{32285FA4-6B46-4D6B-A840-2B13E4C8B58E}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Mvc.Forms", "src\Microsoft.AspNet.Mvc.Forms\Microsoft.AspNet.Mvc.Forms.csproj", "{AB4CDC03-176C-460F-8955-4202F6D53FED}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Mvc.net45", "src\Microsoft.AspNet.Mvc\Microsoft.AspNet.Mvc.net45.csproj", "{64BD92BA-F313-496C-ACE6-B9C4C10C420E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Mvc.k10", "src\Microsoft.AspNet.Mvc\Microsoft.AspNet.Mvc.k10.csproj", "{BA88E212-5889-48DC-823F-A3A67DDEF123}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Mvc.Forms.net45", "src\Microsoft.AspNet.Mvc.Forms\Microsoft.AspNet.Mvc.Forms.net45.csproj", "{28AA31B2-6504-432D-8599-1501FE0B100A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Mvc.Forms.k10", "src\Microsoft.AspNet.Mvc.Forms\Microsoft.AspNet.Mvc.Forms.k10.csproj", "{24947215-86AB-4DD0-B94E-88B1EC4DC877}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Mvc.Razor.net45", "src\Microsoft.AspNet.Mvc.Razor\Microsoft.AspNet.Mvc.Razor.net45.csproj", "{365CA5C6-037D-4E6E-AF05-F5FA42E024EB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNet.Mvc.Razor.k10", "src\Microsoft.AspNet.Mvc.Razor\Microsoft.AspNet.Mvc.Razor.k10.csproj", "{0D2C8C3D-AFC3-4E1F-A6D8-9F690EE5E063}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MvcSample.net45", "samples\MvcSample\MvcSample.net45.csproj", "{501817DD-8143-4A50-888D-99896A82CD12}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MvcSample.k10", "samples\MvcSample\MvcSample.k10.csproj", "{A7D7CD66-A407-4144-8AB7-07F895F87137}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -21,30 +29,50 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2A0C26F1-0240-4AE1-AE00-4691C291B122}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2A0C26F1-0240-4AE1-AE00-4691C291B122}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2A0C26F1-0240-4AE1-AE00-4691C291B122}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2A0C26F1-0240-4AE1-AE00-4691C291B122}.Release|Any CPU.Build.0 = Release|Any CPU - {069EA0A1-BB68-41D1-A973-3429EC09264C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {069EA0A1-BB68-41D1-A973-3429EC09264C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {069EA0A1-BB68-41D1-A973-3429EC09264C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {069EA0A1-BB68-41D1-A973-3429EC09264C}.Release|Any CPU.Build.0 = Release|Any CPU - {224A14D0-ECA7-441C-AE89-B6E66A57EF9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {224A14D0-ECA7-441C-AE89-B6E66A57EF9B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {224A14D0-ECA7-441C-AE89-B6E66A57EF9B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {224A14D0-ECA7-441C-AE89-B6E66A57EF9B}.Release|Any CPU.Build.0 = Release|Any CPU - {AB4CDC03-176C-460F-8955-4202F6D53FED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AB4CDC03-176C-460F-8955-4202F6D53FED}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AB4CDC03-176C-460F-8955-4202F6D53FED}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AB4CDC03-176C-460F-8955-4202F6D53FED}.Release|Any CPU.Build.0 = Release|Any CPU + {64BD92BA-F313-496C-ACE6-B9C4C10C420E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {64BD92BA-F313-496C-ACE6-B9C4C10C420E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {64BD92BA-F313-496C-ACE6-B9C4C10C420E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {64BD92BA-F313-496C-ACE6-B9C4C10C420E}.Release|Any CPU.Build.0 = Release|Any CPU + {BA88E212-5889-48DC-823F-A3A67DDEF123}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BA88E212-5889-48DC-823F-A3A67DDEF123}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BA88E212-5889-48DC-823F-A3A67DDEF123}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BA88E212-5889-48DC-823F-A3A67DDEF123}.Release|Any CPU.Build.0 = Release|Any CPU + {28AA31B2-6504-432D-8599-1501FE0B100A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {28AA31B2-6504-432D-8599-1501FE0B100A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {28AA31B2-6504-432D-8599-1501FE0B100A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {28AA31B2-6504-432D-8599-1501FE0B100A}.Release|Any CPU.Build.0 = Release|Any CPU + {24947215-86AB-4DD0-B94E-88B1EC4DC877}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {24947215-86AB-4DD0-B94E-88B1EC4DC877}.Debug|Any CPU.Build.0 = Debug|Any CPU + {24947215-86AB-4DD0-B94E-88B1EC4DC877}.Release|Any CPU.ActiveCfg = Release|Any CPU + {24947215-86AB-4DD0-B94E-88B1EC4DC877}.Release|Any CPU.Build.0 = Release|Any CPU + {365CA5C6-037D-4E6E-AF05-F5FA42E024EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {365CA5C6-037D-4E6E-AF05-F5FA42E024EB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {365CA5C6-037D-4E6E-AF05-F5FA42E024EB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {365CA5C6-037D-4E6E-AF05-F5FA42E024EB}.Release|Any CPU.Build.0 = Release|Any CPU + {0D2C8C3D-AFC3-4E1F-A6D8-9F690EE5E063}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0D2C8C3D-AFC3-4E1F-A6D8-9F690EE5E063}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0D2C8C3D-AFC3-4E1F-A6D8-9F690EE5E063}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0D2C8C3D-AFC3-4E1F-A6D8-9F690EE5E063}.Release|Any CPU.Build.0 = Release|Any CPU + {501817DD-8143-4A50-888D-99896A82CD12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {501817DD-8143-4A50-888D-99896A82CD12}.Debug|Any CPU.Build.0 = Debug|Any CPU + {501817DD-8143-4A50-888D-99896A82CD12}.Release|Any CPU.ActiveCfg = Release|Any CPU + {501817DD-8143-4A50-888D-99896A82CD12}.Release|Any CPU.Build.0 = Release|Any CPU + {A7D7CD66-A407-4144-8AB7-07F895F87137}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A7D7CD66-A407-4144-8AB7-07F895F87137}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A7D7CD66-A407-4144-8AB7-07F895F87137}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A7D7CD66-A407-4144-8AB7-07F895F87137}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {224A14D0-ECA7-441C-AE89-B6E66A57EF9B} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E} - {2A0C26F1-0240-4AE1-AE00-4691C291B122} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E} - {AB4CDC03-176C-460F-8955-4202F6D53FED} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E} - {069EA0A1-BB68-41D1-A973-3429EC09264C} = {DAAE4C74-D06F-4874-A166-33305D2643CE} + {64BD92BA-F313-496C-ACE6-B9C4C10C420E} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E} + {BA88E212-5889-48DC-823F-A3A67DDEF123} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E} + {28AA31B2-6504-432D-8599-1501FE0B100A} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E} + {24947215-86AB-4DD0-B94E-88B1EC4DC877} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E} + {365CA5C6-037D-4E6E-AF05-F5FA42E024EB} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E} + {0D2C8C3D-AFC3-4E1F-A6D8-9F690EE5E063} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E} + {501817DD-8143-4A50-888D-99896A82CD12} = {DAAE4C74-D06F-4874-A166-33305D2643CE} + {A7D7CD66-A407-4144-8AB7-07F895F87137} = {DAAE4C74-D06F-4874-A166-33305D2643CE} EndGlobalSection EndGlobal diff --git a/build/_git-clone.shade b/build/_git-clone.shade new file mode 100644 index 0000000000..32355ab5a3 --- /dev/null +++ b/build/_git-clone.shade @@ -0,0 +1,9 @@ + + + +default gitBranch='' + +var gitCommand='clone ${gitUri}' +set gitCommand='${gitCommand} --branch ${gitBranch}' if='!string.IsNullOrEmpty(gitBranch)' + +git diff --git a/build/_git-pull.shade b/build/_git-pull.shade new file mode 100644 index 0000000000..1e7971020f --- /dev/null +++ b/build/_git-pull.shade @@ -0,0 +1,8 @@ + + +default gitBranch='' + +var gitCommand='pull ${gitUri}' +set gitCommand='${gitCommand} ${gitBranch}' if='!string.IsNullOrEmpty(gitBranch)' + +git diff --git a/build/_git.shade b/build/_git.shade new file mode 100644 index 0000000000..7495a598bb --- /dev/null +++ b/build/_git.shade @@ -0,0 +1,5 @@ + +default gitFolder='' + +exec program='git' commandline='${gitCommand}' workingdir='${gitFolder}' + diff --git a/build/_k-generate-projects.shade b/build/_k-generate-projects.shade new file mode 100644 index 0000000000..01af0cd018 --- /dev/null +++ b/build/_k-generate-projects.shade @@ -0,0 +1,330 @@ +use namespace="System" +use namespace="System.Collections.Generic" +use namespace="System.IO" +use namespace="System.Linq" +use namespace="System.Reflection" +use namespace="System.Text" +use namespace="System.Web.Script.Serialization" +use namespace="System.Xml.Linq" + +use assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" + +@{/* + +k-generate-projects + Generate csproj files from project.json + +solutionPath='' + Required. Path to the solution directory + +*/} + +content var='net45' include href='net45.txt' +content var='k10' include href='k10.txt' + +@{ + ProjectGenerator.Logger = Log; + + var templates = new Dictionary { + { "net45", net45 }, + { "k10", k10 } + }; + + ProjectGenerator.MakeProjects(solutionPath, templates); +} + +functions + @{ + class ProjectGenerator + { + public static Sake.Engine.Logging.ILog Logger { get; set; } + + static void Log(string message, params object[] args) + { + Logger.Info(String.Format(message, args)); + } + + static void Warn(string message, params object[] args) + { + Logger.Warn(String.Format(message, args)); + } + + public static void MakeProjects(string solutionPath, IDictionary templates) + { + var jsonFiles = GetJsonFiles(solutionPath); + var projectMapping = GetProjectMapping(solutionPath, jsonFiles); + + Log("Found {0} projects", jsonFiles.Length); + + foreach (var p in jsonFiles) + { + Log(p); + } + + foreach (var path in jsonFiles) + { + ProduceProjectFilesForProject(path, projectMapping, templates); + } + } + + private static string[] GetJsonFiles(string solutionPath) + { + Func getFiles = dir => + { + string path = Path.Combine(solutionPath, dir); + + if (!Directory.Exists(path)) + { + return new string[0]; + } + + return Directory.GetFiles(path, "project.json", SearchOption.AllDirectories); + }; + + return getFiles("src").Concat(getFiles("samples")) + .Concat(getFiles("test")) + .ToArray(); + } + + private static IDictionary GetProjectMapping(string solutionPath, string[] jsonFiles) + { + var dict = new Dictionary(); + + foreach (var path in jsonFiles) + { + string projectDir = Path.GetDirectoryName(path); + string projectName = projectDir.Substring(Path.GetDirectoryName(projectDir).Length).Trim(Path.DirectorySeparatorChar); + + // { + // "p1" : { "net45" : "id", "k10" : "pid1", path: "src\p1" }, + // "p2" : { "net45" : "id", "k10" : "pid2", path: "src\p2" } + // } + // + + string net45Project = Path.Combine(projectDir, GetProjectFileName(projectName, "net45")); + string k10Project = Path.Combine(projectDir, GetProjectFileName(projectName, "k10")); + + var configs = new Dictionary(); + configs["net45"] = GetProjectGuidFromFileOrCreateNew(net45Project); + configs["k10"] = GetProjectGuidFromFileOrCreateNew(k10Project); + configs["path"] = Path.GetDirectoryName(path.Substring(solutionPath.Length).TrimStart(Path.DirectorySeparatorChar)); + + dict[projectName] = configs; + } + + return dict; + } + + private static string GetProjectGuidFromFileOrCreateNew(string projectPath) + { + if (!File.Exists(projectPath)) + { + return Guid.NewGuid().ToString().ToUpper(); + } + + var projectGuid = XDocument.Parse(File.ReadAllText(projectPath)) + .Descendants() + .FirstOrDefault(e => e.Name.LocalName.Equals("ProjectGuid")); + + if (projectGuid == null) + { + return Guid.NewGuid().ToString(); + } + + return projectGuid.Value.Trim((char)'{', (char)'}'); + } + + private static void ProduceProjectFilesForProject(string jsonPath, + IDictionary projectMapping, + IDictionary templates) + { + var serializer = new JavaScriptSerializer(); + + string projectDir = Path.GetDirectoryName(jsonPath); + string projectName = projectDir.Substring(Path.GetDirectoryName(projectDir).Length).Trim(Path.DirectorySeparatorChar); + + Log("Generated projects for {0}", projectName); + + var jsonText = File.ReadAllText(jsonPath); + + var d = serializer.DeserializeObject(jsonText) as IDictionary; + var configs = GetObject(d, "configurations"); + var references = GetObject(d, "dependencies") ?? new Dictionary(); + + // Get the list of files + var filesString = String.Join(Environment.NewLine, + Directory.GetFiles(projectDir, "*.cs", SearchOption.AllDirectories) + .Select(p => p.Substring(projectDir.Length).Trim(Path.DirectorySeparatorChar)) + .Where(p => !p.StartsWith("obj")) + .Select(p => String.Format( + @"", p))); + + // Add the config file if it's there + if (File.Exists(Path.Combine(projectDir, "packages.config"))) + { + filesString += ""; + } + + var packageReferences = references.Where(r => !String.IsNullOrEmpty((string)r.Value)) + .ToDictionary(k => k.Key, k => (string)k.Value); + + var projectReferences = references.Where(r => String.IsNullOrEmpty((string)r.Value)) + .Select(r => r.Key) + .ToArray(); + + + // HACK: Assume the packages folder is 2 up from the projectDir + string packagesDir = Path.GetFullPath(Path.Combine(projectDir, "..", "..", "packages")); + + foreach (var targetFramework in configs.Keys) + { + string id = (string)GetObject(projectMapping, projectName)[targetFramework]; + + var template = templates[targetFramework] + .Replace("{ProjectGuid}", id) + .Replace("{Name}", projectName) + .Replace("{Files}", filesString) + .Replace("{ProjectReferences}", BuildProjectReferences(projectReferences, targetFramework, projectMapping)) + .Replace("{References}", BuildReferences(packageReferences, packagesDir, targetFramework, GetCandidates(targetFramework))); + + if (targetFramework.StartsWith("k")) + { + template = template.Replace("{CSharpTargetsPath}", GetProjectKTargets(packagesDir)); + } + + string output = Path.Combine(projectDir, GetProjectFileName(projectName, targetFramework)); + + Log("Generated {0}", output); + + File.WriteAllText(output, template); + } + } + + private static string GetProjectKTargets(string packagesDir) + { + var projectK = Directory.GetDirectories(packagesDir, "ProjectK*") + .Select(p => new { Path = p, Build = Int32.Parse(p.Substring(p.LastIndexOf('-') + 1)) }) + .OrderByDescending(p => p.Build) + .FirstOrDefault(); + + if (projectK == null) + { + Warn("Project K targets aren't installed"); + return ""; + } + + return Path.Combine("..", "..", projectK.Path.Substring(projectK.Path.IndexOf("packages")), "Framework\\K\\v1.0\\ProjectK.CSharp.targets"); + } + + private static string GetProjectFileName(string projectName, string config) + { + return projectName + "." + config + ".csproj"; + } + + private static string BuildProjectReferences(string[] projectReferences, string config, IDictionary projectMapping) + { + if (projectReferences.Length == 0) + { + return ""; + } + + var sb = new StringBuilder(); + + foreach (var reference in projectReferences) + { + var info = GetObject(projectMapping, reference); + + if (info == null) + { + Warn("No project reference found for {0}", reference); + continue; + } + + string projectFileName = GetProjectFileName(reference, config); + string path = Path.Combine((string)info["path"], projectFileName); + + sb.AppendFormat(@" + {{{1}}} + {2} + ", path, info[config], reference); + } + + return sb.ToString(); + } + + private static string[] GetCandidates(string config) + { + if (config == "net45") + { + return new[] { "net45", "net40", "net35", "net20" }; + } + + return new[] { config }; + } + + private static string BuildReferences(IDictionary references, string packagesDir, string configName, string[] candidates) + { + if (references.Count == 0) + { + return ""; + } + + Log("Building package references for {0}", configName); + + var sb = new StringBuilder(); + + foreach (var reference in references) + { + var version = (string)reference.Value; + + string pattern = version.IndexOf("*") != -1 ? reference.Key + "*" : reference.Key + "." + reference.Value; + + var packageDir = Directory.GetDirectories(packagesDir, pattern).FirstOrDefault(); + + if (packageDir == null) + { + Warn(reference.Key + " = " + version + " ==> UNRESOLVED"); + continue; + } + + Log(reference.Key + " = " + version + " ==> " + packageDir); + + var candidate = candidates.Select(c => Path.Combine(packageDir, "lib", c)) + .FirstOrDefault(Directory.Exists); + + if (candidate == null) + { + Warn("Unable to find package reference for {0}, target framework = {1}", reference.Key, configName); + continue; + } + + var dlls = Directory.EnumerateFiles(candidate, "*.dll") + .Distinct() + .Where(File.Exists) + .ToList(); + + foreach (var dllPath in dlls) + { + sb.AppendFormat(@" + + False + ..\..\{1} + ", AssemblyName.GetAssemblyName(dllPath).FullName, dllPath.Substring(dllPath.IndexOf("packages"))); + } + } + + return sb.ToString(); + } + + private static IDictionary GetObject(IDictionary obj, string key) + { + object value; + if (obj.TryGetValue(key, out value)) + { + return value as IDictionary; + } + + return null; + } + } + } diff --git a/build/_k-standard-goals.shade b/build/_k-standard-goals.shade index 92dd803eb8..b6a38ff7dd 100644 --- a/build/_k-standard-goals.shade +++ b/build/_k-standard-goals.shade @@ -13,6 +13,7 @@ default TEST_DIR='${Path.Combine(TARGET_DIR, "test")}' #target-default target='default' k-restore + k-generate-projects solutionPath='${BASE_DIR}' #target-dir-clean target='clean' directory delete="${TARGET_DIR}" diff --git a/build/k10.txt b/build/k10.txt new file mode 100644 index 0000000000..60c669f855 --- /dev/null +++ b/build/k10.txt @@ -0,0 +1,50 @@ + + + + + Debug + AnyCPU + {{ProjectGuid}} + Library + Properties + {Name} + {Name} + v4.5 + 512 + obj/K + + + AnyCPU + true + full + false + bin\Debug\K + DEBUG;TRACE;K10 + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\K + TRACE;K10 + prompt + 4 + + + {Files} + + + + {ProjectReferences} + + + + \ No newline at end of file diff --git a/build/net45.txt b/build/net45.txt new file mode 100644 index 0000000000..8d2e271f7b --- /dev/null +++ b/build/net45.txt @@ -0,0 +1,57 @@ + + + + + Debug + AnyCPU + {{ProjectGuid}} + Library + Properties + {Name} + {Name} + v4.5 + 512 + obj/net45 + + + AnyCPU + true + full + false + bin\Debug\net45 + DEBUG;TRACE;NET45 + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\net45 + TRACE;NET45 + prompt + 4 + + + + + + + {References} + + + {Files} + + + + {ProjectReferences} + + + + \ No newline at end of file diff --git a/samples/MvcSample/Home2Controller.cs b/samples/MvcSample/Home2Controller.cs index ac417bc590..db272a3519 100644 --- a/samples/MvcSample/Home2Controller.cs +++ b/samples/MvcSample/Home2Controller.cs @@ -1,6 +1,5 @@ -using System.Net.Http; +using Microsoft.AspNet.Abstractions; using Microsoft.AspNet.Mvc; -using Microsoft.Owin; namespace MvcSample { @@ -13,7 +12,7 @@ namespace MvcSample public IActionResultHelper Result { get; private set; } - public IOwinContext Context { get; private set; } + public HttpContext Context { get; private set; } public string Index() { @@ -35,7 +34,7 @@ namespace MvcSample public void Raw() { - Context.Response.Write("Hello World raw"); + Context.Response.WriteAsync("Hello World raw"); } } } \ No newline at end of file diff --git a/samples/MvcSample/HomeController.cs b/samples/MvcSample/HomeController.cs index 1af68b0d62..d9d6433504 100644 --- a/samples/MvcSample/HomeController.cs +++ b/samples/MvcSample/HomeController.cs @@ -1,5 +1,4 @@ -using System.Net.Http; -using Microsoft.AspNet.Mvc; +using Microsoft.AspNet.Mvc; using Microsoft.Owin; namespace MvcSample @@ -26,15 +25,7 @@ namespace MvcSample public void Raw() { - Context.Response.Write("Hello World raw"); - } - - public HttpResponseMessage Hello2() - { - var responseMessage = new HttpResponseMessage(); - responseMessage.Content = new StringContent("Hello World"); - - return responseMessage; + Context.Response.WriteAsync("Hello World raw"); } public User User() diff --git a/samples/MvcSample/MvcSample.csproj b/samples/MvcSample/MvcSample.csproj index badfe1e674..9f670df80a 100644 --- a/samples/MvcSample/MvcSample.csproj +++ b/samples/MvcSample/MvcSample.csproj @@ -39,32 +39,24 @@ 4 + + False + ..\..\packages\Microsoft.AspNet.Abstractions.0.1-alpha-t140124091736\lib\net45\Microsoft.AspNet.Abstractions.dll + False ..\..\packages\Microsoft.AspNet.DependencyInjection.0.1-alpha-t140123020341\lib\net45\Microsoft.AspNet.DependencyInjection.dll - + False - ..\..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll - - - False - ..\..\packages\Microsoft.Owin.Diagnostics.2.1.0\lib\net40\Microsoft.Owin.Diagnostics.dll - - - False - ..\..\packages\Microsoft.Owin.FileSystems.2.1.0\lib\net40\Microsoft.Owin.FileSystems.dll + ..\..\packages\Microsoft.AspNet.FileSystems.0.1-alpha-t140124092009\lib\net45\Microsoft.AspNet.FileSystems.dll False ..\..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll - - ..\..\packages\Owin.1.0\lib\net40\Owin.dll - - @@ -76,16 +68,6 @@ - - - {224a14d0-eca7-441c-ae89-b6e66a57ef9b} - Microsoft.AspNet.Mvc.Razor - - - {2a0c26f1-0240-4ae1-ae00-4691c291b122} - Microsoft.AspNet.Mvc - - @@ -118,9 +100,6 @@ False - - - diff --git a/samples/MvcSample/MvcSample.k10.csproj b/samples/MvcSample/MvcSample.k10.csproj new file mode 100644 index 0000000000..99c5948653 --- /dev/null +++ b/samples/MvcSample/MvcSample.k10.csproj @@ -0,0 +1,61 @@ + + + + + Debug + AnyCPU + {A7D7CD66-A407-4144-8AB7-07F895F87137} + Library + Properties + MvcSample + MvcSample + v4.5 + 512 + obj/K + + + AnyCPU + true + full + false + bin\Debug\K + DEBUG;TRACE;K10 + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\K + TRACE;K10 + prompt + 4 + + + + + + + + + + + + + {BA88E212-5889-48DC-823F-A3A67DDEF123} + Microsoft.AspNet.Mvc + + {0D2C8C3D-AFC3-4E1F-A6D8-9F690EE5E063} + Microsoft.AspNet.Mvc.Razor + + + + + \ No newline at end of file diff --git a/samples/MvcSample/MvcSample.net45.csproj b/samples/MvcSample/MvcSample.net45.csproj new file mode 100644 index 0000000000..c252d0f4c6 --- /dev/null +++ b/samples/MvcSample/MvcSample.net45.csproj @@ -0,0 +1,76 @@ + + + + + Debug + AnyCPU + {501817DD-8143-4A50-888D-99896A82CD12} + Library + Properties + MvcSample + MvcSample + v4.5 + 512 + obj/net45 + + + AnyCPU + true + full + false + bin\Debug\net45 + DEBUG;TRACE;NET45 + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\net45 + TRACE;NET45 + prompt + 4 + + + + + + + + + False + ..\..\packages\Microsoft.AspNet.FileSystems.0.1-alpha-t140124092009\lib\net45\Microsoft.AspNet.FileSystems.dll + + + False + ..\..\packages\Microsoft.AspNet.Abstractions.0.1-alpha-t140124091736\lib\net45\Microsoft.AspNet.Abstractions.dll + + + + + + + + + + + + + + {64BD92BA-F313-496C-ACE6-B9C4C10C420E} + Microsoft.AspNet.Mvc + + {365CA5C6-037D-4E6E-AF05-F5FA42E024EB} + Microsoft.AspNet.Mvc.Razor + + + + + \ No newline at end of file diff --git a/samples/MvcSample/Startup.cs b/samples/MvcSample/Startup.cs index 2a768bf67f..e754bf689e 100644 --- a/samples/MvcSample/Startup.cs +++ b/samples/MvcSample/Startup.cs @@ -1,4 +1,5 @@ -using System; +#if NET45 +using System; using System.Threading.Tasks; using Microsoft.AspNet.Mvc; using Microsoft.AspNet.Mvc.Razor; @@ -39,3 +40,4 @@ namespace MvcSample } } } +#endif \ No newline at end of file diff --git a/samples/MvcSample/packages.config b/samples/MvcSample/packages.config index 23f673d0c3..474afa5a67 100644 --- a/samples/MvcSample/packages.config +++ b/samples/MvcSample/packages.config @@ -1,10 +1,7 @@  + - - - + - - \ No newline at end of file diff --git a/samples/MvcSample/project.json b/samples/MvcSample/project.json new file mode 100644 index 0000000000..6cd2088e65 --- /dev/null +++ b/samples/MvcSample/project.json @@ -0,0 +1,13 @@ +{ + "version" : "0.1-alpha-*", + "dependencies": { + "Microsoft.AspNet.FileSystems": "0.1-alpha-*", + "Microsoft.AspNet.Abstractions": "0.1-alpha-*", + "Microsoft.AspNet.Mvc" : "", + "Microsoft.AspNet.Mvc.Razor" : "" + }, + "configurations": { + "net45": { }, + "k10" : { } + } +} \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc.Forms/Microsoft.AspNet.Mvc.Forms.csproj b/src/Microsoft.AspNet.Mvc.Forms/Microsoft.AspNet.Mvc.Forms.csproj index 1e982f8f48..64c039a056 100644 --- a/src/Microsoft.AspNet.Mvc.Forms/Microsoft.AspNet.Mvc.Forms.csproj +++ b/src/Microsoft.AspNet.Mvc.Forms/Microsoft.AspNet.Mvc.Forms.csproj @@ -30,12 +30,9 @@ 4 - + False - ..\..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll - - - ..\..\packages\Owin.1.0\lib\net40\Owin.dll + ..\..\packages\Microsoft.AspNet.Abstractions.0.1-alpha-t140124091736\lib\net45\Microsoft.AspNet.Abstractions.dll @@ -56,12 +53,6 @@ - - - {2a0c26f1-0240-4ae1-ae00-4691c291b122} - Microsoft.AspNet.Mvc - - diff --git a/src/Microsoft.AspNet.Mvc.Forms/Microsoft.AspNet.Mvc.Forms.k10.csproj b/src/Microsoft.AspNet.Mvc.Forms/Microsoft.AspNet.Mvc.Forms.k10.csproj new file mode 100644 index 0000000000..6b55cb89da --- /dev/null +++ b/src/Microsoft.AspNet.Mvc.Forms/Microsoft.AspNet.Mvc.Forms.k10.csproj @@ -0,0 +1,62 @@ + + + + + Debug + AnyCPU + {24947215-86AB-4DD0-B94E-88B1EC4DC877} + Library + Properties + Microsoft.AspNet.Mvc.Forms + Microsoft.AspNet.Mvc.Forms + v4.5 + 512 + obj/K + + + AnyCPU + true + full + false + bin\Debug\K + DEBUG;TRACE;K10 + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\K + TRACE;K10 + prompt + 4 + + + + + + + + + + + + + + + + + {BA88E212-5889-48DC-823F-A3A67DDEF123} + Microsoft.AspNet.Mvc + + + + + \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc.Forms/Microsoft.AspNet.Mvc.Forms.net45.csproj b/src/Microsoft.AspNet.Mvc.Forms/Microsoft.AspNet.Mvc.Forms.net45.csproj new file mode 100644 index 0000000000..81b790c0aa --- /dev/null +++ b/src/Microsoft.AspNet.Mvc.Forms/Microsoft.AspNet.Mvc.Forms.net45.csproj @@ -0,0 +1,73 @@ + + + + + Debug + AnyCPU + {28AA31B2-6504-432D-8599-1501FE0B100A} + Library + Properties + Microsoft.AspNet.Mvc.Forms + Microsoft.AspNet.Mvc.Forms + v4.5 + 512 + obj/net45 + + + AnyCPU + true + full + false + bin\Debug\net45 + DEBUG;TRACE;NET45 + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\net45 + TRACE;NET45 + prompt + 4 + + + + + + + + + False + ..\..\packages\Microsoft.AspNet.Abstractions.0.1-alpha-t140124091736\lib\net45\Microsoft.AspNet.Abstractions.dll + + + + + + + + + + + + + + + + + + {64BD92BA-F313-496C-ACE6-B9C4C10C420E} + Microsoft.AspNet.Mvc + + + + + \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc.Forms/packages.config b/src/Microsoft.AspNet.Mvc.Forms/packages.config index fb47f58ced..9e558cc8df 100644 --- a/src/Microsoft.AspNet.Mvc.Forms/packages.config +++ b/src/Microsoft.AspNet.Mvc.Forms/packages.config @@ -1,5 +1,4 @@  - - + \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc.Forms/project.json b/src/Microsoft.AspNet.Mvc.Forms/project.json new file mode 100644 index 0000000000..6c48daf311 --- /dev/null +++ b/src/Microsoft.AspNet.Mvc.Forms/project.json @@ -0,0 +1,11 @@ +{ + "version" : "0.1-alpha-*", + "dependencies": { + "Microsoft.AspNet.Abstractions": "0.1-alpha-*", + "Microsoft.AspNet.Mvc": "" + }, + "configurations": { + "net45": { }, + "k10" : { } + } +} \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc.Razor/Microsoft.AspNet.Mvc.Razor.csproj b/src/Microsoft.AspNet.Mvc.Razor/Microsoft.AspNet.Mvc.Razor.csproj index 31315176eb..f8592f37b0 100644 --- a/src/Microsoft.AspNet.Mvc.Razor/Microsoft.AspNet.Mvc.Razor.csproj +++ b/src/Microsoft.AspNet.Mvc.Razor/Microsoft.AspNet.Mvc.Razor.csproj @@ -30,21 +30,17 @@ 4 + + False + ..\..\packages\Microsoft.AspNet.Abstractions.0.1-alpha-t140124091736\lib\net45\Microsoft.AspNet.Abstractions.dll + False ..\..\packages\Microsoft.AspNet.DependencyInjection.0.1-alpha-t140123020341\lib\net45\Microsoft.AspNet.DependencyInjection.dll - + False - ..\..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll - - - False - ..\..\packages\Microsoft.Owin.FileSystems.2.1.0\lib\net40\Microsoft.Owin.FileSystems.dll - - - False - ..\..\packages\Owin.1.0\lib\net40\Owin.dll + ..\..\packages\Microsoft.AspNet.FileSystems.0.1-alpha-t140124092009\lib\net45\Microsoft.AspNet.FileSystems.dll @@ -77,16 +73,6 @@ - - - {ab4cdc03-176c-460f-8955-4202f6d53fed} - Microsoft.AspNet.Mvc.Html - - - {2a0c26f1-0240-4ae1-ae00-4691c291b122} - Microsoft.AspNet.Mvc - - diff --git a/src/Microsoft.AspNet.Mvc.Razor/Microsoft.AspNet.Mvc.Razor.k10.csproj b/src/Microsoft.AspNet.Mvc.Razor/Microsoft.AspNet.Mvc.Razor.k10.csproj new file mode 100644 index 0000000000..8f0cbb1741 --- /dev/null +++ b/src/Microsoft.AspNet.Mvc.Razor/Microsoft.AspNet.Mvc.Razor.k10.csproj @@ -0,0 +1,76 @@ + + + + + Debug + AnyCPU + {0D2C8C3D-AFC3-4E1F-A6D8-9F690EE5E063} + Library + Properties + Microsoft.AspNet.Mvc.Razor + Microsoft.AspNet.Mvc.Razor + v4.5 + 512 + obj/K + + + AnyCPU + true + full + false + bin\Debug\K + DEBUG;TRACE;K10 + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\K + TRACE;K10 + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + {BA88E212-5889-48DC-823F-A3A67DDEF123} + Microsoft.AspNet.Mvc + + {24947215-86AB-4DD0-B94E-88B1EC4DC877} + Microsoft.AspNet.Mvc.Forms + + + + + \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc.Razor/Microsoft.AspNet.Mvc.Razor.net45.csproj b/src/Microsoft.AspNet.Mvc.Razor/Microsoft.AspNet.Mvc.Razor.net45.csproj new file mode 100644 index 0000000000..b758b106bd --- /dev/null +++ b/src/Microsoft.AspNet.Mvc.Razor/Microsoft.AspNet.Mvc.Razor.net45.csproj @@ -0,0 +1,95 @@ + + + + + Debug + AnyCPU + {365CA5C6-037D-4E6E-AF05-F5FA42E024EB} + Library + Properties + Microsoft.AspNet.Mvc.Razor + Microsoft.AspNet.Mvc.Razor + v4.5 + 512 + obj/net45 + + + AnyCPU + true + full + false + bin\Debug\net45 + DEBUG;TRACE;NET45 + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\net45 + TRACE;NET45 + prompt + 4 + + + + + + + + + False + ..\..\packages\Microsoft.AspNet.FileSystems.0.1-alpha-t140124092009\lib\net45\Microsoft.AspNet.FileSystems.dll + + + False + ..\..\packages\Microsoft.AspNet.Abstractions.0.1-alpha-t140124091736\lib\net45\Microsoft.AspNet.Abstractions.dll + + + False + ..\..\packages\Microsoft.AspNet.Razor.3.1.0\lib\net45\System.Web.Razor.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {64BD92BA-F313-496C-ACE6-B9C4C10C420E} + Microsoft.AspNet.Mvc + + {28AA31B2-6504-432D-8599-1501FE0B100A} + Microsoft.AspNet.Mvc.Forms + + + + + \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc.Razor/Razor/MvcCSharpRazorCodeParser.cs b/src/Microsoft.AspNet.Mvc.Razor/Razor/MvcCSharpRazorCodeParser.cs index 8a1676f041..2974c7d921 100644 --- a/src/Microsoft.AspNet.Mvc.Razor/Razor/MvcCSharpRazorCodeParser.cs +++ b/src/Microsoft.AspNet.Mvc.Razor/Razor/MvcCSharpRazorCodeParser.cs @@ -1,4 +1,5 @@ -// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. +#if NET45 +// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. using System; using System.Globalization; @@ -69,3 +70,4 @@ namespace Microsoft.AspNet.Mvc.Razor } } } +#endif \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc.Razor/RazorView.cs b/src/Microsoft.AspNet.Mvc.Razor/RazorView.cs index 9bbad66a40..3b399aafa1 100644 --- a/src/Microsoft.AspNet.Mvc.Razor/RazorView.cs +++ b/src/Microsoft.AspNet.Mvc.Razor/RazorView.cs @@ -4,14 +4,14 @@ using System.IO; using System.Net; using System.Text; using System.Threading.Tasks; -using Microsoft.Owin; using Microsoft.AspNet.DependencyInjection; +using Microsoft.AspNet.Abstractions; namespace Microsoft.AspNet.Mvc.Razor { public abstract class RazorView : IView { - public IOwinContext Context { get; set; } + public HttpContext Context { get; set; } public string Layout { get; set; } diff --git a/src/Microsoft.AspNet.Mvc.Razor/packages.config b/src/Microsoft.AspNet.Mvc.Razor/packages.config index bea2427672..03e5582958 100644 --- a/src/Microsoft.AspNet.Mvc.Razor/packages.config +++ b/src/Microsoft.AspNet.Mvc.Razor/packages.config @@ -1,8 +1,7 @@  + + - - - \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc.Razor/project.json b/src/Microsoft.AspNet.Mvc.Razor/project.json index 970da015af..8136583267 100644 --- a/src/Microsoft.AspNet.Mvc.Razor/project.json +++ b/src/Microsoft.AspNet.Mvc.Razor/project.json @@ -1,10 +1,11 @@ { + "version" : "0.1-alpha-*", "dependencies": { - "Owin": "1.0", - "Newtonsoft.Json": "4.5.11", - "Microsoft.Owin": "2.1.0", - "Microsoft.Owin.FileSystems": "2.1.0", - "Microsoft.AspNet.Mvc.Razor" : "" + "Microsoft.AspNet.FileSystems": "0.1-alpha-*", + "Microsoft.AspNet.Abstractions": "0.1-alpha-*", + "Microsoft.AspNet.Razor" : "3.1.0", + "Microsoft.AspNet.Mvc" : "", + "Microsoft.AspNet.Mvc.Forms" : "" }, "configurations": { "net45": { }, diff --git a/src/Microsoft.AspNet.Mvc/ActionInvokerFactory.cs b/src/Microsoft.AspNet.Mvc/ActionInvokerFactory.cs index afd8d14a84..94e37107ef 100644 --- a/src/Microsoft.AspNet.Mvc/ActionInvokerFactory.cs +++ b/src/Microsoft.AspNet.Mvc/ActionInvokerFactory.cs @@ -1,6 +1,5 @@  using Microsoft.AspNet.Mvc.Routing; -using Microsoft.Owin; namespace Microsoft.AspNet.Mvc { diff --git a/src/Microsoft.AspNet.Mvc/ActionResults/ContentResult.cs b/src/Microsoft.AspNet.Mvc/ActionResults/ContentResult.cs index 8b69b5a0e8..6b6c987752 100644 --- a/src/Microsoft.AspNet.Mvc/ActionResults/ContentResult.cs +++ b/src/Microsoft.AspNet.Mvc/ActionResults/ContentResult.cs @@ -1,7 +1,7 @@ using System; using System.Text; using System.Threading.Tasks; -using Microsoft.Owin; +using Microsoft.AspNet.Abstractions; namespace Microsoft.AspNet.Mvc { @@ -20,7 +20,7 @@ namespace Microsoft.AspNet.Mvc throw new ArgumentNullException("context"); } - IOwinResponse response = context.HttpContext.Response; + HttpResponse response = context.HttpContext.Response; if (!String.IsNullOrEmpty(ContentType)) { diff --git a/src/Microsoft.AspNet.Mvc/ActionResults/NoContentResult.cs b/src/Microsoft.AspNet.Mvc/ActionResults/NoContentResult.cs index 4ba37f566e..90997bddc9 100644 --- a/src/Microsoft.AspNet.Mvc/ActionResults/NoContentResult.cs +++ b/src/Microsoft.AspNet.Mvc/ActionResults/NoContentResult.cs @@ -1,8 +1,8 @@ using System; using System.Text; using System.Threading.Tasks; -using Microsoft.Owin; using System.Net; +using Microsoft.AspNet.Abstractions; namespace Microsoft.AspNet.Mvc { @@ -15,7 +15,7 @@ namespace Microsoft.AspNet.Mvc throw new ArgumentNullException("context"); } - IOwinResponse response = context.HttpContext.Response; + HttpResponse response = context.HttpContext.Response; response.StatusCode = (int)HttpStatusCode.NoContent; diff --git a/src/Microsoft.AspNet.Mvc/Controller.cs b/src/Microsoft.AspNet.Mvc/Controller.cs index dfcf3be57b..fa64596870 100644 --- a/src/Microsoft.AspNet.Mvc/Controller.cs +++ b/src/Microsoft.AspNet.Mvc/Controller.cs @@ -1,4 +1,4 @@ -using Microsoft.Owin; +using Microsoft.AspNet.Abstractions; namespace Microsoft.AspNet.Mvc { @@ -12,7 +12,7 @@ namespace Microsoft.AspNet.Mvc public IActionResultHelper Result { get; private set; } - public IOwinContext Context { get; set; } + public HttpContext Context { get; set; } public ViewData ViewData { get; set; } diff --git a/src/Microsoft.AspNet.Mvc/ControllerActionInvoker.cs b/src/Microsoft.AspNet.Mvc/ControllerActionInvoker.cs index 4ac79000ca..5cc017740f 100644 --- a/src/Microsoft.AspNet.Mvc/ControllerActionInvoker.cs +++ b/src/Microsoft.AspNet.Mvc/ControllerActionInvoker.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Threading.Tasks; +using Microsoft.AspNet.Abstractions; using Microsoft.AspNet.DependencyInjection; -using Microsoft.Owin; namespace Microsoft.AspNet.Mvc { @@ -16,8 +16,8 @@ namespace Microsoft.AspNet.Mvc private readonly IServiceProvider _serviceProvider; public ControllerActionInvoker(RequestContext requestContext, - ControllerBasedActionDescriptor descriptor, - IActionResultFactory actionResultFactory, + ControllerBasedActionDescriptor descriptor, + IActionResultFactory actionResultFactory, IServiceProvider serviceProvider) { _requestContext = requestContext; @@ -61,14 +61,10 @@ namespace Microsoft.AspNet.Mvc { if (prop.Name == "Context") { - if (prop.PropertyType == typeof(IOwinContext)) + if (prop.PropertyType == typeof(HttpContext)) { prop.SetValue(controller, _requestContext.HttpContext); } - else if (prop.PropertyType == typeof(IDictionary)) - { - prop.SetValue(controller, _requestContext.HttpContext.Environment); - } } } diff --git a/src/Microsoft.AspNet.Mvc/DefaultControllerFactory.cs b/src/Microsoft.AspNet.Mvc/DefaultControllerFactory.cs index 4258cff5e3..a56801db73 100644 --- a/src/Microsoft.AspNet.Mvc/DefaultControllerFactory.cs +++ b/src/Microsoft.AspNet.Mvc/DefaultControllerFactory.cs @@ -1,7 +1,7 @@ using System; using System.Linq; +using Microsoft.AspNet.Abstractions; using Microsoft.AspNet.DependencyInjection; -using Microsoft.Owin; namespace Microsoft.AspNet.Mvc { @@ -14,7 +14,7 @@ namespace Microsoft.AspNet.Mvc _serviceProvider = serviceProvider; } - public object CreateController(IOwinContext context, string controllerName) + public object CreateController(HttpContext context, string controllerName) { if (!controllerName.EndsWith("Controller", StringComparison.OrdinalIgnoreCase)) { diff --git a/src/Microsoft.AspNet.Mvc/IActionDescriptorProvider.cs b/src/Microsoft.AspNet.Mvc/IActionDescriptorProvider.cs index e47e919e48..0eab785a57 100644 --- a/src/Microsoft.AspNet.Mvc/IActionDescriptorProvider.cs +++ b/src/Microsoft.AspNet.Mvc/IActionDescriptorProvider.cs @@ -1,5 +1,4 @@ using Microsoft.AspNet.Mvc.Routing; -using Microsoft.Owin; namespace Microsoft.AspNet.Mvc { diff --git a/src/Microsoft.AspNet.Mvc/IActionInvokerFactory.cs b/src/Microsoft.AspNet.Mvc/IActionInvokerFactory.cs index 9cb51657d1..53a9d6385e 100644 --- a/src/Microsoft.AspNet.Mvc/IActionInvokerFactory.cs +++ b/src/Microsoft.AspNet.Mvc/IActionInvokerFactory.cs @@ -1,6 +1,5 @@  using Microsoft.AspNet.Mvc.Routing; -using Microsoft.Owin; namespace Microsoft.AspNet.Mvc { diff --git a/src/Microsoft.AspNet.Mvc/IActionResultFactory.cs b/src/Microsoft.AspNet.Mvc/IActionResultFactory.cs index ab16c71143..86f8c14ba1 100644 --- a/src/Microsoft.AspNet.Mvc/IActionResultFactory.cs +++ b/src/Microsoft.AspNet.Mvc/IActionResultFactory.cs @@ -1,5 +1,4 @@ -using Microsoft.Owin; -using System; +using System; namespace Microsoft.AspNet.Mvc { diff --git a/src/Microsoft.AspNet.Mvc/IControllerFactory.cs b/src/Microsoft.AspNet.Mvc/IControllerFactory.cs index e6c8caecc2..9d212af315 100644 --- a/src/Microsoft.AspNet.Mvc/IControllerFactory.cs +++ b/src/Microsoft.AspNet.Mvc/IControllerFactory.cs @@ -1,10 +1,10 @@ -using Microsoft.Owin; +using Microsoft.AspNet.Abstractions; namespace Microsoft.AspNet.Mvc { public interface IControllerFactory { - object CreateController(IOwinContext context, string controllerName); + object CreateController(HttpContext context, string controllerName); void ReleaseController(object controller); } diff --git a/src/Microsoft.AspNet.Mvc/Microsoft.AspNet.Mvc.csproj b/src/Microsoft.AspNet.Mvc/Microsoft.AspNet.Mvc.csproj index 34ec723745..7b3a766217 100644 --- a/src/Microsoft.AspNet.Mvc/Microsoft.AspNet.Mvc.csproj +++ b/src/Microsoft.AspNet.Mvc/Microsoft.AspNet.Mvc.csproj @@ -30,20 +30,17 @@ 4 + + False + ..\..\packages\Microsoft.AspNet.Abstractions.0.1-alpha-t140124091736\lib\net45\Microsoft.AspNet.Abstractions.dll + False ..\..\packages\Microsoft.AspNet.DependencyInjection.0.1-alpha-t140123020341\lib\net45\Microsoft.AspNet.DependencyInjection.dll - - False - ..\..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll - ..\..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll - - ..\..\packages\Owin.1.0\lib\net40\Owin.dll - diff --git a/src/Microsoft.AspNet.Mvc/Microsoft.AspNet.Mvc.k10.csproj b/src/Microsoft.AspNet.Mvc/Microsoft.AspNet.Mvc.k10.csproj new file mode 100644 index 0000000000..62b9216dd6 --- /dev/null +++ b/src/Microsoft.AspNet.Mvc/Microsoft.AspNet.Mvc.k10.csproj @@ -0,0 +1,86 @@ + + + + + Debug + AnyCPU + {BA88E212-5889-48DC-823F-A3A67DDEF123} + Library + Properties + Microsoft.AspNet.Mvc + Microsoft.AspNet.Mvc + v4.5 + 512 + obj/K + + + AnyCPU + true + full + false + bin\Debug\K + DEBUG;TRACE;K10 + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\K + TRACE;K10 + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc/Microsoft.AspNet.Mvc.net45.csproj b/src/Microsoft.AspNet.Mvc/Microsoft.AspNet.Mvc.net45.csproj new file mode 100644 index 0000000000..b18f236162 --- /dev/null +++ b/src/Microsoft.AspNet.Mvc/Microsoft.AspNet.Mvc.net45.csproj @@ -0,0 +1,105 @@ + + + + + Debug + AnyCPU + {64BD92BA-F313-496C-ACE6-B9C4C10C420E} + Library + Properties + Microsoft.AspNet.Mvc + Microsoft.AspNet.Mvc + v4.5 + 512 + obj/net45 + + + AnyCPU + true + full + false + bin\Debug\net45 + DEBUG;TRACE;NET45 + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\net45 + TRACE;NET45 + prompt + 4 + + + + + + + + + False + ..\..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll + + + False + ..\..\packages\Microsoft.AspNet.DependencyInjection.0.1-alpha-t140123020341\lib\net45\Microsoft.AspNet.DependencyInjection.dll + + + False + ..\..\packages\Microsoft.AspNet.Abstractions.0.1-alpha-t140124091736\lib\net45\Microsoft.AspNet.Abstractions.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc/MvcHandler.cs b/src/Microsoft.AspNet.Mvc/MvcHandler.cs index 6561f1df67..0b35e285a1 100644 --- a/src/Microsoft.AspNet.Mvc/MvcHandler.cs +++ b/src/Microsoft.AspNet.Mvc/MvcHandler.cs @@ -1,8 +1,8 @@ using System; using System.Threading.Tasks; using Microsoft.AspNet.Mvc.Routing; -using Microsoft.Owin; using Microsoft.AspNet.DependencyInjection; +using Microsoft.AspNet.Abstractions; namespace Microsoft.AspNet.Mvc { @@ -15,7 +15,7 @@ namespace Microsoft.AspNet.Mvc _serviceProvider = serviceProvider; } - public Task ExecuteAsync(IOwinContext context, IRouteData routeData) + public Task ExecuteAsync(HttpContext context, IRouteData routeData) { var requestContext = new RequestContext(context, routeData); diff --git a/src/Microsoft.AspNet.Mvc/RequestContext.cs b/src/Microsoft.AspNet.Mvc/RequestContext.cs index ec3429d9cc..f58fb16115 100644 --- a/src/Microsoft.AspNet.Mvc/RequestContext.cs +++ b/src/Microsoft.AspNet.Mvc/RequestContext.cs @@ -1,12 +1,12 @@ using System; +using Microsoft.AspNet.Abstractions; using Microsoft.AspNet.Mvc.Routing; -using Microsoft.Owin; namespace Microsoft.AspNet.Mvc { public class RequestContext { - public RequestContext(IOwinContext context, IRouteData routeData) + public RequestContext(HttpContext context, IRouteData routeData) { if (context == null) { @@ -24,6 +24,6 @@ namespace Microsoft.AspNet.Mvc public virtual IRouteData RouteData { get; set; } - public virtual IOwinContext HttpContext { get; set; } + public virtual HttpContext HttpContext { get; set; } } } diff --git a/src/Microsoft.AspNet.Mvc/Routing/IRouteData.cs b/src/Microsoft.AspNet.Mvc/Routing/IRouteData.cs index 5c315710c4..3f18ae5675 100644 --- a/src/Microsoft.AspNet.Mvc/Routing/IRouteData.cs +++ b/src/Microsoft.AspNet.Mvc/Routing/IRouteData.cs @@ -1,5 +1,5 @@ using System; -using Microsoft.Owin; +using Microsoft.AspNet.Abstractions; namespace Microsoft.AspNet.Mvc.Routing { @@ -13,7 +13,7 @@ namespace Microsoft.AspNet.Mvc.Routing { private readonly string[] _parts; - public FakeRouteData(IOwinContext context) + public FakeRouteData(HttpContext context) { _parts = (context.Request.PathBase + context.Request.Path).Value.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries); } diff --git a/src/Microsoft.AspNet.Mvc/View/ViewContext.cs b/src/Microsoft.AspNet.Mvc/View/ViewContext.cs index 21ef8c8f49..06b4ac6bfc 100644 --- a/src/Microsoft.AspNet.Mvc/View/ViewContext.cs +++ b/src/Microsoft.AspNet.Mvc/View/ViewContext.cs @@ -1,12 +1,12 @@ using System; +using Microsoft.AspNet.Abstractions; using Microsoft.AspNet.Mvc.Routing; -using Microsoft.Owin; namespace Microsoft.AspNet.Mvc { public class ViewContext : RequestContext { - public ViewContext(IOwinContext context, IRouteData routeData, ViewData viewData) : + public ViewContext(HttpContext context, IRouteData routeData, ViewData viewData) : base(context, routeData) { ViewData = viewData; diff --git a/src/Microsoft.AspNet.Mvc/packages.config b/src/Microsoft.AspNet.Mvc/packages.config index 2f0accdd71..5de85cf880 100644 --- a/src/Microsoft.AspNet.Mvc/packages.config +++ b/src/Microsoft.AspNet.Mvc/packages.config @@ -1,7 +1,6 @@  + - - \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc/project.json b/src/Microsoft.AspNet.Mvc/project.json index 92a0a7bb92..6286117a30 100644 --- a/src/Microsoft.AspNet.Mvc/project.json +++ b/src/Microsoft.AspNet.Mvc/project.json @@ -1,9 +1,9 @@ { + "version" : "0.1-alpha-*", "dependencies": { - "Owin": "1.0", "Newtonsoft.Json": "4.5.11", - "Microsoft.Owin": "2.1.0", - "Microsoft.AspNet.DependencyInjection" : "0.1-alpha-*" + "Microsoft.AspNet.DependencyInjection" : "0.1-alpha-*", + "Microsoft.AspNet.Abstractions": "0.1-alpha-*" }, "configurations": { "net45": { },