diff --git a/build/repo.props b/build/repo.props
index 19384ac996..397e3d471d 100644
--- a/build/repo.props
+++ b/build/repo.props
@@ -60,6 +60,14 @@
$(RepositoryRoot)src\ProjectTemplates\Web.ProjectTemplates\content\**\*.csproj;
$(RepositoryRoot)src\ProjectTemplates\Web.Spa.ProjectTemplates\content\**\*.csproj;
" />
+
+
+
+
diff --git a/src/Mvc/benchmarkapps/Directory.Build.props b/src/Mvc/benchmarkapps/Directory.Build.props
new file mode 100644
index 0000000000..56a40aaa38
--- /dev/null
+++ b/src/Mvc/benchmarkapps/Directory.Build.props
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Mvc/benchmarkapps/Directory.Build.targets b/src/Mvc/benchmarkapps/Directory.Build.targets
new file mode 100644
index 0000000000..2e3fb2fa71
--- /dev/null
+++ b/src/Mvc/benchmarkapps/Directory.Build.targets
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/Mvc/test/Microsoft.AspNetCore.Mvc.FunctionalTests/BasicApiTest.cs b/src/Mvc/test/Microsoft.AspNetCore.Mvc.FunctionalTests/BasicApiTest.cs
deleted file mode 100644
index 42d2a5a5ce..0000000000
--- a/src/Mvc/test/Microsoft.AspNetCore.Mvc.FunctionalTests/BasicApiTest.cs
+++ /dev/null
@@ -1,223 +0,0 @@
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-using System.Net;
-using System.Net.Http;
-using System.Text;
-using System.Threading.Tasks;
-using Microsoft.Net.Http.Headers;
-using Xunit;
-
-namespace Microsoft.AspNetCore.Mvc.FunctionalTests
-{
- public class BasicApiTest : IClassFixture
- {
- private static readonly byte[] PetBytes = new UTF8Encoding(encoderShouldEmitUTF8Identifier: false)
- .GetBytes(@"{
- ""category"" : {
- ""name"" : ""Cats""
- },
- ""images"": [
- {
- ""url"": ""http://example.com/images/fluffy1.png""
- },
- {
- ""url"": ""http://example.com/images/fluffy2.png""
- },
- ],
- ""tags"": [
- {
- ""name"": ""orange""
- },
- {
- ""name"": ""kitty""
- }
- ],
- ""age"": 2,
- ""hasVaccinations"": ""true"",
- ""name"" : ""fluffy"",
- ""status"" : ""available""
-}");
-
- public BasicApiTest(BasicApiFixture fixture)
- {
- Client = fixture.CreateClient();
- }
-
- public HttpClient Client { get; }
-
- [Fact]
- public async Task Token_WithUnknownUser_ReturnsForbidden()
- {
- // Arrange & Act
- var response = await Client.GetAsync("/token?username=fallguy@example.com");
-
- // Assert
- Assert.Equal(HttpStatusCode.Forbidden, response.StatusCode);
- }
-
- [Fact]
- public async Task Token_WithKnownUser_ReturnsOkAndToken()
- {
- // Arrange & Act
- var response = await Client.GetAsync("/token?username=reader@example.com");
-
- // Assert
- Assert.Equal(HttpStatusCode.OK, response.StatusCode);
- Assert.Equal("text/plain", response.Content.Headers.ContentType.MediaType);
-
- var token = await response.Content.ReadAsStringAsync();
- Assert.NotNull(token);
- Assert.NotEmpty(token);
- }
-
- [Fact]
- public async Task FindByStatus_WithNoToken_ReturnsUnauthorized()
- {
- // Arrange & Act
- var response = await Client.GetAsync("/pet/findByStatus?status=available");
-
- // Assert
- Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
- }
-
- [Theory]
- [InlineData("reader@example.com")]
- [InlineData("writer@example.com")]
- public async Task FindByStatus_WithToken_ReturnsOkAndPet(string username)
- {
- // Arrange & Act 1
- var token = await Client.GetStringAsync($"/token?username={username}");
-
- // Assert 1 (guard)
- Assert.NotEmpty(token);
-
- // Arrange 2
- var request = new HttpRequestMessage(HttpMethod.Get, "/pet/findByStatus?status=available");
- request.Headers.Add(HeaderNames.Authorization, $"Bearer {token}");
-
- // Act 2
- var response = await Client.SendAsync(request);
-
- // Assert 2
- Assert.Equal(HttpStatusCode.OK, response.StatusCode);
- Assert.Equal("application/json", response.Content.Headers.ContentType.MediaType);
-
- var json = await response.Content.ReadAsStringAsync();
- Assert.NotNull(json);
- Assert.NotEmpty(json);
- }
-
- [Fact]
- public async Task FindById_WithInvalidPetId_ReturnsNotFound()
- {
- // Arrange & Act 1
- var token = await Client.GetStringAsync("/token?username=reader@example.com");
-
- // Assert 1 (guard)
- Assert.NotEmpty(token);
-
- // Arrange 2
- var request = new HttpRequestMessage(HttpMethod.Get, "/pet/100");
- request.Headers.Add(HeaderNames.Authorization, $"Bearer {token}");
-
- // Act 2
- var response = await Client.SendAsync(request);
-
- // Assert 2
- Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
- }
-
- [Fact]
- public async Task FindById_WithValidPetId_ReturnsOkAndPet()
- {
- // Arrange & Act 1
- var token = await Client.GetStringAsync("/token?username=reader@example.com");
-
- // Assert 1 (guard)
- Assert.NotEmpty(token);
-
- // Arrange 2
- var request = new HttpRequestMessage(HttpMethod.Get, "/pet/-1");
- request.Headers.Add(HeaderNames.Authorization, $"Bearer {token}");
-
- // Act 2
- var response = await Client.SendAsync(request);
-
- // Assert 2
- Assert.Equal(HttpStatusCode.OK, response.StatusCode);
- Assert.Equal("application/json", response.Content.Headers.ContentType.MediaType);
-
- var json = await response.Content.ReadAsStringAsync();
- Assert.NotNull(json);
- Assert.NotEmpty(json);
- }
-
- [Fact]
- public async Task AddPet_WithInsufficientClaims_ReturnsForbidden()
- {
- // Arrange & Act 1
- var token = await Client.GetStringAsync("/token?username=reader@example.com");
-
- // Assert 1 (guard)
- Assert.NotEmpty(token);
-
- // Arrange 2
- var request = new HttpRequestMessage(HttpMethod.Post, "/pet")
- {
- Content = new ByteArrayContent(PetBytes)
- {
- Headers =
- {
- { "Content-Type", "application/json" },
- },
- },
- Headers =
- {
- { HeaderNames.Authorization, $"Bearer {token}" },
- },
- };
-
- // Act 2
- var response = await Client.SendAsync(request);
-
- // Assert 2
- Assert.Equal(HttpStatusCode.Forbidden, response.StatusCode);
- }
-
- [Fact]
- public async Task AddPet_WithValidClaims_ReturnsCreated()
- {
- // Arrange & Act 1
- var token = await Client.GetStringAsync("/token?username=writer@example.com");
-
- // Assert 1 (guard)
- Assert.NotEmpty(token);
-
- // Arrange 2
- var request = new HttpRequestMessage(HttpMethod.Post, "/pet")
- {
- Content = new ByteArrayContent(PetBytes)
- {
- Headers =
- {
- { HeaderNames.ContentType, "application/json" },
- },
- },
- Headers =
- {
- { HeaderNames.Authorization, $"Bearer {token}" },
- },
- };
-
- // Act 2
- var response = await Client.SendAsync(request);
-
- // Assert 2
- Assert.Equal(HttpStatusCode.Created, response.StatusCode);
- var location = response.Headers.Location.ToString();
- Assert.NotNull(location);
- Assert.EndsWith("/1", location);
- }
- }
-}
diff --git a/src/Mvc/test/Microsoft.AspNetCore.Mvc.FunctionalTests/BasicViewsTest.cs b/src/Mvc/test/Microsoft.AspNetCore.Mvc.FunctionalTests/BasicViewsTest.cs
deleted file mode 100644
index 5f9b0bbcd8..0000000000
--- a/src/Mvc/test/Microsoft.AspNetCore.Mvc.FunctionalTests/BasicViewsTest.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright (c) .NET Foundation. 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.Collections.Generic;
-using System.Net;
-using System.Net.Http;
-using System.Threading.Tasks;
-using Xunit;
-
-namespace Microsoft.AspNetCore.Mvc.FunctionalTests
-{
- public class BasicViewsTest : IClassFixture
- {
- public BasicViewsTest(BasicViewsFixture fixture)
- {
- Client = fixture.CreateClient();
- }
-
- public HttpClient Client { get; }
-
- [Theory]
- [InlineData("/")]
- [InlineData("/Home/HtmlHelpers")]
- public async Task Get_ReturnsOkAndAntiforgeryToken(string path)
- {
- // Arrange & Act
- var response = await Client.GetAsync(path);
-
- // Assert
- Assert.Equal(HttpStatusCode.OK, response.StatusCode);
- Assert.Equal("text/html", response.Content.Headers.ContentType.MediaType);
-
- var html = await response.Content.ReadAsStringAsync();
- Assert.NotNull(html);
- Assert.NotEmpty(html);
-
- var token = AntiforgeryTestHelper.RetrieveAntiforgeryToken(html, "/");
- Assert.NotNull(token);
- Assert.NotEmpty(token);
- }
-
- [Theory]
- [InlineData("/")]
- [InlineData("/Home/HtmlHelpers")]
- public async Task Post_ReturnsOkAndNewPerson(string path)
- {
- // Arrange & Act 1
- var html = await Client.GetStringAsync(path);
-
- // Assert 1 (guard)
- Assert.NotEmpty(html);
-
- // Arrange 2
- var token = AntiforgeryTestHelper.RetrieveAntiforgeryToken(html, "/");
- var name = Guid.NewGuid().ToString();
- name = name.Substring(startIndex: 0, length: name.LastIndexOf('-'));
- var form = new Dictionary
- {
- { "__RequestVerificationToken", token },
- { "Age", "12" },
- { "BirthDate", "2006-03-01T09:51:43.041-07:00" },
- { "Name", name },
- };
-
- var content = new FormUrlEncodedContent(form);
- var request = new HttpRequestMessage(HttpMethod.Post, path)
- {
- Content = content,
- };
-
- // Act 2
- var response = await Client.SendAsync(request);
-
- // Assert 2
- Assert.Equal(HttpStatusCode.OK, response.StatusCode);
-
- var body = await response.Content.ReadAsStringAsync();
- Assert.NotNull(body);
- Assert.Contains($@"value=""{name}""", body);
- }
- }
-}
diff --git a/src/Mvc/test/Microsoft.AspNetCore.Mvc.FunctionalTests/Infrastructure/BasicApiFixture.cs b/src/Mvc/test/Microsoft.AspNetCore.Mvc.FunctionalTests/Infrastructure/BasicApiFixture.cs
deleted file mode 100644
index 56294311a7..0000000000
--- a/src/Mvc/test/Microsoft.AspNetCore.Mvc.FunctionalTests/Infrastructure/BasicApiFixture.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-using BasicApi;
-
-namespace Microsoft.AspNetCore.Mvc.FunctionalTests
-{
- public class BasicApiFixture : MvcTestFixture
- {
- // Do not leave .db file behind. Also, ensure added pet gets expected id (1) in subsequent runs.
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- Startup.DropDatabase(Server.Host.Services);
- }
-
- base.Dispose(disposing);
- }
- }
-}
diff --git a/src/Mvc/test/Microsoft.AspNetCore.Mvc.FunctionalTests/Infrastructure/BasicViewsFixture.cs b/src/Mvc/test/Microsoft.AspNetCore.Mvc.FunctionalTests/Infrastructure/BasicViewsFixture.cs
deleted file mode 100644
index 3ea0c60835..0000000000
--- a/src/Mvc/test/Microsoft.AspNetCore.Mvc.FunctionalTests/Infrastructure/BasicViewsFixture.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-using BasicViews;
-
-namespace Microsoft.AspNetCore.Mvc.FunctionalTests
-{
- public class BasicViewsFixture : MvcTestFixture
- {
- // Do not leave .db file behind.
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- Startup.DropDatabase(Server.Host.Services);
- }
-
- base.Dispose(disposing);
- }
- }
-}
diff --git a/src/Mvc/test/Microsoft.AspNetCore.Mvc.FunctionalTests/Microsoft.AspNetCore.Mvc.FunctionalTests.csproj b/src/Mvc/test/Microsoft.AspNetCore.Mvc.FunctionalTests/Microsoft.AspNetCore.Mvc.FunctionalTests.csproj
index 8df756d388..34afae6bb9 100644
--- a/src/Mvc/test/Microsoft.AspNetCore.Mvc.FunctionalTests/Microsoft.AspNetCore.Mvc.FunctionalTests.csproj
+++ b/src/Mvc/test/Microsoft.AspNetCore.Mvc.FunctionalTests/Microsoft.AspNetCore.Mvc.FunctionalTests.csproj
@@ -26,8 +26,6 @@
-
-
diff --git a/src/Servers/Kestrel/perf/PlatformBenchmarks/Directory.Build.props b/src/Servers/Kestrel/perf/PlatformBenchmarks/Directory.Build.props
new file mode 100644
index 0000000000..7bd8002727
--- /dev/null
+++ b/src/Servers/Kestrel/perf/PlatformBenchmarks/Directory.Build.props
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Servers/Kestrel/perf/PlatformBenchmarks/Directory.Build.targets b/src/Servers/Kestrel/perf/PlatformBenchmarks/Directory.Build.targets
new file mode 100644
index 0000000000..2e3fb2fa71
--- /dev/null
+++ b/src/Servers/Kestrel/perf/PlatformBenchmarks/Directory.Build.targets
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/Servers/Kestrel/perf/PlatformBenchmarks/PlatformBenchmarks.csproj b/src/Servers/Kestrel/perf/PlatformBenchmarks/PlatformBenchmarks.csproj
index 78041dec70..ba82850bbc 100644
--- a/src/Servers/Kestrel/perf/PlatformBenchmarks/PlatformBenchmarks.csproj
+++ b/src/Servers/Kestrel/perf/PlatformBenchmarks/PlatformBenchmarks.csproj
@@ -9,12 +9,9 @@
true
-
-
-
-
+
@@ -23,7 +20,8 @@
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SignalR/perf/benchmarkapps/Directory.Build.targets b/src/SignalR/perf/benchmarkapps/Directory.Build.targets
new file mode 100644
index 0000000000..2e3fb2fa71
--- /dev/null
+++ b/src/SignalR/perf/benchmarkapps/Directory.Build.targets
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file