diff --git a/Mvc.NoFun.sln b/Mvc.NoFun.sln
index 8a366513b6..e71d6cb895 100644
--- a/Mvc.NoFun.sln
+++ b/Mvc.NoFun.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
-VisualStudioVersion = 14.0.22604.0
+VisualStudioVersion = 14.0.22609.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{DAAE4C74-D06F-4874-A166-33305D2643CE}"
EndProject
@@ -56,6 +56,8 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Mvc.Xml.Te
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.PageExecutionInstrumentation.Interfaces", "src\Microsoft.AspNet.PageExecutionInstrumentation.Interfaces\Microsoft.AspNet.PageExecutionInstrumentation.Interfaces.kproj", "{4DA2D7C1-A7B6-4C01-B57D-89E6EA4609DE}"
EndProject
+Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNet.Mvc.Common.Test", "test\Microsoft.AspNet.Mvc.Common.Test\Microsoft.AspNet.Mvc.Common.Test.kproj", "{0449D6D2-BE1B-4E29-8E1B-444420802C03}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -290,6 +292,18 @@ Global
{4DA2D7C1-A7B6-4C01-B57D-89E6EA4609DE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{4DA2D7C1-A7B6-4C01-B57D-89E6EA4609DE}.Release|x86.ActiveCfg = Release|Any CPU
{4DA2D7C1-A7B6-4C01-B57D-89E6EA4609DE}.Release|x86.Build.0 = Release|Any CPU
+ {0449D6D2-BE1B-4E29-8E1B-444420802C03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0449D6D2-BE1B-4E29-8E1B-444420802C03}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0449D6D2-BE1B-4E29-8E1B-444420802C03}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {0449D6D2-BE1B-4E29-8E1B-444420802C03}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {0449D6D2-BE1B-4E29-8E1B-444420802C03}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0449D6D2-BE1B-4E29-8E1B-444420802C03}.Debug|x86.Build.0 = Debug|Any CPU
+ {0449D6D2-BE1B-4E29-8E1B-444420802C03}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0449D6D2-BE1B-4E29-8E1B-444420802C03}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0449D6D2-BE1B-4E29-8E1B-444420802C03}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {0449D6D2-BE1B-4E29-8E1B-444420802C03}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {0449D6D2-BE1B-4E29-8E1B-444420802C03}.Release|x86.ActiveCfg = Release|Any CPU
+ {0449D6D2-BE1B-4E29-8E1B-444420802C03}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -316,5 +330,6 @@ Global
{9C632DF0-DC06-410B-95AE-B5423702E84F} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
{22019146-BDFA-442E-8C8E-345FB9644578} = {3BA657BF-28B1-42DA-B5B0-1C4601FCF7B1}
{4DA2D7C1-A7B6-4C01-B57D-89E6EA4609DE} = {32285FA4-6B46-4D6B-A840-2B13E4C8B58E}
+ {0449D6D2-BE1B-4E29-8E1B-444420802C03} = {3BA657BF-28B1-42DA-B5B0-1C4601FCF7B1}
EndGlobalSection
EndGlobal
diff --git a/samples/MvcSample.Web/project.json b/samples/MvcSample.Web/project.json
index 290162f75c..4ad41a1f37 100644
--- a/samples/MvcSample.Web/project.json
+++ b/samples/MvcSample.Web/project.json
@@ -14,7 +14,8 @@
"Microsoft.AspNet.Mvc.WebApiCompatShim": "6.0.0-*",
"Microsoft.AspNet.Server.IIS": "1.0.0-*",
"Microsoft.AspNet.Server.WebListener": "1.0.0-*",
- "Microsoft.AspNet.StaticFiles": "1.0.0-*"
+ "Microsoft.AspNet.StaticFiles": "1.0.0-*",
+ "Microsoft.Framework.NotNullAttribute.Internal": { "type": "build", "version": "1.0.0-*" }
},
"frameworks": {
"aspnet50": {
diff --git a/src/Microsoft.AspNet.Mvc.Common/CopyOnWriteDictionary.cs b/src/Microsoft.AspNet.Mvc.Common/CopyOnWriteDictionary.cs
deleted file mode 100644
index 2bd36c8a04..0000000000
--- a/src/Microsoft.AspNet.Mvc.Common/CopyOnWriteDictionary.cs
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-using System.Collections;
-using System.Collections.Generic;
-
-namespace Microsoft.AspNet.Mvc
-{
- ///
- /// A that defers creating a shallow copy of the source dictionary until
- /// a mutative operation has been performed on it.
- ///
- internal class CopyOnWriteDictionary : IDictionary
- {
- private readonly IDictionary _sourceDictionary;
- private readonly IEqualityComparer _comparer;
- private IDictionary _innerDictionary;
-
- public CopyOnWriteDictionary([NotNull] IDictionary sourceDictionary,
- [NotNull] IEqualityComparer comparer)
- {
- _sourceDictionary = sourceDictionary;
- _comparer = comparer;
- }
-
- private IDictionary ReadDictionary
- {
- get
- {
- return _innerDictionary ?? _sourceDictionary;
- }
- }
-
- private IDictionary WriteDictionary
- {
- get
- {
- if (_innerDictionary == null)
- {
- _innerDictionary = new Dictionary(_sourceDictionary,
- _comparer);
- }
-
- return _innerDictionary;
- }
- }
-
- public virtual ICollection Keys
- {
- get
- {
- return ReadDictionary.Keys;
- }
- }
-
- public virtual ICollection Values
- {
- get
- {
- return ReadDictionary.Values;
- }
- }
-
- public virtual int Count
- {
- get
- {
- return ReadDictionary.Count;
- }
- }
-
- public virtual bool IsReadOnly
- {
- get
- {
- return false;
- }
- }
-
- public virtual TValue this[[NotNull] TKey key]
- {
- get
- {
- return ReadDictionary[key];
- }
- set
- {
- WriteDictionary[key] = value;
- }
- }
-
- public virtual bool ContainsKey([NotNull] TKey key)
- {
- return ReadDictionary.ContainsKey(key);
- }
-
- public virtual void Add([NotNull] TKey key, TValue value)
- {
- WriteDictionary.Add(key, value);
- }
-
- public virtual bool Remove([NotNull] TKey key)
- {
- return WriteDictionary.Remove(key);
- }
-
- public virtual bool TryGetValue([NotNull] TKey key, out TValue value)
- {
- return ReadDictionary.TryGetValue(key, out value);
- }
-
- public virtual void Add(KeyValuePair item)
- {
- WriteDictionary.Add(item);
- }
-
- public virtual void Clear()
- {
- WriteDictionary.Clear();
- }
-
- public virtual bool Contains(KeyValuePair item)
- {
- return ReadDictionary.Contains(item);
- }
-
- public virtual void CopyTo([NotNull] KeyValuePair[] array, int arrayIndex)
- {
- ReadDictionary.CopyTo(array, arrayIndex);
- }
-
- public bool Remove(KeyValuePair item)
- {
- return WriteDictionary.Remove(item);
- }
-
- public virtual IEnumerator> GetEnumerator()
- {
- return ReadDictionary.GetEnumerator();
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- return GetEnumerator();
- }
- }
-}
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Mvc.Common/NotNullAttribute.cs b/src/Microsoft.AspNet.Mvc.Common/NotNullAttribute.cs
deleted file mode 100644
index b981f57ea2..0000000000
--- a/src/Microsoft.AspNet.Mvc.Common/NotNullAttribute.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-using System;
-
-namespace Microsoft.AspNet.Mvc
-{
- [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false)]
- internal sealed class NotNullAttribute : Attribute
- {
- }
-}
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Mvc.Common/PropertyActivator.cs b/src/Microsoft.AspNet.Mvc.Common/PropertyActivator.cs
deleted file mode 100644
index 79ee86d091..0000000000
--- a/src/Microsoft.AspNet.Mvc.Common/PropertyActivator.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-using System;
-using System.Linq;
-using System.Reflection;
-
-namespace Microsoft.AspNet.Mvc
-{
- internal class PropertyActivator
- {
- private readonly Func _valueAccessor;
- private readonly Action