diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index df91890e3c..702432e8c6 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,151 +1,47 @@ # How to Contribute -- Please read the general [contributor's guide](https://github.com/Microsoft/ApplicationInsights-Home/blob/master/CONTRIBUTING.md) located in the ApplicationInsights-Home repository - If making a large change we request that you open an [issue](https://github.com/Microsoft/ApplicationInsights-dotnet/issues) first. - We follow the [Git Flow](http://nvie.com/posts/a-successful-git-branching-model/) approach to branching. - This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - ## Solutions -- Everything.sln - this will build all projects and unit tests. -- ProjectsForSigning.sln - this builds all shipping projects. -- IntegrationTests.sln - this builds all Net Core Integration tests. -- BASE\Microsoft.ApplicationInsights.sln - this builds the Base SDK and ServerTelemetryChannel. -- WEB\Microsoft.ApplicationInsights.Web.sln - this builds the ASP.Net projects. -- WEB\dirs.proj - this builds the functional tests which rely on docker. -- NETCORE\ApplicationInsights.AspNetCore.sln - this builds the .Net Core projects. -- LOGGING\Logging.sln - this builds the logging adapters. - +- **Everything.sln** - this will build all projects and all tests. +- **ProjectsForSigning.sln** - this builds all shipping projects. +- **BASE\Microsoft.ApplicationInsights.sln** - this builds the Base SDK and ServerTelemetryChannel. +- **WEB\Microsoft.ApplicationInsights.Web.sln** - this builds the ASP.NET projects. +- **NETCORE\ApplicationInsights.AspNetCore.sln** - this builds the .NET Core projects. +- **LOGGING\Logging.sln** - this builds the logging adapters. +## Pre-requisites: -## Build - +We depend on the [.NET CLI](https://docs.microsoft.com/dotnet/core/tools/) to build these projects/solutions. To successfully build the sources on your machine, make sure you've installed the following prerequisites: -- Visual Studio 2019 Community, Professional or Enterprise +- Visual Studio 2022 Community, Professional or Enterprise - .NET SDKs (https://dotnet.microsoft.com/download) - - .NET 4.8 - - .NET Core 3.1 SDK - - - -## Unit Tests - -Unit tests can be run in either the Visual Studio Test Exploror or via command line `dotnet test`. - -## Functional Tests -It is recommended to rely on unit tests to test functionalities wherever possible. For doing end-to-end validation, functional tests exists for all the modules. Unless doing significant changes, -it is not required to run func-tests locally. All the tests, including functional tests, are automatically run when a PR is submitted. - -These tests works like described below: - -Functional tests contain test apps which refers to the product dlls from the local build. Tests deploy the Test apps to IIS/Docker and http requests are fired against it to trigger various scenarios. -Tests apps are modified to send telemetry to a fake ingestion endpoint controlled by tests. Tests then validate the telemetry received by this endpoint. - -### Pre-requisites: - -To execute the functional tests, you need to install some additional prerequisites: - -- For **Web** and **PerformanceCollector** tests IIS Express should be installed. - -- For **Dependency Collector**, you need to install Docker for windows as these tests need several additional dependencies to be deployed like SQL Server and Azure Emulator. - Docker for Windows (https://docs.docker.com/docker-for-windows/install/). - After installation switch Docker engine to Windows Containers.(https://blogs.msdn.microsoft.com/webdev/2017/09/07/getting-started-with-windows-containers/) - And finally, make sure you can run ```docker run hello-world``` successfully to confirm that your machine is Docker ready. - -### Running functional tests: - -Before running the functional tests, the product code should be built following 'Build' instructions above. - -After building, open the respective solutions from locations given below, build the solution. Tests will appear in Visual Studio Test Explorer and can be run from there. - -The following solutions contains the functional tests for various features. - -"\Test\Web\FunctionalTests.sln" -- Functional tests using apps onboarded with the nuget Microsoft.ApplicationInsights.Web -Helper script to build product and run all tests in this solution - ```runFunctionalTestsWeb``` - -"..\bin\Debug\Test\Web\FunctionalTests" -- Binary location for Test and Test apps. - -"\Test\PerformanceCollector\FunctionalTests.sln" -- Functional tests using apps onboarded with the nuget Microsoft.ApplicationInsights.PerfCounterCollector -Helper script to build product and run all tests in this solution - ```runFunctionalTestsPerfCollectorAndQuickPulse``` - -"..\bin\Debug\Test\PerformanceCollector\FunctionalTests" -- Binary location for Test and Test apps. - -"\Test\E2ETests\DependencyCollectionTests.sln" -- Functional tests using apps onboarded with the nuget Microsoft.ApplicationInsights.DependencyCollector -Helper script to build product and run all tests in this solution - ```runFunctionalTestsDependencyCollector``` - -"..bin\Debug\Test\E2ETests" -- Binary location for Test and Test apps. - -### Special Notes regarding DependencyCollectionTests -1. All Docker images are downloaded from internet when ran for first time and this could take several minutes (depends on network speed as **around 20GB will be downloaded on first time on a machine**.). Tests may appear hung during this time. -2. If using Visual Studio Test Explorer to run tests, group the tests by namespace and run each namespaces separately to avoid test conflicts. ```runFunctionalTestsDependencyCollector``` does this automatically. - - -Edit the helper scripts to change between 'Release' and 'Debug' as per your build. -```runAllFunctionalTests.cmd``` script builds the product and runs all the above functional tests. - -Its is important to note that functional tests do not trigger product code build, so explicit build of product code is required before running functional tests. -A typical work flow would be make-produce-change followed by build-product followed by build-functest-solution and finally run-func-tests. (This helpers scripts does this.) - -### Known issues/workarounds with running functional tests. - -If any tests fail, please retry first to see if it helps. If not, try one of the known issues below. - -If these don't help, please open an [issue](https://github.com/Microsoft/ApplicationInsights-dotnet/issues) in Github describing the problem. - -- Tests fail with error like "It was not possible to find any compatible framework version The specified framework 'Microsoft.NETCore.App', version '1.0.4' was not found" - -Workaround: Install .NET Core SDK 1.1.7. - -- Web and PerformanceCollector fails with error related to 'Port conflicts' - its possible that some prior tests has not released ports. - -Workaround: Kill all running IISExpress processes and re-run tests. - -- All/many functional tests fail with error "Incorrect number of items. Expected: 1 Received: 0" when ran from Visual Studio IDE. -Look for warnings in Visual Studio output window which contains errors like 'Unable to copy dll file due to file being locked..' etc. - -Workarounds: -1. Close all instances of Visual Studio/cmd windows where scripts were run and retry. -2. One can use advanced tools like 'process explorer' to find out which process is locking files. Kill the process and retry. -3. Delete bin folder from repository root and rebuild. -4. Restart machine if none of the above helps. - -- Dependency Collector functional tests fail with messages like "Assert.AreEqual failed. Expected:<1>. Actual<0>." or "All apps are not healthy", then its likely that Docker installation has some issues. - -Workaround if you are trying first time - Make sure you can run ```docker run hello-world``` successfully to confirm that your machine is Docker ready. Also, the very first time DependencyCollector tests are run, all Docker images are downloaded from web and this could potentially take an hour or so. This is only one time per machine. -Alternate workaround if you have previously run the tests successfully at least once - execute the ```dockercleanup.ps1``` from repository root to cleanup any containers from prior runs. - -- All DependencyCollectionTests fail at initialization stage itself with error 'All apps are not healthy'. In the logs you'll find that Docker container has exited with some error codes. Eg: "Exited (2147943452) 53 seconds ago". - -If this error occurs execute ```dockercleanup.ps1``` from repository root, and re-run the tests. - -The test code intentionally does not clean up the containers it spun up. This is to enable fast re-runs of the tests. If the Test App code is changed, then Docker-Compose will detect it, and re-build the container. -If you want to do clean up all the containers created by the test, execute the ```dockercleanup.ps1``` from repository root. This is typically required if tests were aborted in the middle of a run for some reason. - -After retrying, it tests still fail, please clear the binaries folder and rebuild the product solution and test solution and run the tests again. + - .NET Framework 4.5.2 + - .NET Framework 4.6.2 + - .NET Framework 4.7.2 + - .NET Framework 4.8 + - .NET Core 3.1 + - .NET 5 + - .NET 6 +## Build +Solutions can be built in either Visual Studio or via .NET CLI `dotnet build` ([link](https://docs.microsoft.com/dotnet/core/tools/dotnet-build)). -## Debugging the functional tests. -It is important to note that since the test application is deployed as a separate process/container, debugging the tests itself will not help debug the application code. A debugger need to be attached -to the process hosting the Application, IISExpress or IIS, after deploying the application there. +See also our [GitHub Workflows](/.github/workflows) for examples of building these solutions. -The test apps refers to the Web SDK assemblies from your local build. After making the changes to product code, build locally (from Visual Studio or using ```buildDebug.cmd```). Then build and start the test application from its publish folder in either IISExpress or IIS, and attach debugger to it. Open the .cs file you want your breakpoint in and set it. Now triggering a request to the application will hit the breakpoint. -The exact request to be triggered depends on what you are doing. If investigating functional test failures locally, then the tests logs should contain the url it hit to trigger scenarios. +## Testing -Dependency Collector tests deploy the test apps, along with dependencies (Fake Ingestion, SQL etc) to Docker containers inside same Docker virtual network, so that apps can access the dependencies with their names. However, if the test apps are deployed to IIS or IISExpress, then they are outside the Docker virtual network of dependencies, and so it won't be able to access dependencies without using their IP Address. This is a Docker for windows limitation, and could be fixed in future. -Until then, the test app need to address the dependencies using their IP Address. Instead of manually finding IP Addresses and replacing containers names with IP Address, its easy to just run the following script. -This uses Docker commands to determine the IP Addresses, and replaces them in the necessary configs. -"\bin\Debug\Test\E2ETests\E2ETests\replacecontainernamewithip.ps1" +Unit tests can be run in either the Visual Studio Test Exploror or via .NET CLI `dotnet test` ([link](https://docs.microsoft.com/dotnet/core/tools/dotnet-test)). -Following pre-requisite is needed to deploy to IIS locally. -* IIS (Make sure Internet Information Services > World Wide Web Services > Application Development Features > ASP.NET 4.6 is enabled) +This repo also has some Integration Tests which cannot be run as a standalone DLL and must be run in the context of their project (*.csproj). +For more information please visit [Integration tests in ASP.NET Core](https://docs.microsoft.com/aspnet/core/test/integration-tests). +See also our [GitHub Workflows](/.github/workflows) for examples of running these tests. -## Debugging the SDK in general (How to test Application Insights from local build in any Test App) +## Debugging the SDK in general -* Build the project using ```buildDebug.cmd```. If you build using the solution (*.sln) all required depenencies will also be built. -* If the build was successful, you'll find that it generated NuGet packages in "\..\bin\Debug\NuGet". You can set this directory as a NuGet Repository to consume within your applications. -* Create a web application project to test the SDK on, and install the Microsoft.ApplicationInsights.Web NuGet package from the above directory. -* From your web application, open the .cs file you want your breakpoint in and set it -* Run your web application. Your breakpoints should be hit now when your web application triggers them. +The "Examples.sln" has some preconfigured applications. These projects can be customized and used to debug the SDK. diff --git a/.github/workflows/sanity.yml b/.github/workflows/sanity.yml index 729062babc..5651e48bcc 100644 --- a/.github/workflows/sanity.yml +++ b/.github/workflows/sanity.yml @@ -23,7 +23,6 @@ jobs: ./NETCORE/ApplicationInsights.AspNetCore.sln, ./Everything.sln, ./examples/Examples.sln, - ./IntegrationTests.sln, ./LOGGING/Logging.sln, ./BASE/Microsoft.ApplicationInsights.sln, ./WEB/Src/Microsoft.ApplicationInsights.Web.sln] diff --git a/IntegrationTests.Readme.md b/IntegrationTests.Readme.md deleted file mode 100644 index 3fe96f40d9..0000000000 --- a/IntegrationTests.Readme.md +++ /dev/null @@ -1,7 +0,0 @@ -# Net Core Integration Tests -Integration Tests are fundamentally different than Unit Tests. -Unlike Unit Tests, these cannot be run as a standalone DLL and must be run in the context of their project (*.csproj). - -For more information please visit [Integration tests in ASP.NET Core](https://docs.microsoft.com/aspnet/core/test/integration-tests) - -For the purpose of our build servers, please use this solution for all Integration Tests. \ No newline at end of file diff --git a/IntegrationTests.sln b/IntegrationTests.sln deleted file mode 100644 index 6f4bad74d3..0000000000 --- a/IntegrationTests.sln +++ /dev/null @@ -1,105 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29424.173 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntegrationTests.Tests", "NETCORE\test\IntegrationTests.Tests\IntegrationTests.Tests.csproj", "{A0FBD783-55E4-4B8F-993A-DFA3248EBFBA}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".Solution Items", ".Solution Items", "{81C43018-3373-4B85-9A00-5BBA2BC8C749}" - ProjectSection(SolutionItems) = preProject - IntegrationTests.Readme.md = IntegrationTests.Readme.md - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".DependentProjects", ".DependentProjects", "{4FB198B6-8FBE-4E36-86D5-F6A4E7C0ECE7}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ApplicationInsights.AspNetCore", "NETCORE\src\Microsoft.ApplicationInsights.AspNetCore\Microsoft.ApplicationInsights.AspNetCore.csproj", "{079E8118-28B3-4567-A384-EA337A0ED9FB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DependencyCollector", "WEB\Src\DependencyCollector\DependencyCollector\DependencyCollector.csproj", "{56C361C2-724C-4688-B4E1-F94C0681EC33}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventCounterCollector", "WEB\Src\EventCounterCollector\EventCounterCollector\EventCounterCollector.csproj", "{33478FB4-05FC-4CBD-A04D-17D0D6BA5B13}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ILogger", "LOGGING\src\ILogger\ILogger.csproj", "{DD8682E9-BDCF-459B-B1A6-97966C3E9B6A}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ApplicationInsights", "BASE\src\Microsoft.ApplicationInsights\Microsoft.ApplicationInsights.csproj", "{07F570E4-3A43-44D4-99A0-1D961B8E2A70}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Perf", "WEB\Src\PerformanceCollector\PerformanceCollector\Perf.csproj", "{A8D39E66-AF60-4F51-AEDC-2464A2D86DEA}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WindowsServer", "WEB\Src\WindowsServer\WindowsServer\WindowsServer.csproj", "{E524A10F-7B80-481B-9B7A-A478D4CA264C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TelemetryChannel", "BASE\src\ServerTelemetryChannel\TelemetryChannel.csproj", "{893DFA71-0F4F-4BBF-AE8F-72208BE237BA}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntegrationTests.WebApp", "NETCORE\test\IntegrationTests.WebApp\IntegrationTests.WebApp.csproj", "{B0899552-34A3-4BFB-8502-F966BF409FDA}" -EndProject -Global - GlobalSection(SharedMSBuildProjectFiles) = preSolution - NETCORE\src\Shared\Shared.projitems*{079e8118-28b3-4567-a384-ea337a0ed9fb}*SharedItemsImports = 5 - WEB\Src\Common\Common.projitems*{33478fb4-05fc-4cbd-a04d-17d0d6ba5b13}*SharedItemsImports = 5 - WEB\Src\Common\Common.projitems*{56c361c2-724c-4688-b4e1-f94c0681ec33}*SharedItemsImports = 5 - WEB\Src\Common\Common.projitems*{a8d39e66-af60-4f51-aedc-2464a2d86dea}*SharedItemsImports = 5 - WEB\Src\PerformanceCollector\Perf.Shared.NetFull\Perf.Shared.NetFull.projitems*{a8d39e66-af60-4f51-aedc-2464a2d86dea}*SharedItemsImports = 5 - LOGGING\src\CommonShared\CommonShared.projitems*{dd8682e9-bdcf-459b-b1a6-97966c3e9b6a}*SharedItemsImports = 5 - WEB\Src\Common\Common.projitems*{e524a10f-7b80-481b-9b7a-a478d4ca264c}*SharedItemsImports = 5 - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {A0FBD783-55E4-4B8F-993A-DFA3248EBFBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A0FBD783-55E4-4B8F-993A-DFA3248EBFBA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A0FBD783-55E4-4B8F-993A-DFA3248EBFBA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A0FBD783-55E4-4B8F-993A-DFA3248EBFBA}.Release|Any CPU.Build.0 = Release|Any CPU - {079E8118-28B3-4567-A384-EA337A0ED9FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {079E8118-28B3-4567-A384-EA337A0ED9FB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {079E8118-28B3-4567-A384-EA337A0ED9FB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {079E8118-28B3-4567-A384-EA337A0ED9FB}.Release|Any CPU.Build.0 = Release|Any CPU - {56C361C2-724C-4688-B4E1-F94C0681EC33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {56C361C2-724C-4688-B4E1-F94C0681EC33}.Debug|Any CPU.Build.0 = Debug|Any CPU - {56C361C2-724C-4688-B4E1-F94C0681EC33}.Release|Any CPU.ActiveCfg = Release|Any CPU - {56C361C2-724C-4688-B4E1-F94C0681EC33}.Release|Any CPU.Build.0 = Release|Any CPU - {33478FB4-05FC-4CBD-A04D-17D0D6BA5B13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {33478FB4-05FC-4CBD-A04D-17D0D6BA5B13}.Debug|Any CPU.Build.0 = Debug|Any CPU - {33478FB4-05FC-4CBD-A04D-17D0D6BA5B13}.Release|Any CPU.ActiveCfg = Release|Any CPU - {33478FB4-05FC-4CBD-A04D-17D0D6BA5B13}.Release|Any CPU.Build.0 = Release|Any CPU - {DD8682E9-BDCF-459B-B1A6-97966C3E9B6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DD8682E9-BDCF-459B-B1A6-97966C3E9B6A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DD8682E9-BDCF-459B-B1A6-97966C3E9B6A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DD8682E9-BDCF-459B-B1A6-97966C3E9B6A}.Release|Any CPU.Build.0 = Release|Any CPU - {07F570E4-3A43-44D4-99A0-1D961B8E2A70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {07F570E4-3A43-44D4-99A0-1D961B8E2A70}.Debug|Any CPU.Build.0 = Debug|Any CPU - {07F570E4-3A43-44D4-99A0-1D961B8E2A70}.Release|Any CPU.ActiveCfg = Release|Any CPU - {07F570E4-3A43-44D4-99A0-1D961B8E2A70}.Release|Any CPU.Build.0 = Release|Any CPU - {A8D39E66-AF60-4F51-AEDC-2464A2D86DEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A8D39E66-AF60-4F51-AEDC-2464A2D86DEA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A8D39E66-AF60-4F51-AEDC-2464A2D86DEA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A8D39E66-AF60-4F51-AEDC-2464A2D86DEA}.Release|Any CPU.Build.0 = Release|Any CPU - {E524A10F-7B80-481B-9B7A-A478D4CA264C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E524A10F-7B80-481B-9B7A-A478D4CA264C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E524A10F-7B80-481B-9B7A-A478D4CA264C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E524A10F-7B80-481B-9B7A-A478D4CA264C}.Release|Any CPU.Build.0 = Release|Any CPU - {893DFA71-0F4F-4BBF-AE8F-72208BE237BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {893DFA71-0F4F-4BBF-AE8F-72208BE237BA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {893DFA71-0F4F-4BBF-AE8F-72208BE237BA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {893DFA71-0F4F-4BBF-AE8F-72208BE237BA}.Release|Any CPU.Build.0 = Release|Any CPU - {B0899552-34A3-4BFB-8502-F966BF409FDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0899552-34A3-4BFB-8502-F966BF409FDA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0899552-34A3-4BFB-8502-F966BF409FDA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0899552-34A3-4BFB-8502-F966BF409FDA}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {079E8118-28B3-4567-A384-EA337A0ED9FB} = {4FB198B6-8FBE-4E36-86D5-F6A4E7C0ECE7} - {56C361C2-724C-4688-B4E1-F94C0681EC33} = {4FB198B6-8FBE-4E36-86D5-F6A4E7C0ECE7} - {33478FB4-05FC-4CBD-A04D-17D0D6BA5B13} = {4FB198B6-8FBE-4E36-86D5-F6A4E7C0ECE7} - {DD8682E9-BDCF-459B-B1A6-97966C3E9B6A} = {4FB198B6-8FBE-4E36-86D5-F6A4E7C0ECE7} - {07F570E4-3A43-44D4-99A0-1D961B8E2A70} = {4FB198B6-8FBE-4E36-86D5-F6A4E7C0ECE7} - {A8D39E66-AF60-4F51-AEDC-2464A2D86DEA} = {4FB198B6-8FBE-4E36-86D5-F6A4E7C0ECE7} - {E524A10F-7B80-481B-9B7A-A478D4CA264C} = {4FB198B6-8FBE-4E36-86D5-F6A4E7C0ECE7} - {893DFA71-0F4F-4BBF-AE8F-72208BE237BA} = {4FB198B6-8FBE-4E36-86D5-F6A4E7C0ECE7} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {0E0415AF-37CC-4999-8E5B-DD36F75BFD4D} - EndGlobalSection -EndGlobal diff --git a/WEB/dirs.proj b/WEB/dirs.proj deleted file mode 100644 index 77f972889f..0000000000 --- a/WEB/dirs.proj +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - $([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'EnlistmentRoot.marker')) - $(EnlistmentRoot)\.props - $(EnlistmentRoot)\.publicApi - - - - - - - - - - - - - - - - - - - - - - - -