Browse Source

Move obj and bin directories into repo root (#10063)

The Arcade SDK requires that the obj/ and bin/ folders be placed in the top-level artifacts/ folder of the repo. Although this PR does not complete our Arcade convergence, this is a step towards updating our repo to build with the Arcade SDK.

Changes:
* Set output path for build to artifacts/bin/$(ProjectName)/ 
* Set intermediate output path for build to artifacts/obj/$(ProjectName)/
* Cleanup .gitignore files (remove duplication between repo-root and tested gitignore files)
* Add code check which looks for project files that share the same name (could cause issues)
* Rename project files to have unique names (avoid race condition of build output)
* Update all locations which were hard-coded to expect bin/ and obj/ in the project directory
* Add overrides for tests which still assert test binaries exist in a given location relative to the source code
Nate McMaster 6 years ago
parent
commit
dc90e11c7a
98 changed files with 375 additions and 417 deletions
  1. 1 1
      .azure/pipelines/tools/SetupTestEnvironment.ps1
  2. 32 28
      .gitignore
  3. 1 1
      Directory.Build.props
  4. 1 1
      build/repo.props
  5. 4 0
      build/tasks/RepoTasks.csproj
  6. 7 0
      docs/BuildErrors.md
  7. 6 0
      eng/Workarounds.targets
  8. 31 4
      eng/scripts/CodeCheck.ps1
  9. 7 0
      eng/targets/CSharp.Common.props
  10. 4 1
      eng/targets/Cpp.Common.props
  11. 0 1
      eng/tools/XplatPackageSigner/XplatPackageSigner.proj
  12. 1 1
      src/Analyzers/Analyzers/test/AnalyzerTestBase.cs
  13. 5 0
      src/Analyzers/Analyzers/test/Microsoft.AspNetCore.Analyzers.Test.csproj
  14. 2 2
      src/Azure/AzureAD/test/FunctionalTests/Microsoft.AspNetCore.Authentication.AzureAD.FunctionalTests.csproj
  15. 1 1
      src/Components/Blazor/Templates/.gitignore
  16. 1 1
      src/Components/Components.sln
  17. 6 3
      src/Components/Directory.Build.props
  18. 6 1
      src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj
  19. 3 0
      src/Components/test/E2ETest/Tests/FormsTest.cs
  20. 0 0
      src/Components/test/testassets/TestServer/Components.TestServer.csproj
  21. 1 1
      src/DefaultBuilder/DefaultBuilder.sln
  22. 0 0
      src/DefaultBuilder/samples/SampleApp/DefaultBuilder.SampleApp.csproj
  23. 5 0
      src/DefaultBuilder/test/Microsoft.AspNetCore.FunctionalTests/Microsoft.AspNetCore.FunctionalTests.csproj
  24. 5 3
      src/DefaultBuilder/testassets/Directory.Build.props
  25. 0 4
      src/Framework/Directory.Build.props
  26. 0 7
      src/Framework/ref/Microsoft.AspNetCore.App.Ref.csproj
  27. 0 6
      src/Framework/src/Microsoft.AspNetCore.App.Runtime.csproj
  28. 5 0
      src/Hosting/test/FunctionalTests/Microsoft.AspNetCore.Hosting.FunctionalTests.csproj
  29. 9 0
      src/Hosting/test/testassets/Directory.Build.props
  30. 1 1
      src/Http/HttpAbstractions.sln
  31. 0 0
      src/Http/samples/SampleApp/HttpAbstractions.SampleApp.csproj
  32. 5 5
      src/Identity/test/Identity.FunctionalTests/Microsoft.AspNetCore.Identity.FunctionalTests.csproj
  33. 3 23
      src/Identity/test/Identity.Test/IdentityUIScriptsTest.cs
  34. 2 2
      src/Identity/test/Identity.Test/Microsoft.AspNetCore.Identity.Test.csproj
  35. 1 5
      src/Installers/Debian/Directory.Build.props
  36. 0 5
      src/Installers/Rpm/Directory.Build.props
  37. 0 1
      src/Installers/Windows/.gitignore
  38. 2 2
      src/Installers/Windows/AspNetCoreModule-Setup/ANCMIISExpressV2/AncmIISExpressV2.wixproj
  39. 1 3
      src/Installers/Windows/AspNetCoreModule-Setup/CustomAction/aspnetcoreCA.vcxproj
  40. 1 1
      src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Common/Common.sln
  41. 0 0
      src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Common/lib/IISSetup.CommonLib.vcxproj
  42. 1 1
      src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Setup.sln
  43. 1 1
      src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/iisca/lib/iisca.vcxproj
  44. 0 18
      src/Installers/Windows/AspNetCoreModule-Setup/build/copy-outputs.targets
  45. 0 5
      src/Installers/Windows/Directory.Build.props
  46. 1 1
      src/Installers/Windows/Installers.sln
  47. BIN
      src/Installers/Windows/UpgradeLog.htm
  48. 9 0
      src/Middleware/CORS/samples/Directory.Build.props
  49. 5 0
      src/Middleware/CORS/test/FunctionalTests/CORS.FunctionalTests.csproj
  50. 0 0
      src/Middleware/CORS/test/FunctionalTests/CORS.Npm.FunctionalTests.npmproj
  51. 9 0
      src/Middleware/CORS/test/testassets/Directory.Build.props
  52. 2 2
      src/Middleware/Middleware.sln
  53. 0 2
      src/Middleware/NodeServices/samples/NodeServicesExamples/.gitignore
  54. 5 0
      src/Middleware/NodeServices/test/Microsoft.AspNetCore.NodeServices.Tests.csproj
  55. 0 2
      src/Middleware/SpaServices/src/.gitignore
  56. 0 0
      src/Middleware/WebSockets/samples/TestServer/WebSockets.TestServer.csproj
  57. 1 0
      src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.csproj
  58. 2 2
      src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.nuspec
  59. 6 1
      src/Mvc/Mvc.Analyzers/test/Mvc.Analyzers.Test.csproj
  60. 6 1
      src/Mvc/Mvc.Api.Analyzers/test/Mvc.Api.Analyzers.Test.csproj
  61. 1 1
      src/Mvc/Mvc.sln
  62. 1 1
      src/Mvc/test/Mvc.FunctionalTests/Microsoft.AspNetCore.Mvc.FunctionalTests.csproj
  63. 0 0
      src/Mvc/test/WebSites/RoutingWebSite/Mvc.RoutingWebSite.csproj
  64. 6 2
      src/ProjectTemplates/test/ProjectTemplates.Tests.csproj
  65. 7 10
      src/Security/test/AuthSamples.FunctionalTests/AuthSamples.FunctionalTests.csproj
  66. 0 58
      src/Servers/IIS/.gitignore
  67. 2 4
      src/Servers/IIS/AspNetCoreModuleV2/AspNetCore/AspNetCore.vcxproj
  68. 1 6
      src/Servers/IIS/AspNetCoreModuleV2/CommonLib/CommonLib.vcxproj
  69. 5 17
      src/Servers/IIS/AspNetCoreModuleV2/CommonLibTests/CommonLibTests.vcxproj
  70. 1 13
      src/Servers/IIS/AspNetCoreModuleV2/IISLib/IISLib.vcxproj
  71. 1 6
      src/Servers/IIS/AspNetCoreModuleV2/RequestHandlerLib/RequestHandlerLib.vcxproj
  72. 1 5
      src/Servers/IIS/AspNetCoreModuleV2/gtest/gtest.vcxproj
  73. 4 4
      src/Servers/IIS/IIS/benchmarks/IIS.Performance/IIS.Performance.csproj
  74. 4 0
      src/Servers/IIS/IIS/test/Directory.Build.props
  75. 1 1
      src/Servers/IIS/IIS/test/IIS.ForwardsCompatibility.FunctionalTests/IIS.ForwardsCompatibility.FunctionalTests.csproj
  76. 1 0
      src/Servers/IIS/IIS/test/testassets/InProcessForwardsCompatWebSite/InProcessForwardsCompatWebSite.csproj
  77. 0 11
      src/Servers/IIS/IISIntegration.sln
  78. 0 2
      src/Servers/IIS/build/Build.Settings
  79. 98 83
      src/Servers/IIS/build/assets.props
  80. 2 2
      src/Servers/IIS/build/native.targets
  81. 7 4
      src/Servers/IIS/tools/GenerateNativeAssets.ps1
  82. 1 1
      src/Servers/Kestrel.sln
  83. 0 0
      src/Servers/Kestrel/samples/SampleApp/Kestrel.SampleApp.csproj
  84. 0 6
      src/Servers/test/FunctionalTests/Directory.Build.props
  85. 6 1
      src/Servers/test/FunctionalTests/ServerComparison.FunctionalTests.csproj
  86. 2 2
      src/Servers/testassets/Directory.Build.props
  87. 0 13
      src/Servers/testassets/ServerComparison.TestSites/Directory.Build.props
  88. 1 1
      src/SignalR/SignalR.sln
  89. 1 2
      src/SignalR/clients/java/signalr/.gitignore
  90. 0 0
      src/SignalR/clients/java/signalr/signalr.client.java.javaproj
  91. 0 0
      src/SignalR/clients/ts/FunctionalTests/SignalR.Client.FunctionalTests.csproj
  92. 4 4
      src/SignalR/clients/ts/FunctionalTests/SignalR.Npm.FunctionalTests.npmproj
  93. 3 3
      src/SignalR/clients/ts/FunctionalTests/package.json
  94. 1 1
      src/SignalR/clients/ts/FunctionalTests/scripts/run-tests.ts
  95. 1 1
      src/SignalR/publish-apps.ps1
  96. 0 1
      src/Tools/Directory.Build.props
  97. 2 0
      src/submodules/Directory.Build.props
  98. 2 0
      src/submodules/Directory.Build.targets

+ 1 - 1
.azure/pipelines/tools/SetupTestEnvironment.ps1

@@ -83,7 +83,7 @@ function Shutdown-Dumps()
 
     New-ItemProperty $werHive -Name "DontShowUI" -Value 0 -PropertyType "DWORD" -Force;
 
-    $cdb = "c:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe"
+    $cdb = "${env:ProgramFiles(x86)}\Windows Kits\10\Debuggers\x64\cdb.exe"
     if (!(Test-Path $cdb))
     {
         $downloadedFile = [System.IO.Path]::GetTempFileName();

+ 32 - 28
.gitignore

@@ -1,38 +1,42 @@
+# Folders
+artifacts/
 bin/
 obj/
+.dotnet/
+.nuget/
+.packages/
+.tools/
 .vs/
 .vscode/
-*.suo
-*.user
-_ReSharper.*
-*.DS_Store
-*.userprefs
-*.pidb
-*.vspx
-*.psess
-*.binlog
-*.log
-artifacts/
-StyleCop.Cache
 node_modules/
-*.snk
-.nuget
-.packages/
-.r
-.w
-.deps
-msbuild.ProjectImports.zip
-.env
-scripts/tmp/
-.dotnet/
-.tools/
-src/**/global.json
-launchSettings.json
 BenchmarkDotNet.Artifacts/
-korebuild-lock.txt
 .gradle/
 src/SignalR/clients/**/dist/
 modules/
 
-# Template config files for blazor templates is generated on-build
-src/Components/**/.template.config/
+# File extensions
+*.aps
+*.binlog
+*.dll
+*.DS_Store
+*.exe
+*.idb
+*.lib
+*.log
+*.pch
+*.pdb
+*.pidb
+*.psess
+*.res
+*.snk
+*.suo
+*.tlog
+*.user
+*.userprefs
+*.vspx
+
+# Specific files, typically generated by tools
+launchSettings.json
+msbuild.ProjectImports.zip
+StyleCop.Cache
+UpgradeLog.htm

+ 1 - 1
Directory.Build.props

@@ -145,7 +145,7 @@
     <CreateDirectory Include="$(VisualStudioSetupOutputPath)" />
   </ItemGroup>
 
-  <PropertyGroup Condition=" '$(OutputInRepoRoot)' == 'true' ">
+  <PropertyGroup>
     <OutDirName Condition=" '$(OutDirName)' == '' ">$(MSBuildProjectName)</OutDirName>
 
     <BaseOutputPath Condition=" '$(BaseOutputPath)' == '' ">$([System.IO.Path]::GetFullPath('$(ArtifactsBinDir)$(OutDirName)\'))</BaseOutputPath>

+ 1 - 1
build/repo.props

@@ -42,7 +42,7 @@
     <ProjectToExclude Include="
                       $(RepoRoot)src\Components\Blazor\BlazorExtension\src\Microsoft.VisualStudio.BlazorExtension.csproj;
                       $(RepoRoot)src\Servers\HttpSys\samples\TestClient\TestClient.csproj;
-                      $(RepoRoot)src\Middleware\WebSockets\samples\TestServer\TestServer.csproj;
+                      $(RepoRoot)src\Middleware\WebSockets\samples\TestServer\WebSockets.TestServer.csproj;
                       "
                       Condition=" '$(MSBuildRuntimeType)' == 'Core' " />
 

+ 4 - 0
build/tasks/RepoTasks.csproj

@@ -29,4 +29,8 @@
   </ItemGroup>
 
   <Import Project="$(RepoTasksSdkPath)\Sdk.targets" Condition="'$(RepoTasksSdkPath)' != '' "/>
+
+  <ItemGroup>
+    <PackageReference Update="Newtonsoft.Json" PrivateAssets="" />
+  </ItemGroup>
 </Project>

+ 7 - 0
docs/BuildErrors.md

@@ -15,3 +15,10 @@ in a previous release of this assembly. See <./ReferenceResolution.md> for how t
 > error BUILD002: Package references changed since the last release...
 
 Similar to BUILD001, but this error is not suppressable. This error only appears in servicing builds, which should not change references between assemblies or packages.
+
+### Error BUILD003
+
+> error BUILD003: Multiple project files named 'Banana.csproj' exist. Project files should have a unique name to avoid conflicts in build output.
+
+This repo uses a common output directory (artifacts/bin/$(ProjectName) and artifacts/obj/$(ProjectName)). To avoid confllicts in build output, each
+project file should have a unique name.

+ 6 - 0
eng/Workarounds.targets

@@ -25,4 +25,10 @@
           BeforeTargets="PrepareForRazorComponentGenerate"
           DependsOnTargets="GenerateSourceLinkFile" />
 
+  <!-- Workaround https://github.com/aspnet/websdk/pull/646. If merged, once we update to a websdk with this fix, we can move the setting below to Directory.Build.props. -->
+  <PropertyGroup>
+    <!-- Ignore warning about calling the Pack target on Web SDK projects. Our build scripts call /t:pack on everything in this repo. -->
+    <WarnOnPackingNonPackableProject>false</WarnOnPackingNonPackableProject>
+  </PropertyGroup>
+
 </Project>

+ 31 - 4
eng/scripts/CodeCheck.ps1

@@ -19,17 +19,25 @@ function LogError {
     param(
         [Parameter(Mandatory = $true, Position = 0)]
         [string]$message,
-        [string]$FilePath
+        [string]$FilePath,
+        [string]$Code
     )
     if ($env:TF_BUILD) {
         $prefix = "##vso[task.logissue type=error"
         if ($FilePath) {
             $prefix = "${prefix};sourcepath=$FilePath"
         }
+        if ($Code) {
+            $prefix = "${prefix};code=$Code"
+        }
         Write-Host "${prefix}]${message}"
     }
-    Write-Host -f Red "error: $message"
-    $script:errors += $message
+    $fullMessage = "error ${Code}: $message"
+    if ($FilePath) {
+        $fullMessage += " [$FilePath]"
+    }
+    Write-Host -f Red $fullMessage
+    $script:errors += $fullMessage
 }
 
 try {
@@ -38,6 +46,25 @@ try {
         & $repoRoot/build.ps1 -ci -norestore /t:InstallDotNet
     }
 
+    #
+    # Duplicate .csproj files can cause issues with a shared build output folder
+    #
+
+    $projectFileNames = New-Object 'System.Collections.Generic.HashSet[string]'
+
+    # Ignore duplicates in submodules. These should be isolated from the rest of the build.
+    # Ignore duplicates in the .ref folder. This is expected.
+    Get-ChildItem -Recurse "$repoRoot/src/*.*proj" `
+        | ? { $_.FullName -notmatch 'submodules' } `
+        | ? { (Split-Path -Leaf (Split-Path -Parent $_)) -ne 'ref' } `
+        | % {
+            $fileName = [io.path]::GetFileNameWithoutExtension($_)
+            if (-not ($projectFileNames.Add($fileName))) {
+                LogError -code 'BUILD003' -filepath $_ `
+                    "Multiple project files named '$fileName' exist. Project files should have a unique name to avoid conflicts in build output."
+            }
+        }
+
     #
     # Versions.props and Version.Details.xml
     #
@@ -171,7 +198,7 @@ finally {
     Write-Host ""
 
     foreach ($err in $errors) {
-        Write-Host -f Red "error : $err"
+        Write-Host -f Red $err
     }
 
     if ($errors) {

+ 7 - 0
eng/targets/CSharp.Common.props

@@ -52,6 +52,13 @@
     <Reference Include="xunit.runner.console" Condition=" '$(TargetFrameworkIdentifier)' == '.NETFramework' AND '$(IsHelixJob)' == 'true' " />
   </ItemGroup>
 
+  <ItemDefinitionGroup Condition=" '$(IsTestProject)' == 'true' ">
+    <Content>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+    </Content>
+  </ItemDefinitionGroup>
+
   <Import Project="CSharp.ReferenceAssembly.props" Condition="'$(IsReferenceAssemblyProject)' == 'true'" />
   <Import Project="Helix.props" Condition="'$(IsTestProject)' == 'true'" />
 

+ 4 - 1
eng/targets/Cpp.Common.props

@@ -4,7 +4,10 @@
   <PropertyGroup>
     <SignOutput Condition=" '$(SignType)' != '' ">true</SignOutput>
     <IsPackable>false</IsPackable>
-    <IntDir>$(PlatformName)\$(Configuration)\</IntDir>
+
+    <!-- These are defined in Directory.Build.props. This maps the common MSBuild property name to equivalent C++ project properties.  -->
+    <OutDir>$(OutputPath)</OutDir>
+    <IntDir>$(IntermediateOutputPath)</IntDir>
   </PropertyGroup>
 
   <Import Project="MicroBuild.Plugin.props" Condition="'$(MicroBuildSentinelFile)' == ''" />

+ 0 - 1
eng/tools/XplatPackageSigner/XplatPackageSigner.proj

@@ -8,7 +8,6 @@
 <Project DefaultTargets="Build" InitialTargets="CheckForRequiredProperties">
   <PropertyGroup>
     <SignType>$([MSBuild]::ValueOrDefault($(SignType),'real'))</SignType>
-    <OutputInRepoRoot>true</OutputInRepoRoot>
   </PropertyGroup>
 
   <Import Project="..\..\..\Directory.Build.props" />

+ 1 - 1
src/Analyzers/Analyzers/test/AnalyzerTestBase.cs

@@ -45,7 +45,7 @@ namespace Microsoft.AspNetCore.Analyzers
 
         private static string GetProjectDirectory()
         {
-            // On helix we use the published test files 
+            // On helix we use the published test files
             if (SkipOnHelixAttribute.OnHelix())
             {
                 return AppContext.BaseDirectory;

+ 5 - 0
src/Analyzers/Analyzers/test/Microsoft.AspNetCore.Analyzers.Test.csproj

@@ -4,8 +4,13 @@
     <TargetFramework>netcoreapp3.0</TargetFramework>
     <PreserveCompilationContext>true</PreserveCompilationContext>
     <RootNamespace>Microsoft.AspNetCore.Analyzers</RootNamespace>
+
+    <!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
     <!-- https://github.com/aspnet/AspNetCore/issues/6549 -->
     <BuildHelixPayload>false</BuildHelixPayload>
+    <BaseOutputPath />
+    <OutputPath />
+
    </PropertyGroup>
 
   <ItemGroup>

+ 2 - 2
src/Azure/AzureAD/test/FunctionalTests/Microsoft.AspNetCore.Authentication.AzureAD.FunctionalTests.csproj

@@ -19,7 +19,7 @@
 
   <Target Name="PublishAssets" AfterTargets="Publish">
     <ItemGroup>
-      <_PublishFiles Include="$(MSBuildThisFileDirectory)..\testassets\AzureAD.WebSite\bin\$(Configuration)\netcoreapp3.0\AzureAD.WebSite.deps.json" />
+      <_PublishFiles Include="$(ArtifactsBinDir)AzureAD.WebSite\$(Configuration)\netcoreapp3.0\AzureAD.WebSite.deps.json" />
     </ItemGroup>
     <Copy
       SourceFiles="@(_PublishFiles)"
@@ -36,6 +36,6 @@
         Overwrite="true"
         Encoding="Unicode"/>
   </Target>
-  
+
   <Import Project="$(MvcTestingTargets)" Condition="'$(MvcTestingTargets)' != ''" />
 </Project>

+ 1 - 1
src/Components/Blazor/Templates/.gitignore

@@ -1,3 +1,3 @@
 # We only track the .template.config.src items in source control
 # The .template.config files are generated on build
-content/**/.template.config/
+src/content/**/.template.config/

+ 1 - 1
src/Components/Components.sln

@@ -71,7 +71,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ComponentsApp.Server", "tes
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestContentPackage", "test\testassets\TestContentPackage\TestContentPackage.csproj", "{423CCF23-C0B4-4D21-896C-16DC98689DB5}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestServer", "test\testassets\TestServer\TestServer.csproj", "{D6AEB328-EBC0-40B1-8936-301597883DFA}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Components.TestServer", "test\testassets\TestServer\Components.TestServer.csproj", "{D6AEB328-EBC0-40B1-8936-301597883DFA}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Antiforgery", "..\Antiforgery\src\Microsoft.AspNetCore.Antiforgery.csproj", "{6BA2DCAA-CB68-4AE2-BBBE-746A728D30E0}"
 EndProject

+ 6 - 3
src/Components/Directory.Build.props

@@ -1,11 +1,14 @@
 <Project>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
+
   <PropertyGroup>
     <!-- Workaround for https://github.com/aspnet/AspNetCore/issues/5486 which requires the bin and obj directory be in the project directory -->
-    <OutputInRepoRoot>false</OutputInRepoRoot>
+    <BaseIntermediateOutputPath />
+    <IntermediateOutputPath />
+    <BaseOutputPath />
+    <OutputPath />
   </PropertyGroup>
 
-  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
-
   <PropertyGroup>
     <PackageTags>aspnetcore;components</PackageTags>
 

+ 6 - 1
src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj

@@ -13,6 +13,11 @@
     <SkipTests Condition="'$(SeleniumE2ETestsSupported)' != 'true'">true</SkipTests>
     <!-- https://github.com/aspnet/AspNetCore/issues/6857 -->
     <BuildHelixPayload>false</BuildHelixPayload>
+
+    <!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
+    <BaseOutputPath />
+    <OutputPath />
+
   </PropertyGroup>
 
   <ItemGroup>
@@ -36,7 +41,7 @@
     <ProjectReference Include="..\testassets\ComponentsApp.App\ComponentsApp.App.csproj" />
     <ProjectReference Include="..\testassets\ComponentsApp.Server\ComponentsApp.Server.csproj" />
     <ProjectReference Include="..\testassets\BasicTestApp\BasicTestApp.csproj" />
-    <ProjectReference Include="..\testassets\TestServer\TestServer.csproj" />
+    <ProjectReference Include="..\testassets\TestServer\Components.TestServer.csproj" />
   </ItemGroup>
 
   <!-- Shared testing infrastructure for running E2E tests using selenium -->

+ 3 - 0
src/Components/test/E2ETest/Tests/FormsTest.cs

@@ -6,6 +6,8 @@ using BasicTestApp.FormsTest;
 using Microsoft.AspNetCore.Components.E2ETest.Infrastructure;
 using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures;
 using Microsoft.AspNetCore.E2ETesting;
+using Microsoft.AspNetCore.Testing;
+using Microsoft.AspNetCore.Testing.xunit;
 using OpenQA.Selenium;
 using OpenQA.Selenium.Support.UI;
 using System;
@@ -198,6 +200,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.Tests
         }
 
         [Fact]
+        [Flaky("https://github.com/aspnet/AspNetCore-Internal/issues/2511", FlakyOn.All)]
         public void InputDateInteractsWithEditContext_NullableDateTimeOffset()
         {
             var appElement = MountTestComponent<TypicalValidationComponent>();

+ 0 - 0
src/Components/test/testassets/TestServer/TestServer.csproj → src/Components/test/testassets/TestServer/Components.TestServer.csproj


+ 1 - 1
src/DefaultBuilder/DefaultBuilder.sln

@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio Version 16
 VisualStudioVersion = 16.0.0.0
 MinimumVisualStudioVersion = 16.0.0.0
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleApp", "samples\SampleApp\SampleApp.csproj", "{C19108F8-667B-4CF9-B227-CDD2290224BC}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DefaultBuilder.SampleApp", "samples\SampleApp\DefaultBuilder.SampleApp.csproj", "{C19108F8-667B-4CF9-B227-CDD2290224BC}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Tests", "test\Microsoft.AspNetCore.Tests\Microsoft.AspNetCore.Tests.csproj", "{1CD49F15-D381-4C7E-8E12-A85E7753B110}"
 EndProject

+ 0 - 0
src/DefaultBuilder/samples/SampleApp/SampleApp.csproj → src/DefaultBuilder/samples/SampleApp/DefaultBuilder.SampleApp.csproj


+ 5 - 0
src/DefaultBuilder/test/Microsoft.AspNetCore.FunctionalTests/Microsoft.AspNetCore.FunctionalTests.csproj

@@ -2,8 +2,13 @@
 
   <PropertyGroup>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+
+    <!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
     <!-- https://github.com/aspnet/AspNetCore/issues/6549 -->
     <BuildHelixPayload>false</BuildHelixPayload>
+    <BaseOutputPath />
+    <OutputPath />
+
   </PropertyGroup>
 
   <ItemGroup>

+ 5 - 3
src/SiteExtensions/Directory.Build.props → src/DefaultBuilder/testassets/Directory.Build.props

@@ -1,7 +1,9 @@
 <Project>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
+
   <PropertyGroup>
-    <OutputInRepoRoot>true</OutputInRepoRoot>
+    <!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
+    <BaseOutputPath />
+    <OutputPath />
   </PropertyGroup>
-
-  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
 </Project>

+ 0 - 4
src/Framework/Directory.Build.props

@@ -1,8 +1,4 @@
 <Project>
-  <PropertyGroup>
-    <OutputInRepoRoot>true</OutputInRepoRoot>
-  </PropertyGroup>
-
   <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
 
   <PropertyGroup>

+ 0 - 7
src/Framework/ref/Microsoft.AspNetCore.App.Ref.csproj

@@ -1,11 +1,4 @@
 <Project>
-
-  <PropertyGroup>
-    <OutputInRepoRoot>true</OutputInRepoRoot>
-    <!-- Temporary flag to disable restoring this project against the artifacts/ folder. -->
-    <_DisableRestoreFromLocalPackages>true</_DisableRestoreFromLocalPackages>
-  </PropertyGroup>
-
   <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
 
   <PropertyGroup>

+ 0 - 6
src/Framework/src/Microsoft.AspNetCore.App.Runtime.csproj

@@ -1,10 +1,4 @@
 <Project>
-  <PropertyGroup>
-    <OutputInRepoRoot>true</OutputInRepoRoot>
-    <!-- Temporary flag to disable restoring this project against the artifacts/ folder. -->
-    <_DisableRestoreFromLocalPackages>true</_DisableRestoreFromLocalPackages>
-  </PropertyGroup>
-
   <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
 
   <PropertyGroup>

+ 5 - 0
src/Hosting/test/FunctionalTests/Microsoft.AspNetCore.Hosting.FunctionalTests.csproj

@@ -2,8 +2,13 @@
 
   <PropertyGroup>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+
+    <!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
     <!-- https://github.com/aspnet/AspNetCore/issues/6549 -->
     <BuildHelixPayload>false</BuildHelixPayload>
+    <BaseOutputPath />
+    <OutputPath />
+
   </PropertyGroup>
 
   <ItemGroup>

+ 9 - 0
src/Hosting/test/testassets/Directory.Build.props

@@ -0,0 +1,9 @@
+<Project>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
+
+  <PropertyGroup>
+    <!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
+    <BaseOutputPath />
+    <OutputPath />
+  </PropertyGroup>
+</Project>

+ 1 - 1
src/Http/HttpAbstractions.sln

@@ -51,7 +51,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Owin.T
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{391FBA36-BEEB-411A-A588-3F83901C0C1A}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleApp", "samples\SampleApp\SampleApp.csproj", "{2378049E-ABE9-4843-AAC7-A6C9E704463D}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HttpAbstractions.SampleApp", "samples\SampleApp\HttpAbstractions.SampleApp.csproj", "{2378049E-ABE9-4843-AAC7-A6C9E704463D}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebUtilities", "WebUtilities", "{80A090C8-ED02-4DE3-875A-30DCCDBD84BA}"
 EndProject

+ 0 - 0
src/Http/samples/SampleApp/SampleApp.csproj → src/Http/samples/SampleApp/HttpAbstractions.SampleApp.csproj


+ 5 - 5
src/Identity/test/Identity.FunctionalTests/Microsoft.AspNetCore.Identity.FunctionalTests.csproj

@@ -26,9 +26,9 @@
 
   <Target Name="PublishAssets" AfterTargets="Publish">
     <ItemGroup>
-      <_PublishFiles Include="$(MSBuildThisFileDirectory)..\..\UI\src\bin\$(Configuration)\netcoreapp3.0\Microsoft.AspNetCore.Identity.UI.Views.*.dll" />
-      <_PublishFiles Include="$(MSBuildThisFileDirectory)..\..\testassets\Identity.DefaultUI.WebSite\bin\$(Configuration)\netcoreapp3.0\Identity.DefaultUI.WebSite.deps.json" />
-      <_PublishFiles Include="$(MSBuildThisFileDirectory)..\..\testassets\Identity.DefaultUI.WebSite\bin\$(Configuration)\netcoreapp3.0\Identity.DefaultUI.WebSite.deps.json" />
+      <_PublishFiles Include="$(ArtifactsBinDir)Microsoft.AspNetCore.Identity.UI\$(Configuration)\netcoreapp3.0\Microsoft.AspNetCore.Identity.UI.Views.*.dll" />
+      <_PublishFiles Include="$(ArtifactsBinDir)Identity.DefaultUI.WebSite\$(Configuration)\netcoreapp3.0\Identity.DefaultUI.WebSite.deps.json" />
+      <_PublishFiles Include="$(ArtifactsBinDir)Identity.DefaultUI.WebSite\$(Configuration)\netcoreapp3.0\Identity.DefaultUI.WebSite.deps.json" />
       <_wwwrootFiles Include="$(MSBuildThisFileDirectory)..\..\testassets\Identity.DefaultUI.WebSite\wwwroot\**\*.*" />
       <_PagesFiles Include="$(MSBuildThisFileDirectory)..\..\testassets\Identity.DefaultUI.WebSite\Pages\**\*.*" />
     </ItemGroup>
@@ -46,7 +46,7 @@
         File="$(PublishDir)\contentroot.sln"
         Lines="Ignored"
         Overwrite="true"
-        Encoding="Unicode"/>    
+        Encoding="Unicode"/>
   </Target>
-   
+
 </Project>

+ 3 - 23
src/Identity/test/Identity.Test/IdentityUIScriptsTest.cs

@@ -83,8 +83,7 @@ namespace Microsoft.AspNetCore.Identity.Test
         [Flaky("https://github.com/aspnet/AspNetCore-Internal/issues/2267", FlakyOn.AzP.macOS)]
         public async Task IdentityUI_ScriptTags_FallbackSourceContent_Matches_CDNContent(ScriptTag scriptTag)
         {
-            var slnDir = GetSolutionDir();
-            var wwwrootDir = Path.Combine(slnDir, "UI", "src", "wwwroot", scriptTag.Version);
+            var wwwrootDir = Path.Combine(AppContext.BaseDirectory, "UI", "src", "wwwroot", scriptTag.Version);
 
             var cdnContent = await _httpClient.GetStringAsync(scriptTag.Src);
             var fallbackSrcContent = File.ReadAllText(
@@ -109,9 +108,8 @@ namespace Microsoft.AspNetCore.Identity.Test
 
         private static List<ScriptTag> GetScriptTags()
         {
-            var slnDir = GetSolutionDir();
-            var uiDirV3 = Path.Combine(slnDir, "UI", "src", "Areas", "Identity", "Pages", "V3");
-            var uiDirV4 = Path.Combine(slnDir, "UI", "src", "Areas", "Identity", "Pages", "V4");
+            var uiDirV3 = Path.Combine(AppContext.BaseDirectory, "UI", "src", "Areas", "Identity", "Pages", "V3");
+            var uiDirV4 = Path.Combine(AppContext.BaseDirectory, "UI", "src", "Areas", "Identity", "Pages", "V4");
             var cshtmlFiles = GetRazorFiles(uiDirV3).Concat(GetRazorFiles(uiDirV4));
 
             var scriptTags = new List<ScriptTag>();
@@ -155,24 +153,6 @@ namespace Microsoft.AspNetCore.Identity.Test
             return scriptTags;
         }
 
-        private static string GetSolutionDir()
-        {
-            var dir = new DirectoryInfo(AppContext.BaseDirectory);
-            // On helix we use the published copy
-            if (!SkipOnHelixAttribute.OnHelix())
-            {
-                while (dir != null)
-                {
-                    if (File.Exists(Path.Combine(dir.FullName, "Identity.sln")))
-                    {
-                        break;
-                    }
-                    dir = dir.Parent;
-                }
-            }
-            return dir.FullName;
-        }
-
         private static string RemoveLineEndings(string originalString)
         {
             return originalString.Replace("\r\n", "").Replace("\n", "");

+ 2 - 2
src/Identity/test/Identity.Test/Microsoft.AspNetCore.Identity.Test.csproj

@@ -7,8 +7,8 @@
   <ItemGroup>
     <Compile Include="$(IdentityTestSharedSourceRoot)**\*.cs" />
     <Compile Include="$(SharedSourceRoot)test\SkipOnHelixAttribute.cs" />
-    <HelixContent Include="..\..\UI\src\Areas\Identity\Pages\**\*.*" LinkBase="UI\src\Areas\Identity\Pages" />
-    <HelixContent Include="..\..\UI\src\wwwroot\**\*.*" LinkBase="UI\src\wwwroot" />
+    <Content Include="..\..\UI\src\Areas\Identity\Pages\**\*.*" LinkBase="UI\src\Areas\Identity\Pages" />
+    <Content Include="..\..\UI\src\wwwroot\**\*.*" LinkBase="UI\src\wwwroot" />
   </ItemGroup>
 
   <ItemGroup>

+ 1 - 5
src/Installers/Debian/Directory.Build.props

@@ -1,14 +1,10 @@
 <Project>
-  <PropertyGroup>
-    <OutputInRepoRoot>true</OutputInRepoRoot>
-    <DisablePubternalApiCheck>true</DisablePubternalApiCheck>
-  </PropertyGroup>
-
   <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
 
   <UsingTask Condition=" '$(BuildToolsTaskAssembly)' != '' AND Exists('$(BuildToolsTaskAssembly)') " TaskName="Microsoft.AspNetCore.BuildTools.GenerateFileFromTemplate" AssemblyFile="$(BuildToolsTaskAssembly)" />
 
   <PropertyGroup>
+    <DisablePubternalApiCheck>true</DisablePubternalApiCheck>
     <OutputPath>$(InstallersOutputPath)</OutputPath>
     <IntermediateOutputPath>$(IntermediateOutputPath)$(TargetRuntimeIdentifier)\</IntermediateOutputPath>
 

+ 0 - 5
src/Installers/Rpm/Directory.Build.props

@@ -2,11 +2,6 @@
   Common properties for building RPM installers.
 -->
 <Project>
-
-  <PropertyGroup>
-    <OutputInRepoRoot>true</OutputInRepoRoot>
-  </PropertyGroup>
-
   <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
 
   <!-- Output paths -->

+ 0 - 1
src/Installers/Windows/.gitignore

@@ -1 +0,0 @@
-ancm/

+ 2 - 2
src/Installers/Windows/AspNetCoreModule-Setup/ANCMIISExpressV2/AncmIISExpressV2.wixproj

@@ -57,8 +57,8 @@
           Condition=" '$(IsProductInstaller)' == 'true' "
           AfterTargets="Build">
     <ItemGroup>
-      <BuildContentForAncm Include="$(RepoRoot)src\Servers\IIS\AspNetCoreModuleV2\AspNetCore\bin\$(Configuration)\$(TempPlatform)\*.*" />
-      <BuildContentForAncmHandler Include="$(RepoRoot)src\Servers\IIS\AspNetCoreModuleV2\OutOfProcessRequestHandler\bin\$(Configuration)\$(TempPlatform)\*.*" />
+      <BuildContentForAncm Include="$(ArtifactsBinDir)AspNetCore\$(TempPlatform)\$(Configuration)\*" />
+      <BuildContentForAncmHandler Include="$(ArtifactsBinDir)OutOfProcessRequestHandler\$(TempPlatform)\$(Configuration)\*" />
     </ItemGroup>
     <Copy SourceFiles="@(BuildContentForAncm)" DestinationFolder="$(InstallersOutputPath)\IISExpressSymbols\$(TempPlatform)" />
     <Copy SourceFiles="@(BuildContentForAncmHandler)" DestinationFolder="$(InstallersOutputPath)\IISExpressSymbols\$(TempPlatform)" />

+ 1 - 3
src/Installers/Windows/AspNetCoreModule-Setup/CustomAction/aspnetcoreCA.vcxproj

@@ -84,7 +84,7 @@
     <ProjectReference Include="$(IIS-Setup)iisca\lib\iisca.vcxproj">
       <Project>{7324770c-0871-4d73-be3d-5e2f3e9e1b1e}</Project>
     </ProjectReference>
-    <ProjectReference Include="$(IIS-Common)lib\CommonLib.vcxproj">
+    <ProjectReference Include="$(IIS-Common)lib\IISSetup.CommonLib.vcxproj">
       <Project>{b54a8f61-60de-4ad9-87ca-d102f230678e}</Project>
     </ProjectReference>
   </ItemGroup>
@@ -95,7 +95,5 @@
     </PropertyGroup>
     <Error Condition="!Exists('$(MSBuildProjectDirectory)\..\build\versions.props')" Text="$([System.String]::Format('$(ErrorText)', '$(MSBuildProjectDirectory)\..\build\versions.props'))" />
     <Error Condition="!Exists('$(MSBuildProjectDirectory)\..\build\settings.props')" Text="$([System.String]::Format('$(ErrorText)', '$(MSBuildProjectDirectory)\..\build\settings.props'))" />
-    <Error Condition="!Exists('$(MSBuildProjectDirectory)\..\build\copy-outputs.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(MSBuildProjectDirectory)\..\build\copy-outputs.targets'))" />
   </Target>
-  <Import Project="$(MSBuildProjectDirectory)\..\build\copy-outputs.targets" Condition="Exists('$(MSBuildProjectDirectory)\..\build\copy-outputs.targets')" />
 </Project>

+ 1 - 1
src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Common/Common.sln

@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio Version 16
 VisualStudioVersion = 16.0.0.0
 MinimumVisualStudioVersion = 16.0.0.0
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommonLib", "lib\CommonLib.vcxproj", "{B54A8F61-60DE-4AD9-87CA-D102F230678E}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IISSetup.CommonLib", "lib\IISSetup.CommonLib.vcxproj", "{B54A8F61-60DE-4AD9-87CA-D102F230678E}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reftrace", "reftrace\reftrace.vcxproj", "{A2599642-CBE5-4230-8511-3DC2D81874BE}"
 EndProject

+ 0 - 0
src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Common/lib/CommonLib.vcxproj → src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Common/lib/IISSetup.CommonLib.vcxproj


+ 1 - 1
src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Setup.sln

@@ -5,7 +5,7 @@ VisualStudioVersion = 16.0.0.0
 MinimumVisualStudioVersion = 16.0.0.0
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iisca", "iisca\lib\iisca.vcxproj", "{7324770C-0871-4D73-BE3D-5E2F3E9E1B1E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommonLib", "IIS-Common\lib\CommonLib.vcxproj", "{B54A8F61-60DE-4AD9-87CA-D102F230678E}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IISSetup.CommonLib", "IIS-Common\lib\IISSetup.CommonLib.vcxproj", "{B54A8F61-60DE-4AD9-87CA-D102F230678E}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution

+ 1 - 1
src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/iisca/lib/iisca.vcxproj

@@ -61,7 +61,7 @@
     <ClInclude Include="wuerror.h" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(IIS-Common)lib\CommonLib.vcxproj">
+    <ProjectReference Include="$(IIS-Common)lib\IISSetup.CommonLib.vcxproj">
       <Project>{b54a8f61-60de-4ad9-87ca-d102f230678e}</Project>
     </ProjectReference>
   </ItemGroup>

+ 0 - 18
src/Installers/Windows/AspNetCoreModule-Setup/build/copy-outputs.targets

@@ -1,18 +0,0 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-
-  <ItemGroup Condition="'@(BuildOutputFiles)' == ''">
-    <BuildOutputFiles Include="$(OutDir)\$(TargetName)$(TargetExt)"/>
-  </ItemGroup>
-
-  <PropertyGroup>
-    <BuildOutputCopyPath Condition="$(BuildOutputCopyPath) == ''">$(Configuration)\$(PlatformShortname)\</BuildOutputCopyPath>
-  </PropertyGroup>
-
-  <Target Name="CopyOutputsToRoot" AfterTargets="Build">
-    <Copy  
-      SourceFiles="@(BuildOutputFiles)"  
-      DestinationFolder="$(SolutionDir)bin\$(BuildOutputCopyPath)"
-    />
-  </Target>  
-  
-</Project>

+ 0 - 5
src/Installers/Windows/Directory.Build.props

@@ -1,9 +1,4 @@
 <Project>
-
-  <PropertyGroup>
-    <OutputInRepoRoot>true</OutputInRepoRoot>
-  </PropertyGroup>
-
   <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
 
   <Import Project="Wix.props"  Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />

+ 1 - 1
src/Installers/Windows/Installers.sln

@@ -7,7 +7,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aspnetcoreCA", "AspNetCoreM
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iisca", "AspNetCoreModule-Setup\IIS-Setup\iisca\lib\iisca.vcxproj", "{7324770C-0871-4D73-BE3D-5E2F3E9E1B1E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommonLib", "AspNetCoreModule-Setup\IIS-Setup\IIS-Common\lib\CommonLib.vcxproj", "{B54A8F61-60DE-4AD9-87CA-D102F230678E}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IISSetup.CommonLib", "AspNetCoreModule-Setup\IIS-Setup\IIS-Common\lib\IISSetup.CommonLib.vcxproj", "{B54A8F61-60DE-4AD9-87CA-D102F230678E}"
 EndProject
 Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "AncmIISExpressV2", "AspNetCoreModule-Setup\ANCMIISExpressV2\AncmIISExpressV2.wixproj", "{17C76489-4C09-4E14-B81C-7A86CD937144}"
 EndProject

BIN
src/Installers/Windows/UpgradeLog.htm


+ 9 - 0
src/Middleware/CORS/samples/Directory.Build.props

@@ -0,0 +1,9 @@
+<Project>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
+
+  <PropertyGroup>
+    <!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
+    <BaseOutputPath />
+    <OutputPath />
+  </PropertyGroup>
+</Project>

+ 5 - 0
src/Middleware/CORS/test/FunctionalTests/FunctionalTests.csproj → src/Middleware/CORS/test/FunctionalTests/CORS.FunctionalTests.csproj

@@ -4,8 +4,13 @@
     <TargetFramework>netcoreapp3.0</TargetFramework>
     <TestGroupName>Cors.FunctionalTests</TestGroupName>
     <DefaultItemExcludes>$(DefaultItemExcludes);node_modules\**\*</DefaultItemExcludes>
+
+    <!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
     <!-- https://github.com/aspnet/AspNetCore/issues/6549 -->
     <BuildHelixPayload>false</BuildHelixPayload>
+    <BaseOutputPath />
+    <OutputPath />
+
   </PropertyGroup>
 
   <ItemGroup>

+ 0 - 0
src/Middleware/CORS/test/FunctionalTests/CORS.FunctionalTests.npmproj → src/Middleware/CORS/test/FunctionalTests/CORS.Npm.FunctionalTests.npmproj


+ 9 - 0
src/Middleware/CORS/test/testassets/Directory.Build.props

@@ -0,0 +1,9 @@
+<Project>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
+
+  <PropertyGroup>
+    <!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
+    <BaseOutputPath />
+    <OutputPath />
+  </PropertyGroup>
+</Project>

+ 2 - 2
src/Middleware/Middleware.sln

@@ -9,7 +9,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{A86E
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EchoApp", "WebSockets\samples\EchoApp\EchoApp.csproj", "{0792C20B-1D18-4D7C-9C0F-A6F45A0F378E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestServer", "WebSockets\samples\TestServer\TestServer.csproj", "{4E5F5FCC-172C-44D9-BEA0-39098A79CD0B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebSockets.TestServer", "WebSockets\samples\TestServer\WebSockets.TestServer.csproj", "{4E5F5FCC-172C-44D9-BEA0-39098A79CD0B}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.WebSockets", "WebSockets\src\Microsoft.AspNetCore.WebSockets.csproj", "{BECAA6A1-1AA4-415E-ADF3-07C103333826}"
 EndProject
@@ -245,7 +245,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Crypto
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.DataProtection.Abstractions", "..\DataProtection\Abstractions\src\Microsoft.AspNetCore.DataProtection.Abstractions.csproj", "{7343B4E4-C5A2-49E2-B431-4D1E6A26E424}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunctionalTests", "CORS\test\FunctionalTests\FunctionalTests.csproj", "{E025D98E-BD85-474A-98A9-E7F44F392F8E}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CORS.FunctionalTests", "CORS\test\FunctionalTests\CORS.FunctionalTests.csproj", "{E025D98E-BD85-474A-98A9-E7F44F392F8E}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleDestination", "CORS\samples\SampleDestination\SampleDestination.csproj", "{52CDD110-77DD-4C4D-8C72-4570F6EF20DD}"
 EndProject

+ 0 - 2
src/Middleware/NodeServices/samples/NodeServicesExamples/.gitignore

@@ -1,2 +0,0 @@
-/node_modules/
-/Properties/launchSettings.json

+ 5 - 0
src/Middleware/NodeServices/test/Microsoft.AspNetCore.NodeServices.Tests.csproj

@@ -2,8 +2,13 @@
 
   <PropertyGroup>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+
+    <!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
     <!-- https://github.com/aspnet/AspNetCore/issues/8044 -->
     <BuildHelixPayload>false</BuildHelixPayload>
+    <BaseOutputPath />
+    <OutputPath />
+
   </PropertyGroup>
 
   <ItemGroup>

+ 0 - 2
src/Middleware/SpaServices/src/.gitignore

@@ -1,2 +0,0 @@
-/bin/
-/node_modules/

+ 0 - 0
src/Middleware/WebSockets/samples/TestServer/TestServer.csproj → src/Middleware/WebSockets/samples/TestServer/WebSockets.TestServer.csproj


+ 1 - 0
src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.csproj

@@ -33,6 +33,7 @@
       <NuspecProperties>
         id=$(PackageId);
         authors=$(Authors);
+        baseOutputPath=$(BaseOutputPath);
         configuration=$(Configuration);
         copyright=$(Copyright);
         description=$(PackageDescription);

+ 2 - 2
src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.nuspec

@@ -19,7 +19,7 @@
   <files>
     <file src="build\*" target="build" />
     <file src="buildMultiTargeting\*" target="buildMultiTargeting" />
-    <file src="bin\$configuration$\net461\Microsoft.Extensions.ApiDescription.Tasks.*" target="tasks\net461" />
-    <file src="bin\$configuration$\netstandard2.0\Microsoft.Extensions.ApiDescription.Tasks.*" target="tasks\netstandard2.0" />
+    <file src="$baseOutputPath$\$configuration$\net461\Microsoft.Extensions.ApiDescription.Tasks.*" target="tasks\net461" />
+    <file src="$baseOutputPath$\$configuration$\netstandard2.0\Microsoft.Extensions.ApiDescription.Tasks.*" target="tasks\netstandard2.0" />
   </files>
 </package>

+ 6 - 1
src/Mvc/Mvc.Analyzers/test/Mvc.Analyzers.Test.csproj

@@ -4,8 +4,13 @@
     <TargetFramework>netcoreapp3.0</TargetFramework>
     <PreserveCompilationContext>true</PreserveCompilationContext>
     <RootNamespace>Microsoft.AspNetCore.Mvc.Analyzers</RootNamespace>
-    <!-- https://github.com/aspnet/AspNetCore/issues/6549 -->	
+
+    <!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
+    <!-- https://github.com/aspnet/AspNetCore/issues/6549 -->
     <BuildHelixPayload>false</BuildHelixPayload>
+    <BaseOutputPath />
+    <OutputPath />
+
    </PropertyGroup>
 
   <ItemGroup>

+ 6 - 1
src/Mvc/Mvc.Api.Analyzers/test/Mvc.Api.Analyzers.Test.csproj

@@ -3,8 +3,13 @@
   <PropertyGroup>
     <TargetFramework>netcoreapp3.0</TargetFramework>
     <RootNamespace>Microsoft.AspNetCore.Mvc.Api.Analyzers</RootNamespace>
-    <!-- https://github.com/aspnet/AspNetCore/issues/6549 -->	
+
+    <!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
+    <!-- https://github.com/aspnet/AspNetCore/issues/6549 -->
     <BuildHelixPayload>false</BuildHelixPayload>
+    <BaseOutputPath />
+    <OutputPath />
+
    </PropertyGroup>
 
   <ItemGroup>

+ 1 - 1
src/Mvc/Mvc.sln

@@ -14,7 +14,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebSites", "WebSites", "{16
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BasicWebSite", "test\WebSites\BasicWebSite\BasicWebSite.csproj", "{34DF1487-12C6-476C-BE0A-F31DF1939AE5}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RoutingWebSite", "test\WebSites\RoutingWebSite\RoutingWebSite.csproj", "{42CDBF4A-E238-4C0F-A416-44588363EB4C}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mvc.RoutingWebSite", "test\WebSites\RoutingWebSite\Mvc.RoutingWebSite.csproj", "{42CDBF4A-E238-4C0F-A416-44588363EB4C}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RazorWebSite", "test\WebSites\RazorWebSite\RazorWebSite.csproj", "{B07CAF59-11ED-40E3-A5DB-E1178F84FA78}"
 EndProject

+ 1 - 1
src/Mvc/test/Mvc.FunctionalTests/Microsoft.AspNetCore.Mvc.FunctionalTests.csproj

@@ -46,7 +46,7 @@
     <ProjectReference Include="..\WebSites\RazorBuildWebSite\RazorBuildWebSite.csproj" />
     <ProjectReference Include="..\WebSites\RazorPagesWebSite\RazorPagesWebSite.csproj" />
     <ProjectReference Include="..\WebSites\RazorWebSite\RazorWebSite.csproj" />
-    <ProjectReference Include="..\WebSites\RoutingWebSite\RoutingWebSite.csproj" />
+    <ProjectReference Include="..\WebSites\RoutingWebSite\Mvc.RoutingWebSite.csproj" />
     <ProjectReference Include="..\WebSites\SecurityWebSite\SecurityWebSite.csproj" />
     <ProjectReference Include="..\WebSites\SimpleWebSite\SimpleWebSite.csproj" />
     <ProjectReference Include="..\WebSites\TagHelpersWebSite\TagHelpersWebSite.csproj" />

+ 0 - 0
src/Mvc/test/WebSites/RoutingWebSite/RoutingWebSite.csproj → src/Mvc/test/WebSites/RoutingWebSite/Mvc.RoutingWebSite.csproj


+ 6 - 2
src/ProjectTemplates/test/ProjectTemplates.Tests.csproj

@@ -10,12 +10,16 @@
 
     <RunTemplateTests Condition="'$(RunTemplateTests)' == ''" >true</RunTemplateTests>
     <SkipTests Condition="'$(RunTemplateTests)' != 'true'">true</SkipTests>
+
+    <!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
     <!-- https://github.com/aspnet/AspNetCore/issues/6857 -->
     <BuildHelixPayload>false</BuildHelixPayload>
+    <BaseOutputPath />
+    <OutputPath />
 
     <!-- Properties that affect test runs -->
     <!-- TestTemplateCreationFolder is the folder where the templates will be created. Will point out to $(OutputDir)$(TestTemplateCreationFolder) -->
-    <TestTemplateCreationFolder>TestTemplates</TestTemplateCreationFolder>
+    <TestTemplateCreationFolder>TestTemplates\</TestTemplateCreationFolder>
     <TestPackageRestorePath>$([MSBuild]::EnsureTrailingSlash('$(RepoRoot)'))obj\template-restore\</TestPackageRestorePath>
     <TestTemplateTestsProps>TemplateTests.props</TestTemplateTestsProps>
   </PropertyGroup>
@@ -57,7 +61,7 @@
 
   <Target Name="PrepareForTest" BeforeTargets="CoreCompile" Condition="$(DesignTimeBuild) != true">
     <PropertyGroup>
-      <TestTemplateCreationFolder>$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)$([MSBuild]::EnsureTrailingSlash('$(OutputPath)$(TestTemplateCreationFolder)'))'))</TestTemplateCreationFolder>
+      <TestTemplateCreationFolder>$([MSBuild]::NormalizePath('$(OutputPath)$(TestTemplateCreationFolder)'))</TestTemplateCreationFolder>
       <TestTemplateTestsProps>$(TestTemplateCreationFolder)$(TestTemplateTestsProps)</TestTemplateTestsProps>
       <CustomTemplateHivePath>$(TestTemplateCreationFolder)\Hives\$([System.Guid]::NewGuid())\.templateengine</CustomTemplateHivePath>
     </PropertyGroup>

+ 7 - 10
src/Security/test/AuthSamples.FunctionalTests/AuthSamples.FunctionalTests.csproj

@@ -29,13 +29,13 @@
 
   <Target Name="PublishAssets" AfterTargets="Publish">
     <ItemGroup>
-      <_PublishFiles Include="$(MSBuildThisFileDirectory)..\..\samples\ClaimsTransformation\bin\$(Configuration)\netcoreapp3.0\ClaimsTransformation.deps.json" />
-      <_PublishFiles Include="$(MSBuildThisFileDirectory)..\..\samples\Cookies\bin\$(Configuration)\netcoreapp3.0\Cookies.deps.json" />
-      <_PublishFiles Include="$(MSBuildThisFileDirectory)..\..\samples\CustomPolicyProvider\bin\$(Configuration)\netcoreapp3.0\CustomPolicyProvider.deps.json" />
-      <_PublishFiles Include="$(MSBuildThisFileDirectory)..\..\samples\DynamicSchemes\bin\$(Configuration)\netcoreapp3.0\DynamicSchemes.deps.json" />
-      <_PublishFiles Include="$(MSBuildThisFileDirectory)..\..\samples\Identity.ExternalClaims\bin\$(Configuration)\netcoreapp3.0\Identity.ExternalClaims.deps.json" />
-      <_PublishFiles Include="$(MSBuildThisFileDirectory)..\..\samples\PathSchemeSelection\bin\$(Configuration)\netcoreapp3.0\PathSchemeSelection.deps.json" />
-      <_PublishFiles Include="$(MSBuildThisFileDirectory)..\..\samples\StaticFilesAuth\bin\$(Configuration)\netcoreapp3.0\StaticFilesAuth.deps.json" />
+      <_PublishFiles Include="$(ArtifactsBinDir)ClaimsTransformation\$(Configuration)\netcoreapp3.0\ClaimsTransformation.deps.json" />
+      <_PublishFiles Include="$(ArtifactsBinDir)Cookies\$(Configuration)\netcoreapp3.0\Cookies.deps.json" />
+      <_PublishFiles Include="$(ArtifactsBinDir)CustomPolicyProvider\$(Configuration)\netcoreapp3.0\CustomPolicyProvider.deps.json" />
+      <_PublishFiles Include="$(ArtifactsBinDir)DynamicSchemes\$(Configuration)\netcoreapp3.0\DynamicSchemes.deps.json" />
+      <_PublishFiles Include="$(ArtifactsBinDir)Identity.ExternalClaims\$(Configuration)\netcoreapp3.0\Identity.ExternalClaims.deps.json" />
+      <_PublishFiles Include="$(ArtifactsBinDir)PathSchemeSelection\$(Configuration)\netcoreapp3.0\PathSchemeSelection.deps.json" />
+      <_PublishFiles Include="$(ArtifactsBinDir)StaticFilesAuth\$(Configuration)\netcoreapp3.0\StaticFilesAuth.deps.json" />
       <_claimsWwwrootFiles Include="$(MSBuildThisFileDirectory)..\..\samples\ClaimsTransformation\wwwroot\**\*.*" />
       <_cookiesWwwrootFiles Include="$(MSBuildThisFileDirectory)..\..\samples\Cookies\wwwroot\**\*.*" />
       <_customProviderFiles Include="$(MSBuildThisFileDirectory)..\..\samples\CustomPolicyProvider\**\*.*" />
@@ -44,9 +44,6 @@
       <_pathWwwrootFiles Include="$(MSBuildThisFileDirectory)..\..\samples\PathSchemeSelection\wwwroot\**\*.*" />
       <_staticFiles Include="$(MSBuildThisFileDirectory)..\..\samples\StaticFilesAuth\**\*.*" />
     </ItemGroup>
-    <Copy
-      SourceFiles="@(_PublishFiles)"
-      DestinationFolder="$(PublishDir)" />
     <Copy
       SourceFiles="@(_PublishFiles)"
       DestinationFolder="$(PublishDir)" />

+ 0 - 58
src/Servers/IIS/.gitignore

@@ -1,61 +1,3 @@
-[Oo]bj/
-[Bb]in/
-TestResults/
-.nuget/
-*.sln.ide/
-_ReSharper.*/
-packages/
-artifacts/
-PublishProfiles/
-BenchmarkDotNet.Artifacts/
-*.user
-*.suo
-*.cache
-*.docstates
-_ReSharper.*
-nuget.exe
-project.lock.json
-*net45.csproj
-*net451.csproj
-*k10.csproj
-*.psess
-*.vsp
-*.pidb
-*.userprefs
-*DS_Store
-*.ncrunchsolution
-*.*sdf
-*.ipch
-.vscode/
-*.nuget.props
-*.nuget.targets
-*.bin
-*.vs/
-.testPublish/
-*.obj
-*.tlog
-*.CppClean.log
-*msbuild.log
-gtest.log
-Debug/
-x64/Debug/
-Release/
-x64/Release/
-x64/
-*vcxproj.filters
-*.aps
-*.pdb
-*.lib
-*.idb
-*.res
-*.pch
 aspnetcoremodule.h
 aspnetcore_msg.h
 aspnetcore_msg.rc
-version.h
-test/*/Debug
-test/*/Release
-.build
-*.VC.*db
-global.json
-msbuild.binlog

+ 2 - 4
src/Servers/IIS/AspNetCoreModuleV2/AspNetCore/AspNetCore.vcxproj

@@ -26,6 +26,7 @@
     <TargetName>aspnetcorev2</TargetName>
     <LinkIncremental>false</LinkIncremental>
     <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+    <OutDirName>AspNetCoreModuleShim</OutDirName>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Label="Configuration">
@@ -74,9 +75,6 @@
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   </ImportGroup>
   <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
-  </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
       <WarningLevel>Level4</WarningLevel>
@@ -316,4 +314,4 @@
     </ItemGroup>
     <WriteLinesToFile File="$(InstallersOutputPath)aspnetcoremodule.version" Lines="@(VersionFileContents)" OverWrite="true" WriteOnlyWhenDifferent="True" />
   </Target>
-</Project>
+</Project>

+ 1 - 6
src/Servers/IIS/AspNetCoreModuleV2/CommonLib/CommonLib.vcxproj

@@ -75,20 +75,15 @@
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <LinkIncremental>true</LinkIncremental>
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <LinkIncremental>true</LinkIncremental>
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <LinkIncremental>false</LinkIncremental>
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <LinkIncremental>false</LinkIncremental>
-    <IncludePath>C:\AspNetCoreModule\src\IISLib;$(IncludePath)</IncludePath>
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
@@ -282,4 +277,4 @@
   <Import Project="..\..\build\native.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>

+ 5 - 17
src/Servers/IIS/AspNetCoreModuleV2/CommonLibTests/CommonLibTests.vcxproj

@@ -34,18 +34,6 @@
   <ImportGroup Label="Shared" />
   <ImportGroup Label="PropertySheets" />
   <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
-  </PropertyGroup>
   <ItemGroup>
     <ClInclude Include="Helpers.h" />
     <ClInclude Include="fakeclasses.h" />
@@ -102,7 +90,7 @@
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <SubSystem>Console</SubSystem>
-      <AdditionalLibraryDirectories>..\InProcessRequestHandler\Win32\$(Configuration)\;</AdditionalLibraryDirectories>
+      <AdditionalLibraryDirectories>$(ArtifactsObjDir)InProcessRequestHandler\Win32\$(Configuration)\;</AdditionalLibraryDirectories>
       <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;inprocessapplication.obj;inprocesshandler.obj;ahadmin.lib;Rpcrt4.lib;inprocessapplicationbase.obj;stdafx.obj;version.lib;inprocessoptions.obj;%(AdditionalDependencies)</AdditionalDependencies>
       <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
     </Link>
@@ -129,7 +117,7 @@
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <SubSystem>Console</SubSystem>
-      <AdditionalLibraryDirectories>..\InProcessRequestHandler\x64\$(Configuration)\;</AdditionalLibraryDirectories>
+      <AdditionalLibraryDirectories>$(ArtifactsObjDir)InProcessRequestHandler\x64\$(Configuration)\;</AdditionalLibraryDirectories>
       <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;inprocessapplication.obj;inprocesshandler.obj;ahadmin.lib;Rpcrt4.lib;inprocessapplicationbase.obj;stdafx.obj;version.lib;inprocessoptions.obj;%(AdditionalDependencies)</AdditionalDependencies>
       <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
     </Link>
@@ -158,7 +146,7 @@
       <AdditionalOptions>/NODEFAULTLIB:libucrt.lib /DEFAULTLIB:ucrt.lib %(AdditionalOptions)</AdditionalOptions>
       <OptimizeReferences>true</OptimizeReferences>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <AdditionalLibraryDirectories>..\InProcessRequestHandler\Win32\$(Configuration)\;</AdditionalLibraryDirectories>
+      <AdditionalLibraryDirectories>$(ArtifactsObjDir)InProcessRequestHandler\Win32\$(Configuration)\;</AdditionalLibraryDirectories>
       <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;inprocessapplication.obj;inprocesshandler.obj;ahadmin.lib;Rpcrt4.lib;inprocessapplicationbase.obj;stdafx.obj;version.lib;inprocessoptions.obj;%(AdditionalDependencies)</AdditionalDependencies>
       <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
     </Link>
@@ -187,7 +175,7 @@
       <AdditionalOptions>/NODEFAULTLIB:libucrt.lib /DEFAULTLIB:ucrt.lib %(AdditionalOptions)</AdditionalOptions>
       <OptimizeReferences>true</OptimizeReferences>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <AdditionalLibraryDirectories>..\InProcessRequestHandler\x64\$(Configuration)\;</AdditionalLibraryDirectories>
+      <AdditionalLibraryDirectories>$(ArtifactsObjDir)InProcessRequestHandler\x64\$(Configuration)\;</AdditionalLibraryDirectories>
       <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;inprocessapplication.obj;inprocesshandler.obj;ahadmin.lib;Rpcrt4.lib;inprocessapplicationbase.obj;stdafx.obj;version.lib;inprocessoptions.obj;%(AdditionalDependencies)</AdditionalDependencies>
       <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
     </Link>
@@ -199,4 +187,4 @@
   <PropertyGroup>
     <IsTestProject>true</IsTestProject>
   </PropertyGroup>
-</Project>
+</Project>

+ 1 - 13
src/Servers/IIS/AspNetCoreModuleV2/IISLib/IISLib.vcxproj

@@ -71,18 +71,6 @@
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   </ImportGroup>
   <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
-  </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
       <PrecompiledHeader>
@@ -206,4 +194,4 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>

+ 1 - 6
src/Servers/IIS/AspNetCoreModuleV2/RequestHandlerLib/RequestHandlerLib.vcxproj

@@ -75,20 +75,15 @@
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <LinkIncremental>true</LinkIncremental>
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <LinkIncremental>true</LinkIncremental>
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <LinkIncremental>false</LinkIncremental>
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <LinkIncremental>false</LinkIncremental>
-    <IncludePath>C:\AspNetCoreModule\src\IISLib;$(IncludePath)</IncludePath>
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
@@ -224,4 +219,4 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>

+ 1 - 5
src/Servers/IIS/AspNetCoreModuleV2/gtest/gtest.vcxproj

@@ -84,25 +84,21 @@
     <LinkIncremental>true</LinkIncremental>
     <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);</IncludePath>
     <SourcePath>$(VC_SourcePath);</SourcePath>
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <LinkIncremental>true</LinkIncremental>
     <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);</IncludePath>
     <SourcePath>$(VC_SourcePath);</SourcePath>
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <LinkIncremental>false</LinkIncremental>
     <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);</IncludePath>
     <SourcePath>$(VC_SourcePath);</SourcePath>
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <LinkIncremental>false</LinkIncremental>
     <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);</IncludePath>
     <SourcePath>$(VC_SourcePath);</SourcePath>
-    <OutDir>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutDir>
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
@@ -183,4 +179,4 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>

+ 4 - 4
src/Servers/IIS/IIS/benchmarks/IIS.Performance/IIS.Performance.csproj

@@ -16,10 +16,10 @@
   </ItemGroup>
 
   <ItemGroup Condition="'$(BuildIisNativeProjects)' == 'true'">
-    <None Include="$(MSBuildThisFileDirectory)..\..\..\AspNetCoreModuleV2\InProcessRequestHandler\bin\$(Configuration)\x64\aspnetcorev2_inprocess.dll" CopyToOutputDirectory="PreserveNewest" Visible="true" Link="%(FileName)%(Extension)" />
-    <None Include="$(MSBuildThisFileDirectory)..\..\..\AspNetCoreModuleV2\InProcessRequestHandler\bin\$(Configuration)\x64\aspnetcorev2_inprocess.pdb" CopyToOutputDirectory="PreserveNewest" Visible="true" Link="%(FileName)%(Extension)" />
-    <None Include="$(MSBuildThisFileDirectory)..\..\..\AspNetCoreModuleV2\AspNetCore\bin\$(Configuration)\x64\aspnetcorev2.dll" CopyToOutputDirectory="PreserveNewest" Visible="true" Link="%(FileName)%(Extension)" />
-    <None Include="$(MSBuildThisFileDirectory)..\..\..\AspNetCoreModuleV2\AspNetCore\bin\$(Configuration)\x64\aspnetcorev2.pdb" CopyToOutputDirectory="PreserveNewest" Visible="true" Link="%(FileName)%(Extension)" />
+    <None Include="$(ArtifactsBinDir)InProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_inprocess.dll" CopyToOutputDirectory="PreserveNewest" Visible="true" Link="%(FileName)%(Extension)" />
+    <None Include="$(ArtifactsBinDir)InProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_inprocess.pdb" CopyToOutputDirectory="PreserveNewest" Visible="true" Link="%(FileName)%(Extension)" />
+    <None Include="$(ArtifactsBinDir)AspNetCoreModuleShim\x64\$(Configuration)\aspnetcorev2.dll" CopyToOutputDirectory="PreserveNewest" Visible="true" Link="%(FileName)%(Extension)" />
+    <None Include="$(ArtifactsBinDir)AspNetCoreModuleShim\x64\$(Configuration)\aspnetcorev2.pdb" CopyToOutputDirectory="PreserveNewest" Visible="true" Link="%(FileName)%(Extension)" />
   </ItemGroup>
 
   <ItemGroup>

+ 4 - 0
src/Servers/IIS/IIS/test/Directory.Build.props

@@ -2,6 +2,10 @@
   <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
 
   <PropertyGroup>
+    <!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
+    <BaseOutputPath />
+    <OutputPath />
+
     <!-- IIS tests are Windows-only -->
     <IsWindowsOnlyTest>true</IsWindowsOnlyTest>
   </PropertyGroup>

+ 1 - 1
src/Servers/IIS/IIS/test/IIS.ForwardsCompatibility.FunctionalTests/IIS.ForwardsCompatibility.FunctionalTests.csproj

@@ -13,7 +13,7 @@
     <ProjectReference Include="..\Common.Tests\Common.Tests.csproj" />
     <ProjectReference Include="$(RepoRoot)src\Hosting\Server.IntegrationTesting\src\Microsoft.AspNetCore.Server.IntegrationTesting.csproj" />
 
-    <ProjectReference Include="..\testassets\InProcessForwardsCompatWebSite\InProcessWebSite.csproj">
+    <ProjectReference Include="..\testassets\InProcessForwardsCompatWebSite\InProcessForwardsCompatWebSite.csproj">
       <ReferenceOutputAssembly>False</ReferenceOutputAssembly>
     </ProjectReference>
     <ProjectReference Include="..\testassets\OutOfProcessWebSite\OutOfProcessWebSite.csproj">

+ 1 - 0
src/Servers/IIS/IIS/test/testassets/InProcessForwardsCompatWebSite/InProcessWebSite.csproj → src/Servers/IIS/IIS/test/testassets/InProcessForwardsCompatWebSite/InProcessForwardsCompatWebSite.csproj

@@ -4,6 +4,7 @@
 
   <PropertyGroup>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <AssemblyName>InProcessWebSite</AssemblyName>
     <TestAssetOutputName>InProcessForwardsCompatWebSite</TestAssetOutputName>
     <DefineConstants>FORWARDCOMPAT</DefineConstants>
   </PropertyGroup>

+ 0 - 11
src/Servers/IIS/IISIntegration.sln

@@ -3,14 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio Version 16
 VisualStudioVersion = 16.0.0.0
 MinimumVisualStudioVersion = 16.0.0.0
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{0EF45656-B25D-40D8-959C-726EAF185E60}"
-	ProjectSection(SolutionItems) = preProject
-		.editorconfig = .editorconfig
-		Directory.Build.props = Directory.Build.props
-		Directory.Build.targets = Directory.Build.targets
-		NuGet.Config = NuGet.Config
-	EndProjectSection
-EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server.IISIntegration", "IISIntegration\src\Microsoft.AspNetCore.Server.IISIntegration.csproj", "{8B3446E8-E6A8-4591-AA63-A95837C6E97C}"
 	ProjectSection(ProjectDependencies) = postProject
 		{46A8612B-418B-4D70-B3A7-A21DD0627473} = {46A8612B-418B-4D70-B3A7-A21DD0627473}
@@ -23,11 +15,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{7E80C58E
 		build\assets.props = build\assets.props
 		build\Build.Settings = build\Build.Settings
 		build\Config.Definitions.Props = build\Config.Definitions.Props
-		build\Key.snk = build\Key.snk
 		build\launchSettings.json = build\launchSettings.json
 		build\native.targets = build\native.targets
-		build\repo.props = build\repo.props
-		build\repo.targets = build\repo.targets
 		build\testsite.props = build\testsite.props
 	EndProjectSection
 EndProject

+ 0 - 2
src/Servers/IIS/build/Build.Settings

@@ -5,8 +5,6 @@
      <Configuration Condition="'$(Configuration)'==''">Debug</Configuration>
      <Platform Condition="'$(Platform)' == ''">Win32</Platform>
      <PlatformToolset>v142</PlatformToolset>
-     <OutputPath Condition="'$(OutputPath)' == ''">$(MSBuildProjectDirectory)\bin\$(Configuration)\$(Platform)\</OutputPath>
-     <OutDir>$(OutputPath)</OutDir>
      <AspNetCoreModuleTargetName>aspnetcore</AspNetCoreModuleTargetName>
    </PropertyGroup>
 

+ 98 - 83
src/Servers/IIS/build/assets.props

@@ -9,200 +9,215 @@
     </PropertyGroup>
     <ItemGroup>
        <Components
-          VCPlatform="x64" 
           Platform="x64" 
-          ProjectName="AspNetCore.vcxproj" 
+          VCPlatform="x64" 
+          BaseOutputPath="AspNetCoreModuleV2" 
           NativeAsset="aspnetcorev2" 
+          ProjectName="AspNetCore.vcxproj" 
           PropetyName="AspNetCoreModuleV2Shim" 
-          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="AspNetCoreModuleShim" 
           ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore" 
-          DllLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\bin\$(Configuration)\x64\aspnetcorev2.dll" 
           Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj" 
-          PdbLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\bin\$(Configuration)\x64\aspnetcorev2.pdb"
+          DllLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\x64\$(Configuration)\aspnetcorev2.dll" 
+          PdbLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\x64\$(Configuration)\aspnetcorev2.pdb"
         />
         <Components
-          VCPlatform="Win32" 
           Platform="x86" 
-          ProjectName="AspNetCore.vcxproj" 
+          VCPlatform="Win32" 
+          BaseOutputPath="AspNetCoreModuleV2" 
           NativeAsset="aspnetcorev2" 
+          ProjectName="AspNetCore.vcxproj" 
           PropetyName="AspNetCoreModuleV2Shim" 
-          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="AspNetCoreModuleShim" 
           ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore" 
-          DllLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\bin\$(Configuration)\Win32\aspnetcorev2.dll" 
           Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj" 
-          PdbLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\bin\$(Configuration)\Win32\aspnetcorev2.pdb"
+          DllLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\Win32\$(Configuration)\aspnetcorev2.dll" 
+          PdbLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\Win32\$(Configuration)\aspnetcorev2.pdb"
         />
         <Components
-          VCPlatform="x64" 
           Platform="x64" 
-          ProjectName="InProcessRequestHandler.vcxproj" 
+          VCPlatform="x64" 
+          BaseOutputPath="AspNetCoreModuleV2" 
           NativeAsset="aspnetcorev2_inprocess" 
+          ProjectName="InProcessRequestHandler.vcxproj" 
           PropetyName="AspNetCoreModuleV2InProcessHandler" 
-          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="InProcessRequestHandler" 
           ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler" 
-          DllLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\bin\$(Configuration)\x64\aspnetcorev2_inprocess.dll" 
           Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj" 
-          PdbLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\bin\$(Configuration)\x64\aspnetcorev2_inprocess.pdb"
+          DllLocation="$(ArtifactsBinDir)InProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_inprocess.dll" 
+          PdbLocation="$(ArtifactsBinDir)InProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_inprocess.pdb"
         />
         <Components
-          VCPlatform="Win32" 
           Platform="x86" 
-          ProjectName="InProcessRequestHandler.vcxproj" 
+          VCPlatform="Win32" 
+          BaseOutputPath="AspNetCoreModuleV2" 
           NativeAsset="aspnetcorev2_inprocess" 
+          ProjectName="InProcessRequestHandler.vcxproj" 
           PropetyName="AspNetCoreModuleV2InProcessHandler" 
-          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="InProcessRequestHandler" 
           ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler" 
-          DllLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\bin\$(Configuration)\Win32\aspnetcorev2_inprocess.dll" 
           Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj" 
-          PdbLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\bin\$(Configuration)\Win32\aspnetcorev2_inprocess.pdb"
+          DllLocation="$(ArtifactsBinDir)InProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_inprocess.dll" 
+          PdbLocation="$(ArtifactsBinDir)InProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_inprocess.pdb"
         />
         <Components
-          VCPlatform="x64" 
           Platform="x64" 
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler" 
+          VCPlatform="x64" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          NativeAsset="aspnetcorev2_outofprocess" 
           ProjectName="OutOfProcessRequestHandler.vcxproj" 
           PropetyName="AspNetCoreModuleV2OutOfProcessHandler" 
-          NativeAsset="aspnetcorev2_outofprocess" 
-          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="OutOfProcessRequestHandler" 
           PackageSubPath="$(AspNetCoreModuleOutOfProcessVersion)\" 
-          DllLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\bin\$(Configuration)\x64\aspnetcorev2_outofprocess.dll" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler" 
           Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj" 
-          PdbLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\bin\$(Configuration)\x64\aspnetcorev2_outofprocess.pdb"
+          DllLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_outofprocess.dll" 
+          PdbLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_outofprocess.pdb"
         />
         <Components
-          VCPlatform="Win32" 
           Platform="x86" 
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler" 
+          VCPlatform="Win32" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          NativeAsset="aspnetcorev2_outofprocess" 
           ProjectName="OutOfProcessRequestHandler.vcxproj" 
           PropetyName="AspNetCoreModuleV2OutOfProcessHandler" 
-          NativeAsset="aspnetcorev2_outofprocess" 
-          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="OutOfProcessRequestHandler" 
           PackageSubPath="$(AspNetCoreModuleOutOfProcessVersion)\" 
-          DllLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\bin\$(Configuration)\Win32\aspnetcorev2_outofprocess.dll" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler" 
           Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj" 
-          PdbLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\bin\$(Configuration)\Win32\aspnetcorev2_outofprocess.pdb"
+          DllLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_outofprocess.dll" 
+          PdbLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_outofprocess.pdb"
         />
 
        <ShimComponents
-          VCPlatform="x64" 
           Platform="x64" 
-          ProjectName="AspNetCore.vcxproj" 
+          VCPlatform="x64" 
+          BaseOutputPath="AspNetCoreModuleV2" 
           NativeAsset="aspnetcorev2" 
+          ProjectName="AspNetCore.vcxproj" 
           PropetyName="AspNetCoreModuleV2Shim" 
-          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="AspNetCoreModuleShim" 
           ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore" 
-          DllLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\bin\$(Configuration)\x64\aspnetcorev2.dll" 
           Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj" 
-          PdbLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\bin\$(Configuration)\x64\aspnetcorev2.pdb"
+          DllLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\x64\$(Configuration)\aspnetcorev2.dll" 
+          PdbLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\x64\$(Configuration)\aspnetcorev2.pdb"
         />
         <ShimComponents
-          VCPlatform="Win32" 
           Platform="x86" 
-          ProjectName="AspNetCore.vcxproj" 
+          VCPlatform="Win32" 
+          BaseOutputPath="AspNetCoreModuleV2" 
           NativeAsset="aspnetcorev2" 
+          ProjectName="AspNetCore.vcxproj" 
           PropetyName="AspNetCoreModuleV2Shim" 
-          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="AspNetCoreModuleShim" 
           ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore" 
-          DllLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\bin\$(Configuration)\Win32\aspnetcorev2.dll" 
           Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj" 
-          PdbLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\bin\$(Configuration)\Win32\aspnetcorev2.pdb"
+          DllLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\Win32\$(Configuration)\aspnetcorev2.dll" 
+          PdbLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\Win32\$(Configuration)\aspnetcorev2.pdb"
         />
         <ShimComponents
-          VCPlatform="x64" 
           Platform="x64" 
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler" 
+          VCPlatform="x64" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          NativeAsset="aspnetcorev2_outofprocess" 
           ProjectName="OutOfProcessRequestHandler.vcxproj" 
           PropetyName="AspNetCoreModuleV2OutOfProcessHandler" 
-          NativeAsset="aspnetcorev2_outofprocess" 
-          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="OutOfProcessRequestHandler" 
           PackageSubPath="$(AspNetCoreModuleOutOfProcessVersion)\" 
-          DllLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\bin\$(Configuration)\x64\aspnetcorev2_outofprocess.dll" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler" 
           Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj" 
-          PdbLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\bin\$(Configuration)\x64\aspnetcorev2_outofprocess.pdb"
+          DllLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_outofprocess.dll" 
+          PdbLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_outofprocess.pdb"
         />
         <ShimComponents
-          VCPlatform="Win32" 
           Platform="x86" 
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler" 
+          VCPlatform="Win32" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          NativeAsset="aspnetcorev2_outofprocess" 
           ProjectName="OutOfProcessRequestHandler.vcxproj" 
           PropetyName="AspNetCoreModuleV2OutOfProcessHandler" 
-          NativeAsset="aspnetcorev2_outofprocess" 
-          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="OutOfProcessRequestHandler" 
           PackageSubPath="$(AspNetCoreModuleOutOfProcessVersion)\" 
-          DllLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\bin\$(Configuration)\Win32\aspnetcorev2_outofprocess.dll" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler" 
           Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj" 
-          PdbLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\bin\$(Configuration)\Win32\aspnetcorev2_outofprocess.pdb"
+          DllLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_outofprocess.dll" 
+          PdbLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_outofprocess.pdb"
         />
 
        <InProcessComponents
-          VCPlatform="x64" 
           Platform="x64" 
-          ProjectName="InProcessRequestHandler.vcxproj" 
+          VCPlatform="x64" 
+          BaseOutputPath="AspNetCoreModuleV2" 
           NativeAsset="aspnetcorev2_inprocess" 
+          ProjectName="InProcessRequestHandler.vcxproj" 
           PropetyName="AspNetCoreModuleV2InProcessHandler" 
-          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="InProcessRequestHandler" 
           ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler" 
-          DllLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\bin\$(Configuration)\x64\aspnetcorev2_inprocess.dll" 
           Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj" 
-          PdbLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\bin\$(Configuration)\x64\aspnetcorev2_inprocess.pdb"
+          DllLocation="$(ArtifactsBinDir)InProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_inprocess.dll" 
+          PdbLocation="$(ArtifactsBinDir)InProcessRequestHandler\x64\$(Configuration)\aspnetcorev2_inprocess.pdb"
         />
         <InProcessComponents
-          VCPlatform="Win32" 
           Platform="x86" 
-          ProjectName="InProcessRequestHandler.vcxproj" 
+          VCPlatform="Win32" 
+          BaseOutputPath="AspNetCoreModuleV2" 
           NativeAsset="aspnetcorev2_inprocess" 
+          ProjectName="InProcessRequestHandler.vcxproj" 
           PropetyName="AspNetCoreModuleV2InProcessHandler" 
-          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="InProcessRequestHandler" 
           ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler" 
-          DllLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\bin\$(Configuration)\Win32\aspnetcorev2_inprocess.dll" 
           Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj" 
-          PdbLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\bin\$(Configuration)\Win32\aspnetcorev2_inprocess.pdb"
+          DllLocation="$(ArtifactsBinDir)InProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_inprocess.dll" 
+          PdbLocation="$(ArtifactsBinDir)InProcessRequestHandler\Win32\$(Configuration)\aspnetcorev2_inprocess.pdb"
         />
 
        <RunShimComponents
-          VCPlatform="$(NativeVCPlatform)" 
           Platform="$(NativePlatform)" 
-          ProjectName="AspNetCore.vcxproj" 
+          VCPlatform="$(NativeVCPlatform)" 
+          BaseOutputPath="AspNetCoreModuleV2" 
           NativeAsset="aspnetcorev2" 
+          ProjectName="AspNetCore.vcxproj" 
           PropetyName="AspNetCoreModuleV2Shim" 
-          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="AspNetCoreModuleShim" 
           ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore" 
-          DllLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\bin\$(Configuration)\$(NativeVCPlatform)\aspnetcorev2.dll" 
           Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj" 
-          PdbLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\bin\$(Configuration)\$(NativeVCPlatform)\aspnetcorev2.pdb"
+          DllLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2.dll" 
+          PdbLocation="$(ArtifactsBinDir)AspNetCoreModuleShim\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2.pdb"
         />
         <RunShimComponents
-          VCPlatform="$(NativeVCPlatform)" 
           Platform="$(NativePlatform)" 
-          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler" 
+          VCPlatform="$(NativeVCPlatform)" 
+          BaseOutputPath="AspNetCoreModuleV2" 
+          NativeAsset="aspnetcorev2_outofprocess" 
           ProjectName="OutOfProcessRequestHandler.vcxproj" 
           PropetyName="AspNetCoreModuleV2OutOfProcessHandler" 
-          NativeAsset="aspnetcorev2_outofprocess" 
-          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="OutOfProcessRequestHandler" 
           PackageSubPath="$(AspNetCoreModuleOutOfProcessVersion)\" 
-          DllLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\bin\$(Configuration)\$(NativeVCPlatform)\aspnetcorev2_outofprocess.dll" 
+          ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler" 
           Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj" 
-          PdbLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\bin\$(Configuration)\$(NativeVCPlatform)\aspnetcorev2_outofprocess.pdb"
+          DllLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2_outofprocess.dll" 
+          PdbLocation="$(ArtifactsBinDir)OutOfProcessRequestHandler\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2_outofprocess.pdb"
         />
 
        <RunInProcessComponents
-          VCPlatform="$(NativeVCPlatform)" 
           Platform="$(NativePlatform)" 
-          ProjectName="InProcessRequestHandler.vcxproj" 
+          VCPlatform="$(NativeVCPlatform)" 
+          BaseOutputPath="AspNetCoreModuleV2" 
           NativeAsset="aspnetcorev2_inprocess" 
+          ProjectName="InProcessRequestHandler.vcxproj" 
           PropetyName="AspNetCoreModuleV2InProcessHandler" 
-          BaseOutputPath="AspNetCoreModuleV2" 
+          OutDirName="InProcessRequestHandler" 
           ProjectDirectory="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler" 
-          DllLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\bin\$(Configuration)\$(NativeVCPlatform)\aspnetcorev2_inprocess.dll" 
           Include="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj" 
-          PdbLocation="$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\bin\$(Configuration)\$(NativeVCPlatform)\aspnetcorev2_inprocess.pdb"
+          DllLocation="$(ArtifactsBinDir)InProcessRequestHandler\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2_inprocess.dll" 
+          PdbLocation="$(ArtifactsBinDir)InProcessRequestHandler\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2_inprocess.pdb"
         />
 
     </ItemGroup>
     <PropertyGroup>
 
-       <AspNetCoreModuleV2ShimDll>$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\AspNetCore\bin\$(Configuration)\$(NativeVCPlatform)\aspnetcorev2.dll</AspNetCoreModuleV2ShimDll> 
-       <AspNetCoreModuleV2InProcessHandlerDll>$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\InProcessRequestHandler\bin\$(Configuration)\$(NativeVCPlatform)\aspnetcorev2_inprocess.dll</AspNetCoreModuleV2InProcessHandlerDll> 
-       <AspNetCoreModuleV2OutOfProcessHandlerDll>$(MSBuildThisFileDirectory)..\AspNetCoreModuleV2\OutOfProcessRequestHandler\bin\$(Configuration)\$(NativeVCPlatform)\aspnetcorev2_outofprocess.dll</AspNetCoreModuleV2OutOfProcessHandlerDll>
+       <AspNetCoreModuleV2ShimDll>$(ArtifactsBinDir)AspNetCoreModuleShim\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2.dll</AspNetCoreModuleV2ShimDll> 
+       <AspNetCoreModuleV2InProcessHandlerDll>$(ArtifactsBinDir)InProcessRequestHandler\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2_inprocess.dll</AspNetCoreModuleV2InProcessHandlerDll> 
+       <AspNetCoreModuleV2OutOfProcessHandlerDll>$(ArtifactsBinDir)OutOfProcessRequestHandler\$(NativeVCPlatform)\$(Configuration)\aspnetcorev2_outofprocess.dll</AspNetCoreModuleV2OutOfProcessHandlerDll>
     </PropertyGroup>
 </Project>

+ 2 - 2
src/Servers/IIS/build/native.targets

@@ -31,10 +31,10 @@
     </ItemGroup>
 
     <ItemGroup>
-      <FileWrites Include="version.h" />
+      <FileWrites Include="$(IntDir)version.h" />
     </ItemGroup>
 
-    <WriteLinesToFile File="version.h" Lines="@(VersionHeaderContents)" OverWrite="true" WriteOnlyWhenDifferent="True" />
+    <WriteLinesToFile File="$(IntDir)version.h" Lines="@(VersionHeaderContents)" OverWrite="true" WriteOnlyWhenDifferent="True" />
   </Target>
 
 </Project>

+ 7 - 4
src/Servers/IIS/tools/GenerateNativeAssets.ps1

@@ -14,7 +14,8 @@ $srcDir = "`$(MSBuildThisFileDirectory)..";
 $projects = @(
      @{
         ProjectDirectory = "$srcDir\AspNetCoreModuleV2\AspNetCore";
-        ProjectName = "`AspNetCore.vcxproj";
+        ProjectName = "AspNetCore.vcxproj";
+        OutDirName = "AspNetCoreModuleShim";
         NativeAsset = "aspnetcorev2";
         BaseOutputPath = "AspNetCoreModuleV2"
         PropetyName = "AspNetCoreModuleV2Shim"
@@ -22,6 +23,7 @@ $projects = @(
      @{
         ProjectDirectory = "$srcDir\AspNetCoreModuleV2\InProcessRequestHandler";
         ProjectName = "InProcessRequestHandler.vcxproj";
+        OutDirName = "InProcessRequestHandler";
         NativeAsset = "aspnetcorev2_inprocess";
         BaseOutputPath = "AspNetCoreModuleV2";
         PropetyName = "AspNetCoreModuleV2InProcessHandler"
@@ -29,6 +31,7 @@ $projects = @(
      @{
         ProjectDirectory = "$srcDir\AspNetCoreModuleV2\OutOfProcessRequestHandler";
         ProjectName = "OutOfProcessRequestHandler.vcxproj";
+        OutDirName = "OutOfProcessRequestHandler";
         NativeAsset = "aspnetcorev2_outofprocess";
         BaseOutputPath = "AspNetCoreModuleV2";
         PackageSubPath = "`$(AspNetCoreModuleOutOfProcessVersion)\";
@@ -76,8 +79,8 @@ function New-Component($project, $platform)
     CopyProperties -from $project -to $component;
     CopyProperties -from @{
         Include = "$($project.ProjectDirectory)\$($project.ProjectName)";
-        DllLocation = "$($project.ProjectDirectory)\bin\`$(Configuration)\$($platform.VCPlatform)\$($project.NativeAsset).dll";
-        PdbLocation = "$($project.ProjectDirectory)\bin\`$(Configuration)\$($platform.VCPlatform)\$($project.NativeAsset).pdb";
+        DllLocation = "`$(ArtifactsBinDir)$($project.OutDirName)\$($platform.VCPlatform)\`$(Configuration)\$($project.NativeAsset).dll";
+        PdbLocation = "`$(ArtifactsBinDir)$($project.OutDirName)\$($platform.VCPlatform)\`$(Configuration)\$($project.NativeAsset).pdb";
     } -to $component;
 
     return $component;
@@ -102,7 +105,7 @@ foreach ($project in $projects)
 
     $properties += @{
         Name = "$($project.PropetyName)Dll";
-        Value = "$($project.ProjectDirectory)\bin\`$(Configuration)\`$(NativeVCPlatform)\$($project.NativeAsset).dll";
+        Value = "`$(ArtifactsBinDir)$($project.OutDirName)\`$(NativeVCPlatform)\`$(Configuration)\$($project.NativeAsset).dll";
     };
 
     $runComponent = New-Component $project $currentPlatform;

+ 1 - 1
src/Servers/Kestrel.sln

@@ -25,7 +25,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LargeResponseApp", "Kestrel
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlaintextApp", "Kestrel\samples\PlaintextApp\PlaintextApp.csproj", "{0710F560-A741-4139-BC1F-BFF1895F1274}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleApp", "Kestrel\samples\SampleApp\SampleApp.csproj", "{F9D090D2-0568-403D-ADBA-9E079397B584}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Kestrel.SampleApp", "Kestrel\samples\SampleApp\Kestrel.SampleApp.csproj", "{F9D090D2-0568-403D-ADBA-9E079397B584}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SystemdTestApp", "Kestrel\samples\SystemdTestApp\SystemdTestApp.csproj", "{01D031FC-61A5-45BD-BE11-57FA00BE1BCD}"
 EndProject

+ 0 - 0
src/Servers/Kestrel/samples/SampleApp/SampleApp.csproj → src/Servers/Kestrel/samples/SampleApp/Kestrel.SampleApp.csproj


+ 0 - 6
src/Servers/test/FunctionalTests/Directory.Build.props

@@ -1,12 +1,6 @@
 <Project>
   <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
 
-  <PropertyGroup>
-    <!-- Deployers -->
-    <BaseIntermediateOutputPath>$(MSBuildThisFileDirectory)obj\</BaseIntermediateOutputPath>
-    <BaseOutputPath>$(MSBuildThisFileDirectory)bin\</BaseOutputPath>
-  </PropertyGroup>
-
   <ItemGroup Condition="'$(IsImplementationProject)' == 'true'">
     <PackageReference Include="Internal.AspNetCore.Analyzers" PrivateAssets="All" Version="$(InternalAspNetCoreAnalyzersPackageVersion)" AllowExplicitReference="true" />
   </ItemGroup>

+ 6 - 1
src/Servers/test/FunctionalTests/ServerComparison.FunctionalTests.csproj

@@ -2,11 +2,16 @@
 
   <PropertyGroup>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+
+    <!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
     <BuildHelixPayload>false</BuildHelixPayload>
+    <BaseOutputPath />
+    <OutputPath />
+
   </PropertyGroup>
 
   <ItemGroup>
-    <Content Include="*.config;*.conf" CopyToPublishDirectory="PreserveNewest" CopyToOutputDirectory="PreserveNewest" />
+    <Content Include="*.config;*.conf" />
   </ItemGroup>
 
   <ItemGroup>

+ 2 - 2
src/Servers/IIS/Directory.Build.props → src/Servers/testassets/Directory.Build.props

@@ -2,9 +2,9 @@
   <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
 
   <PropertyGroup>
-    <!-- TODO: fix targets which expect project output to be in the project directory. -->
-    <BaseIntermediateOutputPath />
+    <!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
     <BaseOutputPath />
+    <OutputPath />
   </PropertyGroup>
 
 </Project>

+ 0 - 13
src/Servers/testassets/ServerComparison.TestSites/Directory.Build.props

@@ -1,13 +0,0 @@
-<Project>
-  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
-
-  <PropertyGroup>
-    <!-- Deployers -->
-    <BaseIntermediateOutputPath>$(MSBuildThisFileDirectory)obj\</BaseIntermediateOutputPath>
-    <BaseOutputPath>$(MSBuildThisFileDirectory)bin\</BaseOutputPath>
-  </PropertyGroup>
-
-  <ItemGroup Condition="'$(IsImplementationProject)' == 'true'">
-    <PackageReference Include="Internal.AspNetCore.Analyzers" PrivateAssets="All" Version="$(InternalAspNetCoreAnalyzersPackageVersion)" AllowExplicitReference="true" />
-  </ItemGroup>
-</Project>

+ 1 - 1
src/SignalR/SignalR.sln

@@ -15,7 +15,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebSocketSample", "samples\
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JwtClientSample", "samples\JwtClientSample\JwtClientSample.csproj", "{1A953296-E869-4DE2-A693-FD5FCDE27057}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunctionalTests", "clients\ts\FunctionalTests\FunctionalTests.csproj", "{D0C7B22E-B0B6-4D62-BF7D-79EE4AAF1981}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SignalR.Client.FunctionalTests", "clients\ts\FunctionalTests\SignalR.Client.FunctionalTests.csproj", "{D0C7B22E-B0B6-4D62-BF7D-79EE4AAF1981}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Hosting", "..\Hosting\Hosting\src\Microsoft.AspNetCore.Hosting.csproj", "{3AC35C9A-3344-4BBB-B789-06CEE2CD093E}"
 EndProject

+ 1 - 2
src/SignalR/clients/java/signalr/.gitignore

@@ -2,7 +2,6 @@
 .gradletasknamecache
 .gradle/
 build/
-bin/
 .settings/
 out/
 *.class
@@ -10,4 +9,4 @@ out/
 .project
 .classpath
 # We need the gradle-wrapper.jar file so that others can use the gradle wrapper
-!gradle/wrapper/gradle-wrapper.jar
+!gradle/wrapper/gradle-wrapper.jar

+ 0 - 0
src/SignalR/clients/java/signalr/signalr.javaproj → src/SignalR/clients/java/signalr/signalr.client.java.javaproj


+ 0 - 0
src/SignalR/clients/ts/FunctionalTests/FunctionalTests.csproj → src/SignalR/clients/ts/FunctionalTests/SignalR.Client.FunctionalTests.csproj


+ 4 - 4
src/SignalR/clients/ts/FunctionalTests/SignalR.Npm.FunctionalTests.npmproj

@@ -7,11 +7,11 @@
     <BrowserTestHostName Condition="'$(CI)' == 'true'">sauce.local</BrowserTestHostName>
     <_TestSauceArgs>--verbose --no-color --configuration $(Configuration) --sauce-user "$(SauceUser)" --sauce-key "$(SauceKey)"</_TestSauceArgs>
     <_TestSauceArgs Condition="'$(BrowserTestHostName)' != ''">$(_TestSauceArgs) --use-hostname "$(BrowserTestHostName)"</_TestSauceArgs>
-    <NpmTestArgs Condition="'$(DailyTests)' != 'true'">run test:local -- --no-color --configuration $(Configuration)</NpmTestArgs>
+    <NpmTestArgs Condition="'$(DailyTests)' != 'true'">run test:local --no-color --configuration $(Configuration)</NpmTestArgs>
   </PropertyGroup>
 
   <ItemGroup>
-    <ProjectReference Include="FunctionalTests.csproj" Condition="'$(BuildManaged)' == 'true'" />
+    <ProjectReference Include="SignalR.Client.FunctionalTests.csproj" Condition="'$(BuildManaged)' == 'true'" />
     <ProjectReference Include="..\signalr\signalr.npmproj" />
     <ProjectReference Include="..\signalr-protocol-msgpack\signalr-protocol-msgpack.npmproj" />
   </ItemGroup>
@@ -27,7 +27,7 @@
   <Target Name="RunBrowserTests">
     <Message Text="Running JavaScript client Browser tests" Importance="high" />
     <!-- Skip the "inner" test run when we're running DailyTests -->
-    <Yarn Command="run test:inner -- --no-color --configuration $(Configuration)"
+    <Yarn Command="run test:inner --no-color --configuration $(Configuration)"
           Condition="'$(DailyTests)' != 'true'"
           WorkingDirectory="$(RepoRoot)src/SignalR/clients/ts/FunctionalTests" />
 
@@ -37,7 +37,7 @@
       <_TestSauceArgs Condition="'$(BrowserTestHostName)' != ''">$(_TestSauceArgs) --use-hostname "$(BrowserTestHostName)"</_TestSauceArgs>
     </PropertyGroup>
     <Message Text="test:sauce Args = $(_TestSauceArgs)" Importance="high" />
-    <Yarn Command="run test:sauce -- $(_TestSauceArgs)"
+    <Yarn Command="run test:sauce $(_TestSauceArgs)"
           Condition="'$(DailyTests)' == 'true'"
           WorkingDirectory="$(RepoRoot)src/SignalR/clients/ts/FunctionalTests" />
   </Target>

+ 3 - 3
src/SignalR/clients/ts/FunctionalTests/package.json

@@ -42,9 +42,9 @@
     "build": "yarn run build:lint && yarn run build:webpack",
     "build:lint": "node ../common/node_modules/tslint/bin/tslint -c ../tslint.json -p ./tsconfig.json",
     "build:webpack": "node ../common/node_modules/webpack-cli/bin/cli.js",
-    "pretest": "yarn run build && dotnet build FunctionalTests.csproj",
-    "test": "tsc --noEmit && yarn run test:local --",
-    "test:inner": "yarn run build && dotnet build FunctionalTests.csproj && yarn run test:local --",
+    "pretest": "yarn run build && dotnet build SignalR.Client.FunctionalTests.csproj",
+    "test": "tsc --noEmit && yarn run test:local",
+    "test:inner": "yarn run build && dotnet build SignalR.Client.FunctionalTests.csproj && yarn run test:local",
     "test:local": "yarn run pretest && ts-node --project ./scripts/tsconfig.json ./scripts/run-tests.ts",
     "test:all": "yarn run pretest && ts-node --project ./scripts/tsconfig.json ./scripts/run-tests.ts --all-browsers",
     "test:sauce": "yarn run pretest && ts-node --project ./scripts/tsconfig.json ./scripts/run-tests.ts --sauce",

+ 1 - 1
src/SignalR/clients/ts/FunctionalTests/scripts/run-tests.ts

@@ -232,7 +232,7 @@ function runJest(httpsUrl: string, httpUrl: string) {
 
 (async () => {
     try {
-        const serverPath = path.resolve(__dirname, "..", "bin", configuration, "netcoreapp3.0", "FunctionalTests.dll");
+        const serverPath = path.resolve(ARTIFACTS_DIR, "bin", "SignalR.Client.FunctionalTests", configuration, "netcoreapp3.0", "SignalR.Client.FunctionalTests.dll");
 
         debug(`Launching Functional Test Server: ${serverPath}`);
         let desiredServerUrl = "https://127.0.0.1:0;http://127.0.0.1:0";

+ 1 - 1
src/SignalR/publish-apps.ps1

@@ -20,7 +20,7 @@ $ClientsTsDir = Join-Path $ClientsDir "ts"
 # The list of apps to publish
 $Apps = @{
     "SignalRSamples"= (Join-Path $SamplesDir "SignalRSamples")
-    "FunctionalTests"= (Join-Path $ClientsTsDir "FunctionalTests")
+    "FunctionalTests"= (Join-Path $ClientsTsDir "FunctionalTests/SignalR.Client.FunctionalTests.csproj")
 }
 
 $BuildMetadataContent = @"

+ 0 - 1
src/Tools/Directory.Build.props

@@ -1,6 +1,5 @@
 <Project>
   <PropertyGroup>
-    <OutputInRepoRoot>true</OutputInRepoRoot>
     <ToolSharedSourceRoot>$(MSBuildThisFileDirectory)Shared\</ToolSharedSourceRoot>
     <DisablePubternalApiCheck>true</DisablePubternalApiCheck>
   </PropertyGroup>

+ 2 - 0
src/submodules/Directory.Build.props

@@ -0,0 +1,2 @@
+<!-- Intentionally breaks the inheritance chain so submodules do not inherit build settings from this repo. -->
+<Project />

+ 2 - 0
src/submodules/Directory.Build.targets

@@ -0,0 +1,2 @@
+<!-- Intentionally breaks the inheritance chain so submodules do not inherit build settings from this repo. -->
+<Project />