diff --git a/.appveyor.yml b/.appveyor.yml index d1af1c6357..6c9c404f3b 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -15,13 +15,13 @@ test: 'off' deploy: 'off' os: Visual Studio 2017 Preview build_script: - - dotnet build Blazor.sln + - build.cmd /p:SkipTests=true before_test: - choco install googlechrome --ignore-checksum - npm install -g selenium-standalone - selenium-standalone install - ps: $SeleniumProcess = Start-Process "selenium-standalone" -ArgumentList "start" -PassThru test_script: - - dotnet test test\AllTests.proj + - build.cmd /t:Test /p:BlazorAllTests=true after_test: - ps: Stop-Process -Id $SeleniumProcess.Id diff --git a/.travis.yml b/.travis.yml index e0e85467fa..1ccf28d293 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,6 +35,6 @@ install: - curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel Current --version latest --install-dir "$DOTNET_INSTALL_DIR" - export PATH="$DOTNET_INSTALL_DIR:$PATH" script: - - dotnet build Blazor.sln + - ./build.sh /p:SkipTests=true - selenium-standalone start & - - dotnet test test/AllTests.proj + - ./build.sh /t:Test /p:BlazorAllTests=true diff --git a/Blazor.sln b/Blazor.sln index 0e1fbd7afe..25459a67fa 100644 --- a/Blazor.sln +++ b/Blazor.sln @@ -85,136 +85,262 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorHosted.CSharp.Client" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorHosted.CSharp.Server", "src\Microsoft.AspNetCore.Blazor.Templates\content\BlazorHosted.CSharp\BlazorHosted.CSharp.Server\BlazorHosted.CSharp.Server.csproj", "{78ED9932-0912-4F36-8F82-33DE850E7A33}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlazorHosted.CSharp.Shared", "src\Microsoft.AspNetCore.Blazor.Templates\content\BlazorHosted.CSharp\BlazorHosted.CSharp.Shared\BlazorHosted.CSharp.Shared.csproj", "{F3E02B21-1127-431A-B832-0E53CB72097B}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorHosted.CSharp.Shared", "src\Microsoft.AspNetCore.Blazor.Templates\content\BlazorHosted.CSharp\BlazorHosted.CSharp.Shared\BlazorHosted.CSharp.Shared.csproj", "{F3E02B21-1127-431A-B832-0E53CB72097B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNetCore.Blazor.Razor.Extensions.Test", "test\Microsoft.AspNetCore.Blazor.Razor.Extensions.Test\Microsoft.AspNetCore.Blazor.Razor.Extensions.Test.csproj", "{FF25111E-5A3E-48A3-96D8-08A2C5A2A91C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Blazor.Razor.Extensions.Test", "test\Microsoft.AspNetCore.Blazor.Razor.Extensions.Test\Microsoft.AspNetCore.Blazor.Razor.Extensions.Test.csproj", "{FF25111E-5A3E-48A3-96D8-08A2C5A2A91C}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tooling", "tooling", "{F563ABB6-85FB-4CFC-B0D2-1D5130E8246D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.VisualStudio.LanguageServices.Blazor", "tooling\Microsoft.VisualStudio.LanguageServices.Blazor\Microsoft.VisualStudio.LanguageServices.Blazor.csproj", "{43E39257-7DC1-46BD-9BD9-2319A1313D07}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.VisualStudio.BlazorExtension", "tooling\Microsoft.VisualStudio.BlazorExtension\Microsoft.VisualStudio.BlazorExtension.csproj", "{9088E4E4-B855-457F-AE9E-D86709A5E1F4}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + DebugNoVSIX|Any CPU = DebugNoVSIX|Any CPU Release|Any CPU = Release|Any CPU + ReleaseNoVSIX|Any CPU = ReleaseNoVSIX|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {39FEC72D-AF52-47A3-B63D-7BF0E4335248}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {39FEC72D-AF52-47A3-B63D-7BF0E4335248}.Debug|Any CPU.Build.0 = Debug|Any CPU + {39FEC72D-AF52-47A3-B63D-7BF0E4335248}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {39FEC72D-AF52-47A3-B63D-7BF0E4335248}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {39FEC72D-AF52-47A3-B63D-7BF0E4335248}.Release|Any CPU.ActiveCfg = Release|Any CPU {39FEC72D-AF52-47A3-B63D-7BF0E4335248}.Release|Any CPU.Build.0 = Release|Any CPU + {39FEC72D-AF52-47A3-B63D-7BF0E4335248}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {39FEC72D-AF52-47A3-B63D-7BF0E4335248}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {7C53BB6B-5906-4753-B507-C9FCC2F7E5B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7C53BB6B-5906-4753-B507-C9FCC2F7E5B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7C53BB6B-5906-4753-B507-C9FCC2F7E5B7}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {7C53BB6B-5906-4753-B507-C9FCC2F7E5B7}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {7C53BB6B-5906-4753-B507-C9FCC2F7E5B7}.Release|Any CPU.ActiveCfg = Release|Any CPU {7C53BB6B-5906-4753-B507-C9FCC2F7E5B7}.Release|Any CPU.Build.0 = Release|Any CPU + {7C53BB6B-5906-4753-B507-C9FCC2F7E5B7}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {7C53BB6B-5906-4753-B507-C9FCC2F7E5B7}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {5A694793-3257-4D37-BB74-4A41B3894685}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5A694793-3257-4D37-BB74-4A41B3894685}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5A694793-3257-4D37-BB74-4A41B3894685}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {5A694793-3257-4D37-BB74-4A41B3894685}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {5A694793-3257-4D37-BB74-4A41B3894685}.Release|Any CPU.ActiveCfg = Release|Any CPU {5A694793-3257-4D37-BB74-4A41B3894685}.Release|Any CPU.Build.0 = Release|Any CPU + {5A694793-3257-4D37-BB74-4A41B3894685}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {5A694793-3257-4D37-BB74-4A41B3894685}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {118484D3-3993-45CE-97C1-6F28A517529B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {118484D3-3993-45CE-97C1-6F28A517529B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {118484D3-3993-45CE-97C1-6F28A517529B}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {118484D3-3993-45CE-97C1-6F28A517529B}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {118484D3-3993-45CE-97C1-6F28A517529B}.Release|Any CPU.ActiveCfg = Release|Any CPU {118484D3-3993-45CE-97C1-6F28A517529B}.Release|Any CPU.Build.0 = Release|Any CPU + {118484D3-3993-45CE-97C1-6F28A517529B}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {118484D3-3993-45CE-97C1-6F28A517529B}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {5BC2A10D-B6CA-43AE-B73C-2A41AE1039F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5BC2A10D-B6CA-43AE-B73C-2A41AE1039F9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5BC2A10D-B6CA-43AE-B73C-2A41AE1039F9}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {5BC2A10D-B6CA-43AE-B73C-2A41AE1039F9}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {5BC2A10D-B6CA-43AE-B73C-2A41AE1039F9}.Release|Any CPU.ActiveCfg = Release|Any CPU {5BC2A10D-B6CA-43AE-B73C-2A41AE1039F9}.Release|Any CPU.Build.0 = Release|Any CPU + {5BC2A10D-B6CA-43AE-B73C-2A41AE1039F9}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {5BC2A10D-B6CA-43AE-B73C-2A41AE1039F9}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {06AAAE9E-96DE-4574-97DA-9C4C7D9FE990}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {06AAAE9E-96DE-4574-97DA-9C4C7D9FE990}.Debug|Any CPU.Build.0 = Debug|Any CPU + {06AAAE9E-96DE-4574-97DA-9C4C7D9FE990}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {06AAAE9E-96DE-4574-97DA-9C4C7D9FE990}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {06AAAE9E-96DE-4574-97DA-9C4C7D9FE990}.Release|Any CPU.ActiveCfg = Release|Any CPU {06AAAE9E-96DE-4574-97DA-9C4C7D9FE990}.Release|Any CPU.Build.0 = Release|Any CPU + {06AAAE9E-96DE-4574-97DA-9C4C7D9FE990}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {06AAAE9E-96DE-4574-97DA-9C4C7D9FE990}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {BB34336F-E68E-4411-9805-CAAA919F5EA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BB34336F-E68E-4411-9805-CAAA919F5EA1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BB34336F-E68E-4411-9805-CAAA919F5EA1}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {BB34336F-E68E-4411-9805-CAAA919F5EA1}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {BB34336F-E68E-4411-9805-CAAA919F5EA1}.Release|Any CPU.ActiveCfg = Release|Any CPU {BB34336F-E68E-4411-9805-CAAA919F5EA1}.Release|Any CPU.Build.0 = Release|Any CPU + {BB34336F-E68E-4411-9805-CAAA919F5EA1}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {BB34336F-E68E-4411-9805-CAAA919F5EA1}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {B4335F7C-4E86-4559-821F-F1B1C75F5FAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B4335F7C-4E86-4559-821F-F1B1C75F5FAE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B4335F7C-4E86-4559-821F-F1B1C75F5FAE}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {B4335F7C-4E86-4559-821F-F1B1C75F5FAE}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {B4335F7C-4E86-4559-821F-F1B1C75F5FAE}.Release|Any CPU.ActiveCfg = Release|Any CPU {B4335F7C-4E86-4559-821F-F1B1C75F5FAE}.Release|Any CPU.Build.0 = Release|Any CPU + {B4335F7C-4E86-4559-821F-F1B1C75F5FAE}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {B4335F7C-4E86-4559-821F-F1B1C75F5FAE}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {F8996835-41F7-4663-91DF-3B5652ADC37D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F8996835-41F7-4663-91DF-3B5652ADC37D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F8996835-41F7-4663-91DF-3B5652ADC37D}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {F8996835-41F7-4663-91DF-3B5652ADC37D}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {F8996835-41F7-4663-91DF-3B5652ADC37D}.Release|Any CPU.ActiveCfg = Release|Any CPU {F8996835-41F7-4663-91DF-3B5652ADC37D}.Release|Any CPU.Build.0 = Release|Any CPU + {F8996835-41F7-4663-91DF-3B5652ADC37D}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {F8996835-41F7-4663-91DF-3B5652ADC37D}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {7FD8C650-74B3-4153-AEA1-00F4F6AF393D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7FD8C650-74B3-4153-AEA1-00F4F6AF393D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7FD8C650-74B3-4153-AEA1-00F4F6AF393D}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {7FD8C650-74B3-4153-AEA1-00F4F6AF393D}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {7FD8C650-74B3-4153-AEA1-00F4F6AF393D}.Release|Any CPU.ActiveCfg = Release|Any CPU {7FD8C650-74B3-4153-AEA1-00F4F6AF393D}.Release|Any CPU.Build.0 = Release|Any CPU + {7FD8C650-74B3-4153-AEA1-00F4F6AF393D}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {7FD8C650-74B3-4153-AEA1-00F4F6AF393D}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {B241434A-1642-44CC-AE9A-2012B5C5BD02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B241434A-1642-44CC-AE9A-2012B5C5BD02}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B241434A-1642-44CC-AE9A-2012B5C5BD02}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {B241434A-1642-44CC-AE9A-2012B5C5BD02}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {B241434A-1642-44CC-AE9A-2012B5C5BD02}.Release|Any CPU.ActiveCfg = Release|Any CPU {B241434A-1642-44CC-AE9A-2012B5C5BD02}.Release|Any CPU.Build.0 = Release|Any CPU + {B241434A-1642-44CC-AE9A-2012B5C5BD02}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {B241434A-1642-44CC-AE9A-2012B5C5BD02}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {21EF76A4-63CC-455D-907C-F86C9E442CEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {21EF76A4-63CC-455D-907C-F86C9E442CEC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {21EF76A4-63CC-455D-907C-F86C9E442CEC}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {21EF76A4-63CC-455D-907C-F86C9E442CEC}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {21EF76A4-63CC-455D-907C-F86C9E442CEC}.Release|Any CPU.ActiveCfg = Release|Any CPU {21EF76A4-63CC-455D-907C-F86C9E442CEC}.Release|Any CPU.Build.0 = Release|Any CPU + {21EF76A4-63CC-455D-907C-F86C9E442CEC}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {21EF76A4-63CC-455D-907C-F86C9E442CEC}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {7F0BF3EA-6985-49F6-8070-0BBA41448BB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7F0BF3EA-6985-49F6-8070-0BBA41448BB0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7F0BF3EA-6985-49F6-8070-0BBA41448BB0}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {7F0BF3EA-6985-49F6-8070-0BBA41448BB0}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {7F0BF3EA-6985-49F6-8070-0BBA41448BB0}.Release|Any CPU.ActiveCfg = Release|Any CPU {7F0BF3EA-6985-49F6-8070-0BBA41448BB0}.Release|Any CPU.Build.0 = Release|Any CPU + {7F0BF3EA-6985-49F6-8070-0BBA41448BB0}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {7F0BF3EA-6985-49F6-8070-0BBA41448BB0}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {709C7EBE-EB93-4F6D-9491-D714B0D2E898}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {709C7EBE-EB93-4F6D-9491-D714B0D2E898}.Debug|Any CPU.Build.0 = Debug|Any CPU + {709C7EBE-EB93-4F6D-9491-D714B0D2E898}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {709C7EBE-EB93-4F6D-9491-D714B0D2E898}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {709C7EBE-EB93-4F6D-9491-D714B0D2E898}.Release|Any CPU.ActiveCfg = Release|Any CPU {709C7EBE-EB93-4F6D-9491-D714B0D2E898}.Release|Any CPU.Build.0 = Release|Any CPU + {709C7EBE-EB93-4F6D-9491-D714B0D2E898}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {709C7EBE-EB93-4F6D-9491-D714B0D2E898}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {8B3D0F1C-0E38-4E6D-BFF1-C4FDA0CD9815}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8B3D0F1C-0E38-4E6D-BFF1-C4FDA0CD9815}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8B3D0F1C-0E38-4E6D-BFF1-C4FDA0CD9815}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {8B3D0F1C-0E38-4E6D-BFF1-C4FDA0CD9815}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {8B3D0F1C-0E38-4E6D-BFF1-C4FDA0CD9815}.Release|Any CPU.ActiveCfg = Release|Any CPU {8B3D0F1C-0E38-4E6D-BFF1-C4FDA0CD9815}.Release|Any CPU.Build.0 = Release|Any CPU + {8B3D0F1C-0E38-4E6D-BFF1-C4FDA0CD9815}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {8B3D0F1C-0E38-4E6D-BFF1-C4FDA0CD9815}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {8A19B1CE-9B62-4440-93B3-152DDBB39D0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8A19B1CE-9B62-4440-93B3-152DDBB39D0A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8A19B1CE-9B62-4440-93B3-152DDBB39D0A}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {8A19B1CE-9B62-4440-93B3-152DDBB39D0A}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {8A19B1CE-9B62-4440-93B3-152DDBB39D0A}.Release|Any CPU.ActiveCfg = Release|Any CPU {8A19B1CE-9B62-4440-93B3-152DDBB39D0A}.Release|Any CPU.Build.0 = Release|Any CPU + {8A19B1CE-9B62-4440-93B3-152DDBB39D0A}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {8A19B1CE-9B62-4440-93B3-152DDBB39D0A}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {4874AFF4-335D-4037-8858-BBBB987C124B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4874AFF4-335D-4037-8858-BBBB987C124B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4874AFF4-335D-4037-8858-BBBB987C124B}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {4874AFF4-335D-4037-8858-BBBB987C124B}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {4874AFF4-335D-4037-8858-BBBB987C124B}.Release|Any CPU.ActiveCfg = Release|Any CPU {4874AFF4-335D-4037-8858-BBBB987C124B}.Release|Any CPU.Build.0 = Release|Any CPU + {4874AFF4-335D-4037-8858-BBBB987C124B}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {4874AFF4-335D-4037-8858-BBBB987C124B}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {8FD8636E-AFA5-434D-8857-06D02686741A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8FD8636E-AFA5-434D-8857-06D02686741A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8FD8636E-AFA5-434D-8857-06D02686741A}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {8FD8636E-AFA5-434D-8857-06D02686741A}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {8FD8636E-AFA5-434D-8857-06D02686741A}.Release|Any CPU.ActiveCfg = Release|Any CPU {8FD8636E-AFA5-434D-8857-06D02686741A}.Release|Any CPU.Build.0 = Release|Any CPU + {8FD8636E-AFA5-434D-8857-06D02686741A}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {8FD8636E-AFA5-434D-8857-06D02686741A}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {2838CB6F-D2C7-4C0A-A994-C72E56F16984}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2838CB6F-D2C7-4C0A-A994-C72E56F16984}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2838CB6F-D2C7-4C0A-A994-C72E56F16984}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {2838CB6F-D2C7-4C0A-A994-C72E56F16984}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {2838CB6F-D2C7-4C0A-A994-C72E56F16984}.Release|Any CPU.ActiveCfg = Release|Any CPU {2838CB6F-D2C7-4C0A-A994-C72E56F16984}.Release|Any CPU.Build.0 = Release|Any CPU + {2838CB6F-D2C7-4C0A-A994-C72E56F16984}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {2838CB6F-D2C7-4C0A-A994-C72E56F16984}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {36706AC2-C851-4038-B161-9C1E44B668C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {36706AC2-C851-4038-B161-9C1E44B668C8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {36706AC2-C851-4038-B161-9C1E44B668C8}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {36706AC2-C851-4038-B161-9C1E44B668C8}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {36706AC2-C851-4038-B161-9C1E44B668C8}.Release|Any CPU.ActiveCfg = Release|Any CPU {36706AC2-C851-4038-B161-9C1E44B668C8}.Release|Any CPU.Build.0 = Release|Any CPU + {36706AC2-C851-4038-B161-9C1E44B668C8}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {36706AC2-C851-4038-B161-9C1E44B668C8}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {D652A019-B765-4922-B7B8-3AB1C58338D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D652A019-B765-4922-B7B8-3AB1C58338D7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D652A019-B765-4922-B7B8-3AB1C58338D7}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {D652A019-B765-4922-B7B8-3AB1C58338D7}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {D652A019-B765-4922-B7B8-3AB1C58338D7}.Release|Any CPU.ActiveCfg = Release|Any CPU {D652A019-B765-4922-B7B8-3AB1C58338D7}.Release|Any CPU.Build.0 = Release|Any CPU + {D652A019-B765-4922-B7B8-3AB1C58338D7}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {D652A019-B765-4922-B7B8-3AB1C58338D7}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {EC2A38BF-6E77-4A8E-A731-15929544F29C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EC2A38BF-6E77-4A8E-A731-15929544F29C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EC2A38BF-6E77-4A8E-A731-15929544F29C}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {EC2A38BF-6E77-4A8E-A731-15929544F29C}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {EC2A38BF-6E77-4A8E-A731-15929544F29C}.Release|Any CPU.ActiveCfg = Release|Any CPU {EC2A38BF-6E77-4A8E-A731-15929544F29C}.Release|Any CPU.Build.0 = Release|Any CPU + {EC2A38BF-6E77-4A8E-A731-15929544F29C}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {EC2A38BF-6E77-4A8E-A731-15929544F29C}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {29CD3FC6-49E3-4756-B5DF-E03B46E5CD45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {29CD3FC6-49E3-4756-B5DF-E03B46E5CD45}.Debug|Any CPU.Build.0 = Debug|Any CPU + {29CD3FC6-49E3-4756-B5DF-E03B46E5CD45}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {29CD3FC6-49E3-4756-B5DF-E03B46E5CD45}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {29CD3FC6-49E3-4756-B5DF-E03B46E5CD45}.Release|Any CPU.ActiveCfg = Release|Any CPU {29CD3FC6-49E3-4756-B5DF-E03B46E5CD45}.Release|Any CPU.Build.0 = Release|Any CPU + {29CD3FC6-49E3-4756-B5DF-E03B46E5CD45}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {29CD3FC6-49E3-4756-B5DF-E03B46E5CD45}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {AF79BB84-BAE6-4F9A-9AD5-B0E3D7455288}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AF79BB84-BAE6-4F9A-9AD5-B0E3D7455288}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AF79BB84-BAE6-4F9A-9AD5-B0E3D7455288}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {AF79BB84-BAE6-4F9A-9AD5-B0E3D7455288}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {AF79BB84-BAE6-4F9A-9AD5-B0E3D7455288}.Release|Any CPU.ActiveCfg = Release|Any CPU {AF79BB84-BAE6-4F9A-9AD5-B0E3D7455288}.Release|Any CPU.Build.0 = Release|Any CPU + {AF79BB84-BAE6-4F9A-9AD5-B0E3D7455288}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {AF79BB84-BAE6-4F9A-9AD5-B0E3D7455288}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {8C160273-0A1D-4D79-9F7B-7687B2D2F7C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8C160273-0A1D-4D79-9F7B-7687B2D2F7C4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8C160273-0A1D-4D79-9F7B-7687B2D2F7C4}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {8C160273-0A1D-4D79-9F7B-7687B2D2F7C4}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {8C160273-0A1D-4D79-9F7B-7687B2D2F7C4}.Release|Any CPU.ActiveCfg = Release|Any CPU {8C160273-0A1D-4D79-9F7B-7687B2D2F7C4}.Release|Any CPU.Build.0 = Release|Any CPU + {8C160273-0A1D-4D79-9F7B-7687B2D2F7C4}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {8C160273-0A1D-4D79-9F7B-7687B2D2F7C4}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU {A092FA91-856B-4ACA-B1C2-10BDBA366185}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A092FA91-856B-4ACA-B1C2-10BDBA366185}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A092FA91-856B-4ACA-B1C2-10BDBA366185}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU {A092FA91-856B-4ACA-B1C2-10BDBA366185}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A092FA91-856B-4ACA-B1C2-10BDBA366185}.Release|Any CPU.Build.0 = Release|Any CPU + {A092FA91-856B-4ACA-B1C2-10BDBA366185}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU {7549444A-9C81-44DE-AD0D-2C55501EAAC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7549444A-9C81-44DE-AD0D-2C55501EAAC7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7549444A-9C81-44DE-AD0D-2C55501EAAC7}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU {7549444A-9C81-44DE-AD0D-2C55501EAAC7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7549444A-9C81-44DE-AD0D-2C55501EAAC7}.Release|Any CPU.Build.0 = Release|Any CPU + {7549444A-9C81-44DE-AD0D-2C55501EAAC7}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU {78ED9932-0912-4F36-8F82-33DE850E7A33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {78ED9932-0912-4F36-8F82-33DE850E7A33}.Debug|Any CPU.Build.0 = Debug|Any CPU + {78ED9932-0912-4F36-8F82-33DE850E7A33}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU {78ED9932-0912-4F36-8F82-33DE850E7A33}.Release|Any CPU.ActiveCfg = Release|Any CPU - {78ED9932-0912-4F36-8F82-33DE850E7A33}.Release|Any CPU.Build.0 = Release|Any CPU + {78ED9932-0912-4F36-8F82-33DE850E7A33}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU {F3E02B21-1127-431A-B832-0E53CB72097B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F3E02B21-1127-431A-B832-0E53CB72097B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F3E02B21-1127-431A-B832-0E53CB72097B}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU {F3E02B21-1127-431A-B832-0E53CB72097B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F3E02B21-1127-431A-B832-0E53CB72097B}.Release|Any CPU.Build.0 = Release|Any CPU + {F3E02B21-1127-431A-B832-0E53CB72097B}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU {FF25111E-5A3E-48A3-96D8-08A2C5A2A91C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FF25111E-5A3E-48A3-96D8-08A2C5A2A91C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FF25111E-5A3E-48A3-96D8-08A2C5A2A91C}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {FF25111E-5A3E-48A3-96D8-08A2C5A2A91C}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU {FF25111E-5A3E-48A3-96D8-08A2C5A2A91C}.Release|Any CPU.ActiveCfg = Release|Any CPU {FF25111E-5A3E-48A3-96D8-08A2C5A2A91C}.Release|Any CPU.Build.0 = Release|Any CPU + {FF25111E-5A3E-48A3-96D8-08A2C5A2A91C}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {FF25111E-5A3E-48A3-96D8-08A2C5A2A91C}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU + {43E39257-7DC1-46BD-9BD9-2319A1313D07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {43E39257-7DC1-46BD-9BD9-2319A1313D07}.Debug|Any CPU.Build.0 = Debug|Any CPU + {43E39257-7DC1-46BD-9BD9-2319A1313D07}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {43E39257-7DC1-46BD-9BD9-2319A1313D07}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU + {43E39257-7DC1-46BD-9BD9-2319A1313D07}.Release|Any CPU.ActiveCfg = Release|Any CPU + {43E39257-7DC1-46BD-9BD9-2319A1313D07}.Release|Any CPU.Build.0 = Release|Any CPU + {43E39257-7DC1-46BD-9BD9-2319A1313D07}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {43E39257-7DC1-46BD-9BD9-2319A1313D07}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Release|Any CPU.Build.0 = Release|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -256,6 +382,8 @@ Global {78ED9932-0912-4F36-8F82-33DE850E7A33} = {73DA1DFD-79F0-4BA2-B0B6-4F3A21D2C3F8} {F3E02B21-1127-431A-B832-0E53CB72097B} = {73DA1DFD-79F0-4BA2-B0B6-4F3A21D2C3F8} {FF25111E-5A3E-48A3-96D8-08A2C5A2A91C} = {ADA3AE29-F6DE-49F6-8C7C-B321508CAE8E} + {43E39257-7DC1-46BD-9BD9-2319A1313D07} = {F563ABB6-85FB-4CFC-B0D2-1D5130E8246D} + {9088E4E4-B855-457F-AE9E-D86709A5E1F4} = {F563ABB6-85FB-4CFC-B0D2-1D5130E8246D} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {504DA352-6788-4DC0-8705-82167E72A4D3} diff --git a/BlazorTooling.sln b/BlazorTooling.sln deleted file mode 100644 index 30162306de..0000000000 --- a/BlazorTooling.sln +++ /dev/null @@ -1,112 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26124.0 -MinimumVisualStudioVersion = 15.0.26124.0 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tooling", "tooling", "{1AC24BB5-AEBD-4D5B-B86F-8C606EFFFFFB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.VisualStudio.BlazorExtension", "tooling\Microsoft.VisualStudio.BlazorExtension\Microsoft.VisualStudio.BlazorExtension.csproj", "{9088E4E4-B855-457F-AE9E-D86709A5E1F4}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.VisualStudio.LanguageServices.Blazor", "tooling\Microsoft.VisualStudio.LanguageServices.Blazor\Microsoft.VisualStudio.LanguageServices.Blazor.csproj", "{5884589D-4A06-4F5B-B983-8F8D34696550}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{74280251-105B-4618-A9D7-951076793E3D}" - ProjectSection(SolutionItems) = preProject - build\Key.snk = build\Key.snk - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{91810C0E-892D-40EF-BDC0-5470B37E255F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AngleSharpBuilder", "src\anglesharp\AngleSharpBuilder\AngleSharpBuilder.csproj", "{E5067AD8-3AE7-442A-86C5-D19DBC48E961}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "anglesharp", "anglesharp", "{9DEA0869-2F17-419F-8F6A-53DCA898D3D6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Blazor.Razor.Extensions", "src\Microsoft.AspNetCore.Blazor.Razor.Extensions\Microsoft.AspNetCore.Blazor.Razor.Extensions.csproj", "{319463A4-64C8-4A96-BEFD-2952BBD5FF67}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Blazor.Templates", "src\Microsoft.AspNetCore.Blazor.Templates\Microsoft.AspNetCore.Blazor.Templates.csproj", "{EDD21533-C6E6-4F85-BE4F-10E06756E24C}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Debug|x64.ActiveCfg = Debug|Any CPU - {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Debug|x64.Build.0 = Debug|Any CPU - {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Debug|x86.ActiveCfg = Debug|Any CPU - {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Debug|x86.Build.0 = Debug|Any CPU - {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Release|Any CPU.Build.0 = Release|Any CPU - {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Release|x64.ActiveCfg = Release|Any CPU - {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Release|x64.Build.0 = Release|Any CPU - {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Release|x86.ActiveCfg = Release|Any CPU - {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Release|x86.Build.0 = Release|Any CPU - {5884589D-4A06-4F5B-B983-8F8D34696550}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5884589D-4A06-4F5B-B983-8F8D34696550}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5884589D-4A06-4F5B-B983-8F8D34696550}.Debug|x64.ActiveCfg = Debug|Any CPU - {5884589D-4A06-4F5B-B983-8F8D34696550}.Debug|x64.Build.0 = Debug|Any CPU - {5884589D-4A06-4F5B-B983-8F8D34696550}.Debug|x86.ActiveCfg = Debug|Any CPU - {5884589D-4A06-4F5B-B983-8F8D34696550}.Debug|x86.Build.0 = Debug|Any CPU - {5884589D-4A06-4F5B-B983-8F8D34696550}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5884589D-4A06-4F5B-B983-8F8D34696550}.Release|Any CPU.Build.0 = Release|Any CPU - {5884589D-4A06-4F5B-B983-8F8D34696550}.Release|x64.ActiveCfg = Release|Any CPU - {5884589D-4A06-4F5B-B983-8F8D34696550}.Release|x64.Build.0 = Release|Any CPU - {5884589D-4A06-4F5B-B983-8F8D34696550}.Release|x86.ActiveCfg = Release|Any CPU - {5884589D-4A06-4F5B-B983-8F8D34696550}.Release|x86.Build.0 = Release|Any CPU - {E5067AD8-3AE7-442A-86C5-D19DBC48E961}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E5067AD8-3AE7-442A-86C5-D19DBC48E961}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E5067AD8-3AE7-442A-86C5-D19DBC48E961}.Debug|x64.ActiveCfg = Debug|Any CPU - {E5067AD8-3AE7-442A-86C5-D19DBC48E961}.Debug|x64.Build.0 = Debug|Any CPU - {E5067AD8-3AE7-442A-86C5-D19DBC48E961}.Debug|x86.ActiveCfg = Debug|Any CPU - {E5067AD8-3AE7-442A-86C5-D19DBC48E961}.Debug|x86.Build.0 = Debug|Any CPU - {E5067AD8-3AE7-442A-86C5-D19DBC48E961}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E5067AD8-3AE7-442A-86C5-D19DBC48E961}.Release|Any CPU.Build.0 = Release|Any CPU - {E5067AD8-3AE7-442A-86C5-D19DBC48E961}.Release|x64.ActiveCfg = Release|Any CPU - {E5067AD8-3AE7-442A-86C5-D19DBC48E961}.Release|x64.Build.0 = Release|Any CPU - {E5067AD8-3AE7-442A-86C5-D19DBC48E961}.Release|x86.ActiveCfg = Release|Any CPU - {E5067AD8-3AE7-442A-86C5-D19DBC48E961}.Release|x86.Build.0 = Release|Any CPU - {319463A4-64C8-4A96-BEFD-2952BBD5FF67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {319463A4-64C8-4A96-BEFD-2952BBD5FF67}.Debug|Any CPU.Build.0 = Debug|Any CPU - {319463A4-64C8-4A96-BEFD-2952BBD5FF67}.Debug|x64.ActiveCfg = Debug|Any CPU - {319463A4-64C8-4A96-BEFD-2952BBD5FF67}.Debug|x64.Build.0 = Debug|Any CPU - {319463A4-64C8-4A96-BEFD-2952BBD5FF67}.Debug|x86.ActiveCfg = Debug|Any CPU - {319463A4-64C8-4A96-BEFD-2952BBD5FF67}.Debug|x86.Build.0 = Debug|Any CPU - {319463A4-64C8-4A96-BEFD-2952BBD5FF67}.Release|Any CPU.ActiveCfg = Release|Any CPU - {319463A4-64C8-4A96-BEFD-2952BBD5FF67}.Release|Any CPU.Build.0 = Release|Any CPU - {319463A4-64C8-4A96-BEFD-2952BBD5FF67}.Release|x64.ActiveCfg = Release|Any CPU - {319463A4-64C8-4A96-BEFD-2952BBD5FF67}.Release|x64.Build.0 = Release|Any CPU - {319463A4-64C8-4A96-BEFD-2952BBD5FF67}.Release|x86.ActiveCfg = Release|Any CPU - {319463A4-64C8-4A96-BEFD-2952BBD5FF67}.Release|x86.Build.0 = Release|Any CPU - {EDD21533-C6E6-4F85-BE4F-10E06756E24C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EDD21533-C6E6-4F85-BE4F-10E06756E24C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EDD21533-C6E6-4F85-BE4F-10E06756E24C}.Debug|x64.ActiveCfg = Debug|Any CPU - {EDD21533-C6E6-4F85-BE4F-10E06756E24C}.Debug|x64.Build.0 = Debug|Any CPU - {EDD21533-C6E6-4F85-BE4F-10E06756E24C}.Debug|x86.ActiveCfg = Debug|Any CPU - {EDD21533-C6E6-4F85-BE4F-10E06756E24C}.Debug|x86.Build.0 = Debug|Any CPU - {EDD21533-C6E6-4F85-BE4F-10E06756E24C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EDD21533-C6E6-4F85-BE4F-10E06756E24C}.Release|Any CPU.Build.0 = Release|Any CPU - {EDD21533-C6E6-4F85-BE4F-10E06756E24C}.Release|x64.ActiveCfg = Release|Any CPU - {EDD21533-C6E6-4F85-BE4F-10E06756E24C}.Release|x64.Build.0 = Release|Any CPU - {EDD21533-C6E6-4F85-BE4F-10E06756E24C}.Release|x86.ActiveCfg = Release|Any CPU - {EDD21533-C6E6-4F85-BE4F-10E06756E24C}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {9088E4E4-B855-457F-AE9E-D86709A5E1F4} = {1AC24BB5-AEBD-4D5B-B86F-8C606EFFFFFB} - {5884589D-4A06-4F5B-B983-8F8D34696550} = {1AC24BB5-AEBD-4D5B-B86F-8C606EFFFFFB} - {E5067AD8-3AE7-442A-86C5-D19DBC48E961} = {9DEA0869-2F17-419F-8F6A-53DCA898D3D6} - {9DEA0869-2F17-419F-8F6A-53DCA898D3D6} = {91810C0E-892D-40EF-BDC0-5470B37E255F} - {319463A4-64C8-4A96-BEFD-2952BBD5FF67} = {91810C0E-892D-40EF-BDC0-5470B37E255F} - {EDD21533-C6E6-4F85-BE4F-10E06756E24C} = {91810C0E-892D-40EF-BDC0-5470B37E255F} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {248760B5-9F71-4110-8DBC-DDAB615AD88E} - EndGlobalSection -EndGlobal diff --git a/Directory.Build.props b/Directory.Build.props index 3911cb545a..bdc2c346a4 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,15 +1,31 @@ + + + + Microsoft ASP.NET Core Blazor https://github.com/aspnet/blazor git $(MSBuildThisFileDirectory) + $(MSBuildThisFileDirectory)build\Key.snk true - $(MSBuildThisFileDirectory)artifacts\build + Microsoft + + + false + false + false + + + + 2.1.0-preview2-30230 diff --git a/Directory.Build.targets b/Directory.Build.targets new file mode 100644 index 0000000000..894b1d0cf8 --- /dev/null +++ b/Directory.Build.targets @@ -0,0 +1,6 @@ + + + $(MicrosoftNETCoreApp20PackageVersion) + $(MicrosoftNETCoreApp21PackageVersion) + + diff --git a/README.md b/README.md index f8a04b4ff6..071bfda321 100644 --- a/README.md +++ b/README.md @@ -33,14 +33,15 @@ We are still *very early* in this project. There isn't yet anything you can down ## Build Prerequisites: -- [.NET Core SDK](https://dot.net/core) (>2.1.4) - [Node.js](https://nodejs.org/) (>8.3) -Run `dotnet build Blazor.sln` from the solution directory. +The build script will acquire the required version of the .NET runtime and .NET SDK on first run. -## Run tests +Run `build.cmd` or `build.sh` from the solution directory. -Run `dotnet test test//.Test.csproj` +## Run unit tests + +Run `build.cmd /t:Test` or `build.sh /t:Test` ## Run end-to-end tests @@ -52,35 +53,27 @@ Prerequisites: Run `selenium-standalone start` -Run `dotnet test test\Microsoft.AspNetCore.Blazor.E2ETest\Microsoft.AspNetCore.Blazor.E2ETest.csproj` +Run `build.cmd /t:Test /p:BlazorAllTests=true` or `build.sh /t:Test /p:BlazorAllTests=true` -## Run all tests - -Install prerequisites for E2E tests - -Run `dotnet test test\AllTests.proj` - -## Build VS Tooling +## Opening in Visual Studio Prerequisites: -- Visual Studio 2017 15.6 (or newer) -- Visual Studio extension development features (install via Visual Studio Installer) +- Visual Studio 2017 15.7 preview 1 (or newer) - [download](https://www.visualstudio.com/thank-you-downloading-visual-studio/?ch=pre&sku=Enterprise&rel=15) -Open a VS Developer Command Prompt +We recommend getting the preview version of Visual Studio and updating it frequently. The Blazor +editing experience in Visual Studio depends on new features of the Razor language tooling and +will be updated frequently. -Run the following instructions from the solution directory. +When installing Visual Studio choose the following workloads: +- ASP.NET and Web Development +- Visual Studio extension development features -```shell -msbuild BlazorTooling.sln /t:Restore -msbuild BlazorTooling.sln -``` +## Developing the Blazor VS Tooling -## Use VS Tooling +To do local development of the Blazor tooling experience in VS, select the `Microsoft.VisualStudio.BlazorExtension` +project and launch the debugger. -To install the Tooling following prerequisites must be installed first: - -- Visual Studio 2017 15.6 (or newer) -- Workload: ASP.NET and web development +The Blazor Visual Studio tooling will build as part of the command line build when on Windows. ## Contributing diff --git a/build.cmd b/build.cmd new file mode 100644 index 0000000000..c0050bda12 --- /dev/null +++ b/build.cmd @@ -0,0 +1,2 @@ +@ECHO OFF +PowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command "[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';& '%~dp0run.ps1' default-build %*; exit $LASTEXITCODE" diff --git a/build.sh b/build.sh new file mode 100755 index 0000000000..98a4b22765 --- /dev/null +++ b/build.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -euo pipefail +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Call "sync" between "chmod" and execution to prevent "text file busy" error in Docker (aufs) +chmod +x "$DIR/run.sh"; sync +"$DIR/run.sh" default-build "$@" diff --git a/build/VSIX.targets b/build/VSIX.targets new file mode 100644 index 0000000000..ee4296219c --- /dev/null +++ b/build/VSIX.targets @@ -0,0 +1,120 @@ + + + true + $(RestoreDependsOn);RestoreVSIX + $(PackageDependsOn);PackageVSIX + $(GetArtifactInfoDependsOn);GetVSIXArtifactInfo + Microsoft.VisualStudio.BlazorExtension + $(BuildDir)$(VSIXName).vsix + $(BuildDir)$(VSIXName).json + $(RepositoryRoot)tooling\$(VSIXName)\$(VSIXName).csproj + $(BuildDir)$(VSIXName).pdb + shipoob + + + + + + + + + + VsixPackage + $(PackageVersion) + $(VSIXArtifactCategory) + $(VSIXName) + + + + SymbolsFile + $(VSIXArtifactCategory) + $(VSIXName).vsix + full + + + + VsixPackageManifestFile + $(VSIXArtifactCategory) + $(VSIXName).vsix + $(VSIXName) + + + + + + + + + + + + + + $(LogOutputDir)vsix-restore.rsp + + + + + + + + + + + + + + + + + + + + + + $(LogOutputDir)vsix.log + $(LogOutputDir)vsix-build.rsp + + + + + + + + + + + + + + + diff --git a/build/aspnetci-build.ps1 b/build/aspnetci-build.ps1 index 1d5a5eaa92..ffd27e8fea 100644 --- a/build/aspnetci-build.ps1 +++ b/build/aspnetci-build.ps1 @@ -1,6 +1 @@ -Invoke-WebRequest -useb 'https://dot.net/v1/dotnet-install.ps1' -OutFile .\build\dotnet-install.ps1 -.\build\dotnet-install.ps1 -channel Current -version 2.1.3 -InstallDir dotnetsdk -dotnet --version -dotnet pack Blazor.sln --configuration Release -cmd /c "C:\Program Files (x86)\Microsoft Visual Studio\aspnetci\Enterprise\MSBuild\15.0\Bin\MSBuild.exe" BlazorTooling.sln /t:Restore -cmd /c "C:\Program Files (x86)\Microsoft Visual Studio\aspnetci\Enterprise\MSBuild\15.0\Bin\MSBuild.exe" BlazorTooling.sln /p:DeployExtension=false /p:TargetVSIXContainer=..\..\artifacts\build\Microsoft.VisualStudio.BlazorExtension.vsix +build.cmd \ No newline at end of file diff --git a/build/dependencies.props b/build/dependencies.props new file mode 100644 index 0000000000..0142a8ed99 --- /dev/null +++ b/build/dependencies.props @@ -0,0 +1,10 @@ + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + + + 2.1.0-preview2-15704 + + + + diff --git a/build/repo.props b/build/repo.props new file mode 100644 index 0000000000..3921cba3bd --- /dev/null +++ b/build/repo.props @@ -0,0 +1,29 @@ + + + + + false + + + + + Internal.AspNetCore.Universe.Lineup + https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json + + + true + + + + + + + + + + + + diff --git a/build/repo.targets b/build/repo.targets new file mode 100644 index 0000000000..e6a41f7b0a --- /dev/null +++ b/build/repo.targets @@ -0,0 +1,17 @@ + + + + + + Configuration=$(Configuration)NoVSIX + + + + + + + + + diff --git a/build/sources.props b/build/sources.props new file mode 100644 index 0000000000..c9c480c8d4 --- /dev/null +++ b/build/sources.props @@ -0,0 +1,16 @@ + + + + + $(DotNetRestoreSources) + + $(RestoreSources); + https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json; + https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json + + + $(RestoreSources); + https://api.nuget.org/v3/index.json; + + + diff --git a/global.json b/global.json index 424cd16062..e6dbde24e2 100644 --- a/global.json +++ b/global.json @@ -1,5 +1 @@ -{ - "sdk": { - "version": "2.1.3" - } -} +{ "sdk": { "version": "2.1.300-preview2-008322" } } diff --git a/korebuild-lock.txt b/korebuild-lock.txt new file mode 100644 index 0000000000..6f78eddfad --- /dev/null +++ b/korebuild-lock.txt @@ -0,0 +1,2 @@ +version:2.1.0-preview2-15735 +commithash:e1c2a4b79748d853196318c6e2e52151846070bd diff --git a/korebuild.json b/korebuild.json new file mode 100644 index 0000000000..4af8c89b72 --- /dev/null +++ b/korebuild.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://raw.githubusercontent.com/aspnet/BuildTools/dev/tools/korebuild.schema.json", + "channel": "dev", + "toolsets": { + "visualstudio": { + "required": false, + "includePrerelease": true, + "minVersion": "15.0.26730.03", + "requiredWorkloads": [ + "Microsoft.VisualStudio.Component.VSSDK" + ] + } + } +} diff --git a/nuget.config b/nuget.config deleted file mode 100644 index 652928f5e4..0000000000 --- a/nuget.config +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/run.cmd b/run.cmd new file mode 100644 index 0000000000..d52d5c7e68 --- /dev/null +++ b/run.cmd @@ -0,0 +1,2 @@ +@ECHO OFF +PowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command "[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';& '%~dp0run.ps1' %*; exit $LASTEXITCODE" diff --git a/run.ps1 b/run.ps1 new file mode 100644 index 0000000000..27dcf848f8 --- /dev/null +++ b/run.ps1 @@ -0,0 +1,196 @@ +#!/usr/bin/env powershell +#requires -version 4 + +<# +.SYNOPSIS +Executes KoreBuild commands. + +.DESCRIPTION +Downloads korebuild if required. Then executes the KoreBuild command. To see available commands, execute with `-Command help`. + +.PARAMETER Command +The KoreBuild command to run. + +.PARAMETER Path +The folder to build. Defaults to the folder containing this script. + +.PARAMETER Channel +The channel of KoreBuild to download. Overrides the value from the config file. + +.PARAMETER DotNetHome +The directory where .NET Core tools will be stored. + +.PARAMETER ToolsSource +The base url where build tools can be downloaded. Overrides the value from the config file. + +.PARAMETER Update +Updates KoreBuild to the latest version even if a lock file is present. + +.PARAMETER ConfigFile +The path to the configuration file that stores values. Defaults to korebuild.json. + +.PARAMETER ToolsSourceSuffix +The Suffix to append to the end of the ToolsSource. Useful for query strings in blob stores. + +.PARAMETER Arguments +Arguments to be passed to the command + +.NOTES +This function will create a file $PSScriptRoot/korebuild-lock.txt. This lock file can be committed to source, but does not have to be. +When the lockfile is not present, KoreBuild will create one using latest available version from $Channel. + +The $ConfigFile is expected to be an JSON file. It is optional, and the configuration values in it are optional as well. Any options set +in the file are overridden by command line parameters. + +.EXAMPLE +Example config file: +```json +{ + "$schema": "https://raw.githubusercontent.com/aspnet/BuildTools/dev/tools/korebuild.schema.json", + "channel": "dev", + "toolsSource": "https://aspnetcore.blob.core.windows.net/buildtools" +} +``` +#> +[CmdletBinding(PositionalBinding = $false)] +param( + [Parameter(Mandatory = $true, Position = 0)] + [string]$Command, + [string]$Path = $PSScriptRoot, + [Alias('c')] + [string]$Channel, + [Alias('d')] + [string]$DotNetHome, + [Alias('s')] + [string]$ToolsSource, + [Alias('u')] + [switch]$Update, + [string]$ConfigFile, + [string]$ToolsSourceSuffix, + [Parameter(ValueFromRemainingArguments = $true)] + [string[]]$Arguments +) + +Set-StrictMode -Version 2 +$ErrorActionPreference = 'Stop' + +# +# Functions +# + +function Get-KoreBuild { + + $lockFile = Join-Path $Path 'korebuild-lock.txt' + + if (!(Test-Path $lockFile) -or $Update) { + Get-RemoteFile "$ToolsSource/korebuild/channels/$Channel/latest.txt" $lockFile $ToolsSourceSuffix + } + + $version = Get-Content $lockFile | Where-Object { $_ -like 'version:*' } | Select-Object -first 1 + if (!$version) { + Write-Error "Failed to parse version from $lockFile. Expected a line that begins with 'version:'" + } + $version = $version.TrimStart('version:').Trim() + $korebuildPath = Join-Paths $DotNetHome ('buildtools', 'korebuild', $version) + + if (!(Test-Path $korebuildPath)) { + Write-Host -ForegroundColor Magenta "Downloading KoreBuild $version" + New-Item -ItemType Directory -Path $korebuildPath | Out-Null + $remotePath = "$ToolsSource/korebuild/artifacts/$version/korebuild.$version.zip" + + try { + $tmpfile = Join-Path ([IO.Path]::GetTempPath()) "KoreBuild-$([guid]::NewGuid()).zip" + Get-RemoteFile $remotePath $tmpfile $ToolsSourceSuffix + if (Get-Command -Name 'Expand-Archive' -ErrorAction Ignore) { + # Use built-in commands where possible as they are cross-plat compatible + Expand-Archive -Path $tmpfile -DestinationPath $korebuildPath + } + else { + # Fallback to old approach for old installations of PowerShell + Add-Type -AssemblyName System.IO.Compression.FileSystem + [System.IO.Compression.ZipFile]::ExtractToDirectory($tmpfile, $korebuildPath) + } + } + catch { + Remove-Item -Recurse -Force $korebuildPath -ErrorAction Ignore + throw + } + finally { + Remove-Item $tmpfile -ErrorAction Ignore + } + } + + return $korebuildPath +} + +function Join-Paths([string]$path, [string[]]$childPaths) { + $childPaths | ForEach-Object { $path = Join-Path $path $_ } + return $path +} + +function Get-RemoteFile([string]$RemotePath, [string]$LocalPath, [string]$RemoteSuffix) { + if ($RemotePath -notlike 'http*') { + Copy-Item $RemotePath $LocalPath + return + } + + $retries = 10 + while ($retries -gt 0) { + $retries -= 1 + try { + Invoke-WebRequest -UseBasicParsing -Uri $($RemotePath + $RemoteSuffix) -OutFile $LocalPath + return + } + catch { + Write-Verbose "Request failed. $retries retries remaining" + } + } + + Write-Error "Download failed: '$RemotePath'." +} + +# +# Main +# + +# Load configuration or set defaults + +$Path = Resolve-Path $Path +if (!$ConfigFile) { $ConfigFile = Join-Path $Path 'korebuild.json' } + +if (Test-Path $ConfigFile) { + try { + $config = Get-Content -Raw -Encoding UTF8 -Path $ConfigFile | ConvertFrom-Json + if ($config) { + if (!($Channel) -and (Get-Member -Name 'channel' -InputObject $config)) { [string] $Channel = $config.channel } + if (!($ToolsSource) -and (Get-Member -Name 'toolsSource' -InputObject $config)) { [string] $ToolsSource = $config.toolsSource} + } + } + catch { + Write-Warning "$ConfigFile could not be read. Its settings will be ignored." + Write-Warning $Error[0] + } +} + +if (!$DotNetHome) { + $DotNetHome = if ($env:DOTNET_HOME) { $env:DOTNET_HOME } ` + elseif ($env:USERPROFILE) { Join-Path $env:USERPROFILE '.dotnet'} ` + elseif ($env:HOME) {Join-Path $env:HOME '.dotnet'}` + else { Join-Path $PSScriptRoot '.dotnet'} +} + +if (!$Channel) { $Channel = 'dev' } +if (!$ToolsSource) { $ToolsSource = 'https://aspnetcore.blob.core.windows.net/buildtools' } + +# Execute + +$korebuildPath = Get-KoreBuild +Import-Module -Force -Scope Local (Join-Path $korebuildPath 'KoreBuild.psd1') + +try { + Set-KoreBuildSettings -ToolsSource $ToolsSource -DotNetHome $DotNetHome -RepoPath $Path -ConfigFile $ConfigFile + Invoke-KoreBuildCommand $Command @Arguments +} +finally { + Remove-Module 'KoreBuild' -ErrorAction Ignore +} diff --git a/run.sh b/run.sh new file mode 100755 index 0000000000..834961fc3a --- /dev/null +++ b/run.sh @@ -0,0 +1,231 @@ +#!/usr/bin/env bash + +set -euo pipefail + +# +# variables +# + +RESET="\033[0m" +RED="\033[0;31m" +YELLOW="\033[0;33m" +MAGENTA="\033[0;95m" +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +[ -z "${DOTNET_HOME:-}" ] && DOTNET_HOME="$HOME/.dotnet" +verbose=false +update=false +repo_path="$DIR" +channel='' +tools_source='' +tools_source_suffix='' + +# +# Functions +# +__usage() { + echo "Usage: $(basename "${BASH_SOURCE[0]}") command [options] [[--] ...]" + echo "" + echo "Arguments:" + echo " command The command to be run." + echo " ... Arguments passed to the command. Variable number of arguments allowed." + echo "" + echo "Options:" + echo " --verbose Show verbose output." + echo " -c|--channel The channel of KoreBuild to download. Overrides the value from the config file.." + echo " --config-file The path to the configuration file that stores values. Defaults to korebuild.json." + echo " -d|--dotnet-home The directory where .NET Core tools will be stored. Defaults to '\$DOTNET_HOME' or '\$HOME/.dotnet." + echo " --path The directory to build. Defaults to the directory containing the script." + echo " -s|--tools-source|-ToolsSource The base url where build tools can be downloaded. Overrides the value from the config file." + echo " --tools-source-suffix|-ToolsSourceSuffix The suffix to append to tools-source. Useful for query strings." + echo " -u|--update Update to the latest KoreBuild even if the lock file is present." + echo "" + echo "Description:" + echo " This function will create a file \$DIR/korebuild-lock.txt. This lock file can be committed to source, but does not have to be." + echo " When the lockfile is not present, KoreBuild will create one using latest available version from \$channel." + + if [[ "${1:-}" != '--no-exit' ]]; then + exit 2 + fi +} + +get_korebuild() { + local version + local lock_file="$repo_path/korebuild-lock.txt" + if [ ! -f "$lock_file" ] || [ "$update" = true ]; then + __get_remote_file "$tools_source/korebuild/channels/$channel/latest.txt" "$lock_file" "$tools_source_suffix" + fi + version="$(grep 'version:*' -m 1 "$lock_file")" + if [[ "$version" == '' ]]; then + __error "Failed to parse version from $lock_file. Expected a line that begins with 'version:'" + return 1 + fi + version="$(echo "${version#version:}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')" + local korebuild_path="$DOTNET_HOME/buildtools/korebuild/$version" + + { + if [ ! -d "$korebuild_path" ]; then + mkdir -p "$korebuild_path" + local remote_path="$tools_source/korebuild/artifacts/$version/korebuild.$version.zip" + tmpfile="$(mktemp)" + echo -e "${MAGENTA}Downloading KoreBuild ${version}${RESET}" + if __get_remote_file "$remote_path" "$tmpfile" "$tools_source_suffix"; then + unzip -q -d "$korebuild_path" "$tmpfile" + fi + rm "$tmpfile" || true + fi + + source "$korebuild_path/KoreBuild.sh" + } || { + if [ -d "$korebuild_path" ]; then + echo "Cleaning up after failed installation" + rm -rf "$korebuild_path" || true + fi + return 1 + } +} + +__error() { + echo -e "${RED}error: $*${RESET}" 1>&2 +} + +__warn() { + echo -e "${YELLOW}warning: $*${RESET}" +} + +__machine_has() { + hash "$1" > /dev/null 2>&1 + return $? +} + +__get_remote_file() { + local remote_path=$1 + local local_path=$2 + local remote_path_suffix=$3 + + if [[ "$remote_path" != 'http'* ]]; then + cp "$remote_path" "$local_path" + return 0 + fi + + local failed=false + if __machine_has wget; then + wget --tries 10 --quiet -O "$local_path" "${remote_path}${remote_path_suffix}" || failed=true + else + failed=true + fi + + if [ "$failed" = true ] && __machine_has curl; then + failed=false + curl --retry 10 -sSL -f --create-dirs -o "$local_path" "${remote_path}${remote_path_suffix}" || failed=true + fi + + if [ "$failed" = true ]; then + __error "Download failed: $remote_path" 1>&2 + return 1 + fi +} + +# +# main +# + +command="${1:-}" +shift + +while [[ $# -gt 0 ]]; do + case $1 in + -\?|-h|--help) + __usage --no-exit + exit 0 + ;; + -c|--channel|-Channel) + shift + channel="${1:-}" + [ -z "$channel" ] && __usage + ;; + --config-file|-ConfigFile) + shift + config_file="${1:-}" + [ -z "$config_file" ] && __usage + if [ ! -f "$config_file" ]; then + __error "Invalid value for --config-file. $config_file does not exist." + exit 1 + fi + ;; + -d|--dotnet-home|-DotNetHome) + shift + DOTNET_HOME="${1:-}" + [ -z "$DOTNET_HOME" ] && __usage + ;; + --path|-Path) + shift + repo_path="${1:-}" + [ -z "$repo_path" ] && __usage + ;; + -s|--tools-source|-ToolsSource) + shift + tools_source="${1:-}" + [ -z "$tools_source" ] && __usage + ;; + --tools-source-suffix|-ToolsSourceSuffix) + shift + tools_source_suffix="${1:-}" + [ -z "$tools_source_suffix" ] && __usage + ;; + -u|--update|-Update) + update=true + ;; + --verbose|-Verbose) + verbose=true + ;; + --) + shift + break + ;; + *) + break + ;; + esac + shift +done + +if ! __machine_has unzip; then + __error 'Missing required command: unzip' + exit 1 +fi + +if ! __machine_has curl && ! __machine_has wget; then + __error 'Missing required command. Either wget or curl is required.' + exit 1 +fi + +[ -z "${config_file:-}" ] && config_file="$repo_path/korebuild.json" +if [ -f "$config_file" ]; then + if __machine_has jq ; then + if jq '.' "$config_file" >/dev/null ; then + config_channel="$(jq -r 'select(.channel!=null) | .channel' "$config_file")" + config_tools_source="$(jq -r 'select(.toolsSource!=null) | .toolsSource' "$config_file")" + else + __warn "$config_file is invalid JSON. Its settings will be ignored." + fi + elif __machine_has python ; then + if python -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'))" >/dev/null ; then + config_channel="$(python -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'));print(obj['channel'] if 'channel' in obj else '')")" + config_tools_source="$(python -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'));print(obj['toolsSource'] if 'toolsSource' in obj else '')")" + else + __warn "$config_file is invalid JSON. Its settings will be ignored." + fi + else + __warn 'Missing required command: jq or pyton. Could not parse the JSON file. Its settings will be ignored.' + fi + + [ ! -z "${config_channel:-}" ] && channel="$config_channel" + [ ! -z "${config_tools_source:-}" ] && tools_source="$config_tools_source" +fi + +[ -z "$channel" ] && channel='dev' +[ -z "$tools_source" ] && tools_source='https://aspnetcore.blob.core.windows.net/buildtools' + +get_korebuild +set_korebuildsettings "$tools_source" "$DOTNET_HOME" "$repo_path" "$config_file" +invoke_korebuild_command "$command" "$@" diff --git a/samples/HostedInAspNet.Client/HostedInAspNet.Client.csproj b/samples/HostedInAspNet.Client/HostedInAspNet.Client.csproj index 9e15f34a0d..6e1a1b5904 100644 --- a/samples/HostedInAspNet.Client/HostedInAspNet.Client.csproj +++ b/samples/HostedInAspNet.Client/HostedInAspNet.Client.csproj @@ -1,4 +1,4 @@ - + netstandard2.0 diff --git a/samples/MonoSanityClient/MonoSanityClient.csproj b/samples/MonoSanityClient/MonoSanityClient.csproj index 6ad2d31335..dce14f8fe8 100644 --- a/samples/MonoSanityClient/MonoSanityClient.csproj +++ b/samples/MonoSanityClient/MonoSanityClient.csproj @@ -1,4 +1,4 @@ - + netstandard2.0 diff --git a/samples/StandaloneApp/StandaloneApp.csproj b/samples/StandaloneApp/StandaloneApp.csproj index 4c7f415f4a..253651db56 100644 --- a/samples/StandaloneApp/StandaloneApp.csproj +++ b/samples/StandaloneApp/StandaloneApp.csproj @@ -1,4 +1,4 @@ - + netstandard2.0 diff --git a/src/Microsoft.AspNetCore.Blazor.Build/Microsoft.AspNetCore.Blazor.Build.csproj b/src/Microsoft.AspNetCore.Blazor.Build/Microsoft.AspNetCore.Blazor.Build.csproj index acaa68d5eb..e39934b290 100644 --- a/src/Microsoft.AspNetCore.Blazor.Build/Microsoft.AspNetCore.Blazor.Build.csproj +++ b/src/Microsoft.AspNetCore.Blazor.Build/Microsoft.AspNetCore.Blazor.Build.csproj @@ -27,6 +27,27 @@ + + + + + NuGetSymbolsPackage + $(PackageId) + $(PackageVersion) + $(TargetFramework) + $([MSBuild]::Escape($(TargetFrameworks))) + $(IncludeSource) + $(PackageType) + $(RepositoryRoot) + $(RepositoryUrl) + $(PackageArtifactCategory) + $(PackageSigningCertName) + true + false + true + + + @@ -52,12 +73,6 @@ - - AngleSharpBuilder - False - TargetFramework=netcoreapp2.0 - false - diff --git a/src/Microsoft.AspNetCore.Blazor.Build/targets/RazorCompilation.targets b/src/Microsoft.AspNetCore.Blazor.Build/targets/RazorCompilation.targets index 015714a36d..6ce0db5615 100644 --- a/src/Microsoft.AspNetCore.Blazor.Build/targets/RazorCompilation.targets +++ b/src/Microsoft.AspNetCore.Blazor.Build/targets/RazorCompilation.targets @@ -10,6 +10,9 @@ <_BlazorAngleSharpAssemblyPath>$(MSBuildThisFileDirectory)../tools/Microsoft.AspNetCore.Blazor.AngleSharp.dll <_BlazorExtensionAssemblyPath>$(MSBuildThisFileDirectory)../tools/Microsoft.AspNetCore.Blazor.Razor.Extensions.dll + + false + Blazor-0.1 @@ -190,7 +193,8 @@ - <_BlazorReferencePathWithRefAssemblies Include="@(ReferencePathWithRefAssemblies);@(_BlazorTempAssembly)"/> + <_BlazorReferencePathWithRefAssemblies Include="@(ReferencePathWithRefAssemblies)" /> + <_BlazorReferencePathWithRefAssemblies Include="%(_BlazorTempAssembly.FullPath)" /> diff --git a/src/Microsoft.AspNetCore.Blazor.Cli/Server/Startup.cs b/src/Microsoft.AspNetCore.Blazor.Cli/Server/Startup.cs index 8cece4d4ab..b055e51c27 100644 --- a/src/Microsoft.AspNetCore.Blazor.Cli/Server/Startup.cs +++ b/src/Microsoft.AspNetCore.Blazor.Cli/Server/Startup.cs @@ -82,15 +82,21 @@ namespace Microsoft.AspNetCore.Blazor.Cli.Server private static string FindClientBinDir(string clientAppSourceRoot) { - var binDebugDir = Path.Combine(clientAppSourceRoot, "bin", "Debug"); - var subdirectories = Directory.GetDirectories(binDebugDir); + // Our CI scripts will use Release + #if DEBUG + var binDir = Path.Combine(clientAppSourceRoot, "bin", "Debug"); + #else + var binDir = Path.Combine(clientAppSourceRoot, "bin", "Release"); + #endif + + var subdirectories = Directory.GetDirectories(binDir); if (subdirectories.Length != 1) { throw new InvalidOperationException($"Could not locate bin directory for Blazor app. " + - $"Expected to find exactly 1 subdirectory in '{binDebugDir}', but found {subdirectories.Length}."); + $"Expected to find exactly 1 subdirectory in '{binDir}', but found {subdirectories.Length}."); } - return Path.Combine(binDebugDir, subdirectories[0]); + return Path.Combine(binDir, subdirectories[0]); } } } diff --git a/src/anglesharp/AngleSharpBuilder/AngleSharpBuilder.csproj b/src/anglesharp/AngleSharpBuilder/AngleSharpBuilder.csproj index fd4c96052a..617f57fa31 100644 --- a/src/anglesharp/AngleSharpBuilder/AngleSharpBuilder.csproj +++ b/src/anglesharp/AngleSharpBuilder/AngleSharpBuilder.csproj @@ -11,7 +11,11 @@ - + diff --git a/src/anglesharp/AngleSharpBuilder/Program.cs b/src/anglesharp/AngleSharpBuilder/Program.cs index 2e2261030e..474d7a2237 100644 --- a/src/anglesharp/AngleSharpBuilder/Program.cs +++ b/src/anglesharp/AngleSharpBuilder/Program.cs @@ -3,9 +3,11 @@ using AngleSharp.Parser.Html; using Mono.Cecil; +using System; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; +using System.Threading; namespace AngleSharpBuilder { @@ -28,9 +30,30 @@ namespace AngleSharpBuilder { public static void Main() { - var outputDir = Path.Combine(Directory.GetCurrentDirectory(), "dist"); - var inputAssembly = Assembly.GetAssembly(typeof(HtmlParser)); - WriteModifiedAssembly(inputAssembly, outputDir); + // Prevent concurrent execution of this program. Since this is called by MSBuild + // make sure to wait for other instances to exit, we need the file to exist when + // this program exits. + using (var mutex = new Mutex(true, "AngleSharpBuilder", out var created)) + { + if (created) + { + try + { + var outputDir = Path.Combine(Directory.GetCurrentDirectory(), "dist"); + var inputAssembly = Assembly.GetAssembly(typeof(HtmlParser)); + WriteModifiedAssembly(inputAssembly, outputDir); + } + finally + { + mutex.ReleaseMutex(); + } + } + else + { + Console.WriteLine("Waiting for AngleSharpBuilder to exit..."); + mutex.WaitOne(TimeSpan.FromSeconds(10)); + } + } } private static void WriteModifiedAssembly(Assembly assembly, string outputDir) diff --git a/test/AllTests.proj b/test/AllTests.proj deleted file mode 100644 index 76345a3a6c..0000000000 --- a/test/AllTests.proj +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/test/Microsoft.AspNetCore.Blazor.Build.Test/DesignTimeCodeGenerationRazorIntegrationTest.cs b/test/Microsoft.AspNetCore.Blazor.Build.Test/DesignTimeCodeGenerationRazorIntegrationTest.cs index 53c4c8a86b..2a3f2cad68 100644 --- a/test/Microsoft.AspNetCore.Blazor.Build.Test/DesignTimeCodeGenerationRazorIntegrationTest.cs +++ b/test/Microsoft.AspNetCore.Blazor.Build.Test/DesignTimeCodeGenerationRazorIntegrationTest.cs @@ -47,7 +47,7 @@ namespace Test // Assert CompileToAssembly(generated); - Assert.Equal(@" + AssertSourceEquals(@" // #pragma warning disable 1591 namespace Test @@ -105,7 +105,7 @@ global::System.Object __typeHelper = ""*, TestAssembly""; } #pragma warning restore 1591 -".Trim(), generated.Code.Trim(), ignoreLineEndingDifferences: true); +", generated); } [Fact] @@ -132,7 +132,7 @@ namespace Test // Assert CompileToAssembly(generated); - Assert.Equal(@" + AssertSourceEquals(@" // #pragma warning disable 1591 namespace Test @@ -175,7 +175,7 @@ global::System.Object __typeHelper = ""*, TestAssembly""; } } #pragma warning restore 1591 -".Trim(), generated.Code.Trim(), ignoreLineEndingDifferences: true); +", generated); } [Fact] @@ -201,7 +201,7 @@ namespace Test // Assert CompileToAssembly(generated); - Assert.Equal(@" + AssertSourceEquals(@" // #pragma warning disable 1591 namespace Test @@ -244,7 +244,7 @@ global::System.Object __typeHelper = ""*, TestAssembly""; } } #pragma warning restore 1591 -".Trim(), generated.Code.Trim(), ignoreLineEndingDifferences: true); +", generated); } [Fact] @@ -280,7 +280,7 @@ namespace Test // Assert CompileToAssembly(generated); - Assert.Equal(@" + AssertSourceEquals(@" // #pragma warning disable 1591 namespace Test @@ -308,7 +308,7 @@ global::System.Object __typeHelper = ""*, TestAssembly""; { base.BuildRenderTree(builder); - __o = new Microsoft.AspNetCore.Blazor.UIEventHandler(eventArgs => + __o = new Microsoft.AspNetCore.Blazor.UIEventHandler((eventArgs) => #line 2 ""x:\dir\subdir\Test\TestComponent.cshtml"" Increment() @@ -333,7 +333,7 @@ global::System.Object __typeHelper = ""*, TestAssembly""; } #pragma warning restore 1591 -".Trim(), generated.Code.Trim(), ignoreLineEndingDifferences: true); +", generated); } [Fact] @@ -370,7 +370,7 @@ namespace Test // Assert CompileToAssembly(generated); - Assert.Equal(@" + AssertSourceEquals(@" // #pragma warning disable 1591 namespace Test @@ -428,7 +428,7 @@ global::System.Object __typeHelper = ""*, TestAssembly""; } #pragma warning restore 1591 -".Trim(), generated.Code.Trim()); +", generated); } [Fact] @@ -458,7 +458,7 @@ namespace Test // Assert CompileToAssembly(generated); - Assert.Equal(@" + AssertSourceEquals(@" // #pragma warning disable 1591 namespace Test @@ -494,7 +494,7 @@ global::System.Object __typeHelper = ""*, TestAssembly""; } } #pragma warning restore 1591 -".Trim(), generated.Code.Trim()); +", generated); } } } diff --git a/test/Microsoft.AspNetCore.Blazor.Build.Test/Microsoft.AspNetCore.Blazor.Build.Test.csproj b/test/Microsoft.AspNetCore.Blazor.Build.Test/Microsoft.AspNetCore.Blazor.Build.Test.csproj index c2c440f4de..390a062ea2 100644 --- a/test/Microsoft.AspNetCore.Blazor.Build.Test/Microsoft.AspNetCore.Blazor.Build.Test.csproj +++ b/test/Microsoft.AspNetCore.Blazor.Build.Test/Microsoft.AspNetCore.Blazor.Build.Test.csproj @@ -23,7 +23,6 @@ - diff --git a/test/Microsoft.AspNetCore.Blazor.Build.Test/RazorIntegrationTestBase.cs b/test/Microsoft.AspNetCore.Blazor.Build.Test/RazorIntegrationTestBase.cs index f4b9c7edba..97b5e3e513 100644 --- a/test/Microsoft.AspNetCore.Blazor.Build.Test/RazorIntegrationTestBase.cs +++ b/test/Microsoft.AspNetCore.Blazor.Build.Test/RazorIntegrationTestBase.cs @@ -289,6 +289,19 @@ namespace Microsoft.AspNetCore.Blazor.Build.Test return builder.GetFrames(); } + protected static void AssertSourceEquals(string expected, CompileToCSharpResult generated) + { + // Normalize the paths inside the expected result to match the OS paths + if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + var windowsPath = Path.Combine(ArbitraryWindowsPath, generated.CodeDocument.Source.RelativePath).Replace('/', '\\'); + expected = expected.Replace(windowsPath, generated.CodeDocument.Source.FilePath); + } + + expected = expected.Trim(); + Assert.Equal(expected, generated.Code.Trim(), ignoreLineEndingDifferences: true); + } + protected class CompileToCSharpResult { // A compilation that can be used *with* this code to compile an assembly diff --git a/test/Microsoft.AspNetCore.Blazor.Build.Test/RuntimeCodeGenerationRazorIntegrationTest.cs b/test/Microsoft.AspNetCore.Blazor.Build.Test/RuntimeCodeGenerationRazorIntegrationTest.cs index 3452057002..ad557be0ec 100644 --- a/test/Microsoft.AspNetCore.Blazor.Build.Test/RuntimeCodeGenerationRazorIntegrationTest.cs +++ b/test/Microsoft.AspNetCore.Blazor.Build.Test/RuntimeCodeGenerationRazorIntegrationTest.cs @@ -33,7 +33,7 @@ namespace Test // Assert CompileToAssembly(generated); - Assert.Equal(@" + AssertSourceEquals(@" // #pragma warning disable 1591 namespace Test @@ -56,7 +56,7 @@ namespace Test } } #pragma warning restore 1591 -".Trim(), generated.Code.Trim(), ignoreLineEndingDifferences: true); +", generated); } [Fact] @@ -94,7 +94,7 @@ namespace Test // Assert CompileToAssembly(generated); - Assert.Equal(@" + AssertSourceEquals(@" // #pragma warning disable 1591 namespace Test @@ -121,7 +121,7 @@ namespace Test } } #pragma warning restore 1591 -".Trim(), generated.Code.Trim(), ignoreLineEndingDifferences: true); +", generated); } [Fact] @@ -148,7 +148,7 @@ namespace Test // Assert CompileToAssembly(generated); - Assert.Equal(@" + AssertSourceEquals(@" // #pragma warning disable 1591 namespace Test @@ -172,7 +172,7 @@ namespace Test } } #pragma warning restore 1591 -".Trim(), generated.Code.Trim(), ignoreLineEndingDifferences: true); +", generated); } [Fact] @@ -198,7 +198,7 @@ namespace Test // Assert CompileToAssembly(generated); - Assert.Equal(@" + AssertSourceEquals(@" // #pragma warning disable 1591 namespace Test @@ -223,7 +223,7 @@ namespace Test } } #pragma warning restore 1591 -".Trim(), generated.Code.Trim(), ignoreLineEndingDifferences: true); +", generated); } @@ -260,7 +260,7 @@ namespace Test // Assert CompileToAssembly(generated); - Assert.Equal(@" + AssertSourceEquals(@" // #pragma warning disable 1591 namespace Test @@ -277,7 +277,7 @@ namespace Test { base.BuildRenderTree(builder); builder.OpenComponent(0); - builder.AddAttribute(1, ""OnClick"", new Microsoft.AspNetCore.Blazor.UIEventHandler(eventArgs => Increment())); + builder.AddAttribute(1, ""OnClick"", new Microsoft.AspNetCore.Blazor.UIEventHandler((eventArgs) => Increment())); builder.CloseComponent(); builder.AddContent(2, ""\n\n""); } @@ -290,7 +290,7 @@ namespace Test } } #pragma warning restore 1591 -".Trim(), generated.Code.Trim(), ignoreLineEndingDifferences: true); +", generated); } [Fact] @@ -327,7 +327,7 @@ namespace Test // Assert CompileToAssembly(generated); - Assert.Equal(@" + AssertSourceEquals(@" // #pragma warning disable 1591 namespace Test @@ -358,7 +358,7 @@ namespace Test } } #pragma warning restore 1591 -".Trim(), generated.Code.Trim()); +", generated); } [Fact] @@ -388,7 +388,7 @@ namespace Test // Assert CompileToAssembly(generated); - Assert.Equal(@" + AssertSourceEquals(@" // #pragma warning disable 1591 namespace Test @@ -420,7 +420,7 @@ namespace Test } } #pragma warning restore 1591 -".Trim(), generated.Code.Trim()); +", generated); } } } diff --git a/test/testapps/BasicTestApp/BasicTestApp.csproj b/test/testapps/BasicTestApp/BasicTestApp.csproj index 6508ed5299..18e39f8f4c 100644 --- a/test/testapps/BasicTestApp/BasicTestApp.csproj +++ b/test/testapps/BasicTestApp/BasicTestApp.csproj @@ -1,4 +1,4 @@ - + netstandard2.0 diff --git a/test/testapps/BasicTestApp/PropertiesChangedHandlerParent.cshtml b/test/testapps/BasicTestApp/PropertiesChangedHandlerParent.cshtml index da7568ec21..ddc6ea50d9 100644 --- a/test/testapps/BasicTestApp/PropertiesChangedHandlerParent.cshtml +++ b/test/testapps/BasicTestApp/PropertiesChangedHandlerParent.cshtml @@ -1,4 +1,5 @@ - +@addTagHelper "*, BasicTestApp" + @functions { diff --git a/tooling/Microsoft.VisualStudio.LanguageServices.Blazor/Microsoft.VisualStudio.LanguageServices.Blazor.csproj b/tooling/Microsoft.VisualStudio.LanguageServices.Blazor/Microsoft.VisualStudio.LanguageServices.Blazor.csproj index 114aa4b41d..5b95022870 100644 --- a/tooling/Microsoft.VisualStudio.LanguageServices.Blazor/Microsoft.VisualStudio.LanguageServices.Blazor.csproj +++ b/tooling/Microsoft.VisualStudio.LanguageServices.Blazor/Microsoft.VisualStudio.LanguageServices.Blazor.csproj @@ -15,12 +15,6 @@ - - AngleSharpBuilder - False - TargetFramework=netcoreapp2.0 - false -