diff --git a/.gitignore b/.gitignore index 418b3677b361edfff7354bdd566094f582e65a11..1a1ec2707c25e46a863588fdcde96e199d7216ab 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,10 @@ # output location artifacts/ -packages/ - /tests/scripts/current +.dotnet/ +.packages/ +./tools # Patches that may have been generated by scripts. # (These aren't generally useful to commit directly; if anything, they should be applied.) diff --git a/.vsts-pr.yaml b/.vsts-pr.yaml index c9f88e2296c32986359507fea4a6e03b9a59c235..b7d3862888ded9890d0ecc3f4d07c850bc43c177 100644 --- a/.vsts-pr.yaml +++ b/.vsts-pr.yaml @@ -1,4 +1,5 @@ jobs: + - job: Linux pool: vmImage: ubuntu-16.04 @@ -6,21 +7,42 @@ jobs: strategy: maxParallel: 3 matrix: - dotnet_sdk: - _command: make - _args: Configuration=release - release_fcs: - _command: ./fcs/build.sh - _args: Build + coreclr_release: + _configuration: Release + _testKind: testcoreclr + steps: + - script: ./eng/cibuild.sh --configuration $(_configuration) --$(_testKind) + - task: PublishBuildArtifacts@1 + displayName: Publish Build Logs + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_configuration)' + ArtifactName: 'Linux $(_configuration) $(_testKind) build log' + publishLocation: Container + continueOnError: true + condition: not(succeeded()) + - task: PublishBuildArtifacts@1 + displayName: Publish Test Results + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults' + ArtifactName: 'Linux $(_configuration) $(_testKind)' + publishLocation: Container + continueOnError: true + condition: not(succeeded()) + +- job: Linux_FCS + pool: + vmImage: ubuntu-16.04 + timeoutInMinutes: 90 steps: - - script: $(_command) $(_args) + - script: ./fcs/build.sh Build - task: PublishBuildArtifacts@1 + displayName: Publish Test Results inputs: PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults' - ArtifactName: 'Linux $(_command) $(_args)' + ArtifactName: 'Linux FCS test results' publishLocation: Container continueOnError: true - condition: failed() + condition: not(succeeded()) - job: MacOS pool: @@ -29,56 +51,92 @@ jobs: strategy: maxParallel: 3 matrix: - dotnet_sdk: - _command: make - _args: Configuration=release - release_fcs: - _command: ./fcs/build.sh - _args: Build + coreclr_release: + _configuration: Release + _testKind: testcoreclr steps: - - script: $(_command) $(_args) + - script: ./eng/cibuild.sh --configuration $(_configuration) --$(_testKind) - task: PublishBuildArtifacts@1 + displayName: Publish Build Logs + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_configuration)' + ArtifactName: 'MacOS $(_configuration) $(_testKind) build log' + publishLocation: Container + continueOnError: true + condition: not(succeeded()) + - task: PublishBuildArtifacts@1 + displayName: Publish Test Results inputs: PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults' - ArtifactName: 'MacOS $(_command) $(_args)' + ArtifactName: 'MacOS $(_configuration) $(_testKind)' publishLocation: Container continueOnError: true - condition: failed() + condition: not(succeeded()) + +- job: MacOS_FCS + pool: + vmImage: macOS-10.13 + timeoutInMinutes: 90 + steps: + - script: ./fcs/build.sh Build + - task: PublishBuildArtifacts@1 + displayName: Publish Test Results + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults' + ArtifactName: 'MacOS FCS test results' + publishLocation: Container + continueOnError: true + condition: not(succeeded()) - job: Windows pool: vmImage: vs2017-win2016 timeoutInMinutes: 120 strategy: - maxParallel: 7 + maxParallel: 4 matrix: - ci_part1: - _command: build.cmd - _args: release ci_part1 - ci_part2: - _command: build.cmd - _args: release ci_part2 - ci_part3: - _command: build.cmd - _args: release ci_part3 - ci_part4: - _command: build.cmd - _args: release ci_part4 - debug_default: - _command: build.cmd - _args: debug - net40_no_vs: - _command: build.cmd - _args: release net40 - release_fcs: - _command: fcs\build.cmd - _args: TestAndNuget + desktop_release: + _configuration: Release + _testKind: testDesktop + coreclr_release: + _configuration: Release + _testKind: testCoreclr + fsharpqa_release: + _configuration: Release + _testKind: testFSharpQA + vs_release: + _configuration: Release + _testKind: testVs + steps: + - script: eng\CIBuild.cmd -configuration $(_configuration) -$(_testKind) + - task: PublishBuildArtifacts@1 + displayName: Publish Build Logs + inputs: + PathtoPublish: '$(Build.SourcesDirectory)\artifacts\log\$(_configuration)' + ArtifactName: 'Windows $(_configuration) $(_testKind) build log' + publishLocation: Container + continueOnError: true + condition: not(succeeded()) + - task: PublishBuildArtifacts@1 + displayName: Publish Test Results + inputs: + PathtoPublish: '$(Build.SourcesDirectory)\artifacts\TestResults' + ArtifactName: 'Windows $(_configuration) $(_testKind) test results' + publishLocation: Container + continueOnError: true + condition: not(succeeded()) + +- job: Windows_FCS + pool: + vmImage: vs2017-win2016 + timeoutInMinutes: 120 steps: - - script: $(_command) $(_args) + - script: fcs\build.cmd TestAndNuget - task: PublishBuildArtifacts@1 + displayName: Publish Test Results inputs: PathtoPublish: '$(Build.SourcesDirectory)\artifacts\TestResults' - ArtifactName: 'Windows $(_command) $(_args)' + ArtifactName: 'Windows FCS test results' publishLocation: Container continueOnError: true - condition: failed() + condition: not(succeeded()) diff --git a/.vsts-signed.yaml b/.vsts-signed.yaml index 823ac20297af1e8bdd3e6461a351968b33653f6e..599237086b3f24ca5dcbb66b136327032d169cc8 100644 --- a/.vsts-signed.yaml +++ b/.vsts-signed.yaml @@ -1,9 +1,9 @@ variables: -- name: PB_PublishBlobFeedUrl - value: https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json - group: DotNet-Blob-Feed -- name: PB_PublishBlobFeedKey - value: $(dotnetfeed-storage-access-key-1) +- name: SignType + value: real +- name: VisualStudioDropName + value: Products/$(System.TeamProject)/$(Build.Repository.Name)/$(Build.SourceBranchName)/$(Build.BuildNumber) jobs: - job: Full_Signed @@ -13,124 +13,96 @@ jobs: variables: BuildConfiguration: 'Release' steps: + # Install Signing Plugin - task: ms-vseng.MicroBuildTasks.30666190-6959-11e5-9f96-f56098202fef.MicroBuildSigningPlugin@1 displayName: Install Signing Plugin inputs: signType: real - condition: and(succeeded(), in(variables['PB_SignType'], 'test', 'real')) - - # Install Swix Plugin - - task: ms-vseng.MicroBuildTasks.32f78468-e895-4f47-962c-58a699361df8.MicroBuildSwixPlugin@1 - displayName: Install Swix Plugin + esrpSigning: true + condition: and(succeeded(), ne(variables['SignType'], '')) - # Run build.cmd - - task: CmdLine@1 - displayName: Run build.cmd - inputs: - filename: build.cmd - arguments: microbuild + # Build + - script: eng\CIBuild.cmd + -configuration $(BuildConfiguration) + -testAll + /p:OfficialBuildId=$(BUILD.BUILDNUMBER) + /p:VisualStudioDropName=$(VisualStudioDropName) + /p:DotNetSignType=$(SignType) + /p:DotNetPublishToBlobFeed=true + /p:DotNetPublishBlobFeedKey=$(dotnetfeed-storage-access-key-1) + /p:DotNetPublishBlobFeedUrl=https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json + /p:PublishToSymbolServer=true + /p:DotNetSymbolServerTokenMsdl=$(microsoft-symbol-server-pat) + /p:DotNetSymbolServerTokenSymWeb=$(symweb-symbol-server-pat) + displayName: Build - # Publish nightly package to MyGet - - task: PowerShell@1 - displayName: Publish nightly package to MyGet + # Publish logs + - task: PublishBuildArtifacts@1 + displayName: Publish Logs inputs: - scriptName: 'setup\publish-assets.ps1' - arguments: '-binariesPath artifacts\bin -configuration $(BuildConfiguration) -branchName $(Build.SourceBranch) -apiKey $(FSharp.MyGetApiKey)' - condition: and(succeeded(), contains(variables['PB_PublishType'], 'myget')) + PathtoPublish: '$(Build.SourcesDirectory)\artifacts\log\$(BuildConfiguration)' + ArtifactName: 'Build Diagnostic Files' + publishLocation: Container + continueOnError: true + condition: succeededOrFailed() - # Package publish - - task: CmdLine@1 - displayName: Restore package publishing - inputs: - filename: '.nuget\NuGet.exe' - arguments: 'restore packages.config -PackagesDirectory packages -Source https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json' - condition: and(succeeded(), contains(variables['PB_PublishType'], 'blob')) - - task: MSBuild@1 - displayName: Publish packages to Azure Blob Storage - inputs: - solution: PublishToBlob.proj - msbuildArguments: '/t:Build /p:Configuration=$(BuildConfiguration) /p:ExpectedFeedUrl=$(PB_PublishBlobFeedUrl) /p:AccountKey=$(PB_PublishBlobFeedKey) /p:ManifestRepouri=$(Build.Repository.Uri) /p:ManifestBranch=$(Build.SourceBranch) /p:ManifestCommit=$(Build.SourceVersion) /p:ManifestBuildId=$(Build.BuildNumber) /bl:$(Build.SourcesDirectory)/artifacts/log/$(BuildConfiguration)/pub/publish.binlog' - condition: and(succeeded(), contains(variables['PB_PublishType'], 'blob')) + # Publish test results - task: PublishBuildArtifacts@1 - displayName: Publish publishing bin log + displayName: Publish Test Results inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(BuildConfiguration)/pub' - ArtifactName: 'Publish_bin_log' + PathtoPublish: '$(Build.SourcesDirectory)\artifacts\TestResults' + ArtifactName: 'Test Results' publishLocation: Container continueOnError: true - condition: and(succeeded(), contains(variables['PB_PublishType'], 'blob')) - - task: CopyFiles@2 - displayName: Gather Asset Manifests + condition: succeededOrFailed() + + # Upload VSTS Drop + - task: ms-vseng.MicroBuildTasks.4305a8de-ba66-4d8b-b2d1-0dc4ecbbf5e8.MicroBuildUploadVstsDropFolder@1 + displayName: Upload VSTS Drop inputs: - SourceFolder: '$(Build.SourcesDirectory)/artifacts/log/$(BuildConfiguration)/AssetManifest' - TargetFolder: '$(Build.StagingDirectory)/AssetManifests' - continueOnError: true - condition: and(succeeded(), contains(variables['PB_PublishType'], 'blob')) + DropName: $(VisualStudioDropName) + DropFolder: '$(Build.SourcesDirectory)\artifacts\VSSetup\$(BuildConfiguration)\Insertion' + condition: succeeded() + + # Publish an artifact that the RoslynInsertionTool is able to find by its name. - task: PublishBuildArtifacts@1 - displayName: Push Asset Manifests + displayName: Publish Artifact VSSetup inputs: - PathtoPublish: '$(Build.StagingDirectory)/AssetManifests' - PublishLocation: Container - ArtifactName: AssetManifests - continueOnError: true - condition: and(succeeded(), contains(variables['PB_PublishType'], 'blob')) + PathtoPublish: '$(Build.SourcesDirectory)\artifacts\VSSetup\$(BuildConfiguration)\Insertion' + ArtifactName: 'VSSetup' + condition: succeeded() - # Create static drop + # Archive NuGet packages to DevOps. - task: PublishBuildArtifacts@1 - displayName: Create static drop + displayName: Publish Artifact Packages inputs: - PathtoPublish: 'artifacts' - ArtifactName: '$(Build.BuildNumber)' - publishLocation: FilePath - TargetPath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)' - Parallel: true - ParallelCount: 64 - condition: and(succeeded(), contains(variables['PB_PublishType'], 'drop')) + PathtoPublish: '$(Build.SourcesDirectory)\artifacts\packages\$(BuildConfiguration)' + ArtifactName: 'Packages' + condition: succeeded() - # Publish symbols - - task: PublishSymbols@1 - displayName: Publish symbols + # Publish nightly package to MyGet + - task: PowerShell@1 + displayName: Publish nightly package to MyGet inputs: - SymbolsPath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)\$(Build.BuildNumber)\Symbols' - SearchPattern: '**\*.dll;**\*.exe;**\*.pdb' - SymbolsFolder: '$(Build.SourcesDirectory)\artifacts\SymStore' - TreatNotIndexedAsWarning: true - SymbolsProduct: '$(Build.DefinitionName)' - SymbolsVersion: '$(Build.BuildNumber)' - continueOnError: true - condition: and(succeeded(), contains(variables['PB_PublishType'], 'symbols')) + scriptName: 'setup\publish-assets.ps1' + arguments: '-binariesPath artifacts\bin -configuration $(BuildConfiguration) -branchName $(Build.SourceBranch) -apiKey $(FSharp.MyGetApiKey)' + condition: succeeded() - # Upload VSTS Drop - - task: ms-vseng.MicroBuildTasks.4305a8de-ba66-4d8b-b2d1-0dc4ecbbf5e8.MicroBuildUploadVstsDropFolder@1 - displayName: Upload VSTS Drop + # Package publish + - task: PublishBuildArtifacts@1 + displayName: Push Asset Manifests inputs: - DropFolder: '$(Build.SourcesDirectory)\artifacts\VSSetup\$(BuildConfiguration)\Insertion' - condition: and(succeeded(), contains(variables['PB_PublishType'], 'vsts')) + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(BuildConfiguration)/AssetManifest' + ArtifactName: AssetManifests + continueOnError: true + condition: succeeded() # Execute cleanup tasks - task: ms-vseng.MicroBuildTasks.521a94ea-9e68-468a-8167-6dcf361ea776.MicroBuildCleanup@1 displayName: Execute cleanup tasks condition: succeededOrFailed() - # Publish Artifact: MicroBuildOutputs - - task: PublishBuildArtifacts@1 - displayName: 'Publish Artifact: MicroBuildOutputs' - inputs: - PathtoPublish: '$(Build.StagingDirectory)\MicroBuild\Output' - ArtifactName: MicroBuildOutputs - publishLocation: Container - condition: and(succeeded(), contains(variables['PB_PublishType'], 'microbuild')) - - # Publish Symbols to Symweb - - task: ms-vscs-artifact.build-tasks.artifactSymbolTask-1.artifactSymbolTask@0 - displayName: Publish symbols to SymWeb - inputs: - symbolServiceURI: 'https://microsoft.artifacts.visualstudio.com/DefaultCollection' - sourcePath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)\$(Build.BuildNumber)\SymStore' - usePat: false - condition: and(succeeded(), contains(variables['PB_PublishType'], 'symweb')) - - template: /eng/common/templates/job/publish-build-assets.yml parameters: dependsOn: diff --git a/Build.cmd b/Build.cmd new file mode 100644 index 0000000000000000000000000000000000000000..ad55484933d3742c2cdf4308aa36def236ceb328 --- /dev/null +++ b/Build.cmd @@ -0,0 +1,2 @@ +@echo off +powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\build.ps1""" -build -restore %*" diff --git a/DEVGUIDE.md b/DEVGUIDE.md index e9c62109a964be8eeaedd35768aa09d80e4ff4f6..1c0ff3eabe3626c52cbb630f5d9e0926463f8dc9 100644 --- a/DEVGUIDE.md +++ b/DEVGUIDE.md @@ -34,97 +34,33 @@ Install 2. The command prompt must have Administrator rights (`Run as Administrator`). -On Windows you can build the F# compiler for .NET Framework as follows: +On Windows you can build the F# compiler and tools as follows: - build.cmd + Build.cmd -This is the same as +Desktop tests can be run with: - build.cmd net40 + Build.cmd -test -There are various qualifiers: +Additional options are available via: - build.cmd release -- build release (the default) - build.cmd debug -- build debug instead of release - - build.cmd net40 -- build .NET Framework compiler (the default) - build.cmd coreclr -- build .NET Core compiler - build.cmd vs -- build the Visual F# IDE Tools (see below) - build.cmd pcls -- build the PCL FSharp.Core libraries - build.cmd all -- build all - - build.cmd proto -- force the rebuild of the Proto bootstrap compiler in addition to other things - - build.cmd test -- build default targets, run suitable tests - build.cmd net40 test -- build net40, run suitable tests - build.cmd coreclr test -- build coreclr, run suitable tests - build.cmd vs test -- build Visual F# IDE Tools, run all tests (see below) - build.cmd all test -- build all, run all tests - - build.cmd test-smoke -- build, run smoke tests - build.cmd test-net40-fsharp -- build, run tests\fsharp suite for .NET Framework - build.cmd test-net40-fsharpqa -- build, run tests\fsharpqa suite for .NET Framework + Build.cmd /? After you build the first time you can open and use this solution: - .\FSharp.sln - -or just build it directly: - - msbuild FSharp.sln + .\VisualFSharp.sln If you are just developing the core compiler and library then building ``FSharp.sln`` will be enough. -### Developing the F# Compiler (Linux) - -For Linux/Mono, follow [these instructions](http://www.mono-project.com/docs/getting-started/install/linux/). Also you may need: - - sudo apt-get install mono-complete make git - -Then: - - make - -Then to replace your machine-wide installation: - - sudo make install - -Full testing is not yet enabled on Linux. - -### Developing the F# Compiler (macOS) +### Developing the F# Compiler (Linux/macOS) -Install XCode command line tools (or homebrew equivalents) and Mono or Visual Studio for Mac. +For Linux/Mac: -Then: + ./build.sh - make +Running tests: -Then to replace your machine-wide installation: - - sudo make install - -Full testing is not yet enabled on macOS. - -### [Optional] Specifying the install path (Linux or macOS) - -You can specify a custom installation path using the DESTDIR shell variable - - DESTDIR=/my/path/to/fsharp make install - -### Developing the F# Compiler (Linux or macOS - .NET Core) - -Install [the latest .NET SDK](https://www.microsoft.com/net/download/). Then use - - src/buildfromsource.sh - -Outputs are placed in - - BuildFromSource/Debug/... - BuildFromSource/Release/... - -This uses an installed .NET SDK 2.0 to build the various duplicated project - -Testing the .NET Core version of the F# compiler on macOS and Linux is TBD. + ./build.sh -test ### Developing the Visual F# IDE Tools (Windows Only) @@ -132,15 +68,26 @@ To build and test Visual F# IDE Tools, install these requirements: - Download [Visual Studio 2017](https://www.visualstudio.com/downloads/) - Launch the Visual Studio Installer - - Under the "Windows" workloads, select ".NET desktop development" - - Select "F# desktop language support" under the optional components - - Under the "Other Toolsets" workloads, select "Visual Studio extension development" + - Under the **"Windows"** workload, select **".NET desktop development"** + - Select the optional component **"F# desktop language support"** + - Under the **"Mobile & Gaming"** workload, select **"Mobile development with .NET"** + - Under the **"Other Toolsets"** workload, select **"Visual Studio extension development"** + - On the **"Individual Components"** tab, select **".NET Framework 4.7.2 SDK"** and **".NET Framework 4.7.2 targeting pack"** Steps to build: - build.cmd vs -- build the Visual F# IDE Tools in Release configuration (see below) - build.cmd vs debug -- build the Visual F# IDE Tools in Debug configuration (see below) - build.cmd vs test -- build Visual F# IDE Tools, run all tests (see below) + Build.cmd -- build all F# components under the default configuration (Debug) + Build.cmd -configuration Release -- build all F# components as Release + Build.cmd -testDesktop -- build and test all net46 tests + +All test options: + + -testDesktop -- test all net46 target frameworks + -testCoreClr -- test all netstandard and netcoreapp target frameworks + -testFSharpQA -- test all F# Cambridge tests + -testVs -- test all VS integration points + -testFcs -- test F# compiler service components + -testAll -- all of the above Use ``VisualFSharp.sln`` if you're building the Visual F# IDE Tools. diff --git a/FSharp.Directory.Build.props b/Directory.Build.props similarity index 100% rename from FSharp.Directory.Build.props rename to Directory.Build.props diff --git a/FSharp.Directory.Build.targets b/Directory.Build.targets similarity index 99% rename from FSharp.Directory.Build.targets rename to Directory.Build.targets index 84125426d58eb00fb02ce8dfe1101f3b09fca8fa..08da3ab09668fd3d6385edf9c78dcea6262dd8dc 100644 --- a/FSharp.Directory.Build.targets +++ b/Directory.Build.targets @@ -1,7 +1,5 @@ - - diff --git a/DotnetCLIToolsVersion.txt b/DotnetCLIToolsVersion.txt deleted file mode 100644 index 38295b0d98d7a61c7a4b4f172273498baa94651a..0000000000000000000000000000000000000000 --- a/DotnetCLIToolsVersion.txt +++ /dev/null @@ -1 +0,0 @@ -2.1.504 \ No newline at end of file diff --git a/FSharp.sln b/FSharp.sln index 923255dd35ba917aa9f1a0b20da9956dfdc44cf5..115e9a219c9520b6946d2a0055b5862caeaefe74 100644 --- a/FSharp.sln +++ b/FSharp.sln @@ -3,35 +3,28 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.26403.7 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Private", "src\fsharp\FSharp.Compiler.Private\FSharp.Compiler.Private.fsproj", "{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Compiler.Private", "src\fsharp\FSharp.Compiler.Private\FSharp.Compiler.Private.fsproj", "{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Server.Shared", "src\fsharp\FSharp.Compiler.Server.Shared\FSharp.Compiler.Server.Shared.fsproj", "{D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}" -EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Core", "src\fsharp\FSharp.Core\FSharp.Core.fsproj", "{DED3BBD7-53F4-428A-8C9F-27968E768605}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Core", "src\fsharp\FSharp.Core\FSharp.Core.fsproj", "{DED3BBD7-53F4-428A-8C9F-27968E768605}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{CFE3259A-2D30-4EB0-80D5-E8B5F3D01449}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Build", "src\fsharp\FSharp.Build\FSharp.Build.fsproj", "{702A7979-BCF9-4C41-853E-3ADFC9897890}" -EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fsc", "src\fsharp\Fsc\Fsc.fsproj", "{C94C257C-3C0A-4858-B5D8-D746498D1F08}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Build", "src\fsharp\FSharp.Build\FSharp.Build.fsproj", "{702A7979-BCF9-4C41-853E-3ADFC9897890}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Interactive.Settings", "src\fsharp\FSharp.Compiler.Interactive.Settings\FSharp.Compiler.Interactive.Settings.fsproj", "{649FA588-F02E-457C-9FCF-87E46407481E}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "fsc", "src\fsharp\fsc\fsc.fsproj", "{C94C257C-3C0A-4858-B5D8-D746498D1F08}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FsiAnyCPU", "src\fsharp\fsiAnyCpu\FsiAnyCPU.fsproj", "{8B3E283D-B5FE-4055-9D80-7E3A32F3967B}" - ProjectSection(ProjectDependencies) = postProject - {649FA588-F02E-457C-9FCF-87E46407481E} = {649FA588-F02E-457C-9FCF-87E46407481E} - EndProjectSection +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Compiler.Interactive.Settings", "src\fsharp\FSharp.Compiler.Interactive.Settings\FSharp.Compiler.Interactive.Settings.fsproj", "{649FA588-F02E-457C-9FCF-87E46407481E}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fsi", "src\fsharp\fsi\Fsi.fsproj", "{D0E98C0D-490B-4C61-9329-0862F6E87645}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "fsi", "src\fsharp\fsi\fsi.fsproj", "{D0E98C0D-490B-4C61-9329-0862F6E87645}" ProjectSection(ProjectDependencies) = postProject {649FA588-F02E-457C-9FCF-87E46407481E} = {649FA588-F02E-457C-9FCF-87E46407481E} EndProjectSection EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Tests.FSharpSuite", "tests\fsharp\FSharp.Tests.FSharpSuite.fsproj", "{C163E892-5BF7-4B59-AA99-B0E8079C67C4}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharpSuite.Tests", "tests\fsharp\FSharpSuite.Tests.fsproj", "{C163E892-5BF7-4B59-AA99-B0E8079C67C4}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.UnitTests", "tests\FSharp.Compiler.UnitTests\FSharp.Compiler.UnitTests.fsproj", "{A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Compiler.UnitTests", "tests\FSharp.Compiler.UnitTests\FSharp.Compiler.UnitTests.fsproj", "{A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Core.UnitTests", "tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj", "{88E2D422-6852-46E3-A740-83E391DC7973}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Core.UnitTests", "tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj", "{88E2D422-6852-46E3-A740-83E391DC7973}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Compiler", "Compiler", "{3881429D-A97A-49EB-B7AE-A82BA5FE9C77}" EndProject @@ -39,7 +32,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{B8DDA694 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{3058BC79-8E79-4645-B05D-48CC182FA8A6}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "fsharpqafiles", "tests\fsharpqa\fsharpqafiles.csproj", "{AAAAD274-696A-49EC-AAAA-F870BE91AAAA}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Build.UnitTests", "tests\FSharp.Build.UnitTests\FSharp.Build.UnitTests.fsproj", "{53C0DAAD-158C-4658-8EC7-D7341530239F}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -55,34 +48,22 @@ Global {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|Any CPU.Build.0 = Debug|Any CPU {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|x86.ActiveCfg = Debug|Any CPU {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|x86.Build.0 = Debug|Any CPU - {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Proto|Any CPU.ActiveCfg = Proto|Any CPU - {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Proto|Any CPU.Build.0 = Proto|Any CPU - {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Proto|x86.ActiveCfg = Proto|Any CPU - {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Proto|x86.Build.0 = Proto|Any CPU + {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Proto|Any CPU.Build.0 = Release|Any CPU + {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Proto|x86.ActiveCfg = Release|Any CPU + {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Proto|x86.Build.0 = Release|Any CPU {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|Any CPU.ActiveCfg = Release|Any CPU {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|Any CPU.Build.0 = Release|Any CPU {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|x86.ActiveCfg = Release|Any CPU {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|x86.Build.0 = Release|Any CPU - {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Debug|x86.ActiveCfg = Debug|Any CPU - {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Debug|x86.Build.0 = Debug|Any CPU - {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Proto|Any CPU.ActiveCfg = Proto|Any CPU - {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Proto|Any CPU.Build.0 = Proto|Any CPU - {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Proto|x86.ActiveCfg = Proto|Any CPU - {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Proto|x86.Build.0 = Proto|Any CPU - {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Release|Any CPU.Build.0 = Release|Any CPU - {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Release|x86.ActiveCfg = Release|Any CPU - {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Release|x86.Build.0 = Release|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Debug|Any CPU.Build.0 = Debug|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Debug|x86.ActiveCfg = Debug|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Debug|x86.Build.0 = Debug|Any CPU - {DED3BBD7-53F4-428A-8C9F-27968E768605}.Proto|Any CPU.ActiveCfg = Proto|Any CPU - {DED3BBD7-53F4-428A-8C9F-27968E768605}.Proto|Any CPU.Build.0 = Proto|Any CPU - {DED3BBD7-53F4-428A-8C9F-27968E768605}.Proto|x86.ActiveCfg = Proto|Any CPU - {DED3BBD7-53F4-428A-8C9F-27968E768605}.Proto|x86.Build.0 = Proto|Any CPU + {DED3BBD7-53F4-428A-8C9F-27968E768605}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {DED3BBD7-53F4-428A-8C9F-27968E768605}.Proto|Any CPU.Build.0 = Release|Any CPU + {DED3BBD7-53F4-428A-8C9F-27968E768605}.Proto|x86.ActiveCfg = Release|Any CPU + {DED3BBD7-53F4-428A-8C9F-27968E768605}.Proto|x86.Build.0 = Release|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Release|Any CPU.ActiveCfg = Release|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Release|Any CPU.Build.0 = Release|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Release|x86.ActiveCfg = Release|Any CPU @@ -91,10 +72,10 @@ Global {702A7979-BCF9-4C41-853E-3ADFC9897890}.Debug|Any CPU.Build.0 = Debug|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Debug|x86.ActiveCfg = Debug|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Debug|x86.Build.0 = Debug|Any CPU - {702A7979-BCF9-4C41-853E-3ADFC9897890}.Proto|Any CPU.ActiveCfg = Proto|Any CPU - {702A7979-BCF9-4C41-853E-3ADFC9897890}.Proto|Any CPU.Build.0 = Proto|Any CPU - {702A7979-BCF9-4C41-853E-3ADFC9897890}.Proto|x86.ActiveCfg = Proto|Any CPU - {702A7979-BCF9-4C41-853E-3ADFC9897890}.Proto|x86.Build.0 = Proto|Any CPU + {702A7979-BCF9-4C41-853E-3ADFC9897890}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {702A7979-BCF9-4C41-853E-3ADFC9897890}.Proto|Any CPU.Build.0 = Release|Any CPU + {702A7979-BCF9-4C41-853E-3ADFC9897890}.Proto|x86.ActiveCfg = Release|Any CPU + {702A7979-BCF9-4C41-853E-3ADFC9897890}.Proto|x86.Build.0 = Release|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Release|Any CPU.ActiveCfg = Release|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Release|Any CPU.Build.0 = Release|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Release|x86.ActiveCfg = Release|Any CPU @@ -103,10 +84,10 @@ Global {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Debug|Any CPU.Build.0 = Debug|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Debug|x86.ActiveCfg = Debug|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Debug|x86.Build.0 = Debug|Any CPU - {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Proto|Any CPU.ActiveCfg = Proto|Any CPU - {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Proto|Any CPU.Build.0 = Proto|Any CPU - {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Proto|x86.ActiveCfg = Proto|Any CPU - {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Proto|x86.Build.0 = Proto|Any CPU + {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Proto|Any CPU.Build.0 = Release|Any CPU + {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Proto|x86.ActiveCfg = Release|Any CPU + {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Proto|x86.Build.0 = Release|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Release|Any CPU.ActiveCfg = Release|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Release|Any CPU.Build.0 = Release|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Release|x86.ActiveCfg = Release|Any CPU @@ -115,34 +96,22 @@ Global {649FA588-F02E-457C-9FCF-87E46407481E}.Debug|Any CPU.Build.0 = Debug|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Debug|x86.ActiveCfg = Debug|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Debug|x86.Build.0 = Debug|Any CPU - {649FA588-F02E-457C-9FCF-87E46407481E}.Proto|Any CPU.ActiveCfg = Proto|Any CPU - {649FA588-F02E-457C-9FCF-87E46407481E}.Proto|Any CPU.Build.0 = Proto|Any CPU - {649FA588-F02E-457C-9FCF-87E46407481E}.Proto|x86.ActiveCfg = Proto|Any CPU - {649FA588-F02E-457C-9FCF-87E46407481E}.Proto|x86.Build.0 = Proto|Any CPU + {649FA588-F02E-457C-9FCF-87E46407481E}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {649FA588-F02E-457C-9FCF-87E46407481E}.Proto|Any CPU.Build.0 = Release|Any CPU + {649FA588-F02E-457C-9FCF-87E46407481E}.Proto|x86.ActiveCfg = Release|Any CPU + {649FA588-F02E-457C-9FCF-87E46407481E}.Proto|x86.Build.0 = Release|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Release|Any CPU.ActiveCfg = Release|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Release|Any CPU.Build.0 = Release|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Release|x86.ActiveCfg = Release|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Release|x86.Build.0 = Release|Any CPU - {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Debug|x86.ActiveCfg = Debug|Any CPU - {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Debug|x86.Build.0 = Debug|Any CPU - {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Proto|Any CPU.ActiveCfg = Proto|Any CPU - {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Proto|Any CPU.Build.0 = Proto|Any CPU - {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Proto|x86.ActiveCfg = Proto|Any CPU - {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Proto|x86.Build.0 = Proto|Any CPU - {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Release|Any CPU.Build.0 = Release|Any CPU - {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Release|x86.ActiveCfg = Release|Any CPU - {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Release|x86.Build.0 = Release|Any CPU {D0E98C0D-490B-4C61-9329-0862F6E87645}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D0E98C0D-490B-4C61-9329-0862F6E87645}.Debug|Any CPU.Build.0 = Debug|Any CPU {D0E98C0D-490B-4C61-9329-0862F6E87645}.Debug|x86.ActiveCfg = Debug|Any CPU {D0E98C0D-490B-4C61-9329-0862F6E87645}.Debug|x86.Build.0 = Debug|Any CPU - {D0E98C0D-490B-4C61-9329-0862F6E87645}.Proto|Any CPU.ActiveCfg = Proto|Any CPU - {D0E98C0D-490B-4C61-9329-0862F6E87645}.Proto|Any CPU.Build.0 = Proto|Any CPU - {D0E98C0D-490B-4C61-9329-0862F6E87645}.Proto|x86.ActiveCfg = Proto|Any CPU - {D0E98C0D-490B-4C61-9329-0862F6E87645}.Proto|x86.Build.0 = Proto|Any CPU + {D0E98C0D-490B-4C61-9329-0862F6E87645}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {D0E98C0D-490B-4C61-9329-0862F6E87645}.Proto|Any CPU.Build.0 = Release|Any CPU + {D0E98C0D-490B-4C61-9329-0862F6E87645}.Proto|x86.ActiveCfg = Release|Any CPU + {D0E98C0D-490B-4C61-9329-0862F6E87645}.Proto|x86.Build.0 = Release|Any CPU {D0E98C0D-490B-4C61-9329-0862F6E87645}.Release|Any CPU.ActiveCfg = Release|Any CPU {D0E98C0D-490B-4C61-9329-0862F6E87645}.Release|Any CPU.Build.0 = Release|Any CPU {D0E98C0D-490B-4C61-9329-0862F6E87645}.Release|x86.ActiveCfg = Release|Any CPU @@ -151,10 +120,10 @@ Global {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Debug|Any CPU.Build.0 = Debug|Any CPU {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Debug|x86.ActiveCfg = Debug|Any CPU {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Debug|x86.Build.0 = Debug|Any CPU - {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Proto|Any CPU.ActiveCfg = Proto|Any CPU - {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Proto|Any CPU.Build.0 = Proto|Any CPU - {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Proto|x86.ActiveCfg = Proto|Any CPU - {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Proto|x86.Build.0 = Proto|Any CPU + {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Proto|Any CPU.Build.0 = Release|Any CPU + {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Proto|x86.ActiveCfg = Release|Any CPU + {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Proto|x86.Build.0 = Release|Any CPU {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Release|Any CPU.ActiveCfg = Release|Any CPU {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Release|Any CPU.Build.0 = Release|Any CPU {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Release|x86.ActiveCfg = Release|Any CPU @@ -163,10 +132,10 @@ Global {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Debug|Any CPU.Build.0 = Debug|Any CPU {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Debug|x86.ActiveCfg = Debug|Any CPU {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Debug|x86.Build.0 = Debug|Any CPU - {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Proto|Any CPU.ActiveCfg = Proto|Any CPU - {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Proto|Any CPU.Build.0 = Proto|Any CPU - {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Proto|x86.ActiveCfg = Proto|Any CPU - {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Proto|x86.Build.0 = Proto|Any CPU + {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Proto|Any CPU.Build.0 = Release|Any CPU + {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Proto|x86.ActiveCfg = Release|Any CPU + {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Proto|x86.Build.0 = Release|Any CPU {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Release|Any CPU.ActiveCfg = Release|Any CPU {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Release|Any CPU.Build.0 = Release|Any CPU {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Release|x86.ActiveCfg = Release|Any CPU @@ -175,42 +144,41 @@ Global {88E2D422-6852-46E3-A740-83E391DC7973}.Debug|Any CPU.Build.0 = Debug|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Debug|x86.ActiveCfg = Debug|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Debug|x86.Build.0 = Debug|Any CPU - {88E2D422-6852-46E3-A740-83E391DC7973}.Proto|Any CPU.ActiveCfg = Proto|Any CPU - {88E2D422-6852-46E3-A740-83E391DC7973}.Proto|Any CPU.Build.0 = Proto|Any CPU - {88E2D422-6852-46E3-A740-83E391DC7973}.Proto|x86.ActiveCfg = Proto|Any CPU - {88E2D422-6852-46E3-A740-83E391DC7973}.Proto|x86.Build.0 = Proto|Any CPU + {88E2D422-6852-46E3-A740-83E391DC7973}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {88E2D422-6852-46E3-A740-83E391DC7973}.Proto|Any CPU.Build.0 = Release|Any CPU + {88E2D422-6852-46E3-A740-83E391DC7973}.Proto|x86.ActiveCfg = Release|Any CPU + {88E2D422-6852-46E3-A740-83E391DC7973}.Proto|x86.Build.0 = Release|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Release|Any CPU.ActiveCfg = Release|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Release|Any CPU.Build.0 = Release|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Release|x86.ActiveCfg = Release|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Release|x86.Build.0 = Release|Any CPU - {AAAAD274-696A-49EC-AAAA-F870BE91AAAA}.Debug|Any CPU.ActiveCfg = Debug|x86 - {AAAAD274-696A-49EC-AAAA-F870BE91AAAA}.Debug|x86.ActiveCfg = Debug|x86 - {AAAAD274-696A-49EC-AAAA-F870BE91AAAA}.Debug|x86.Build.0 = Debug|x86 - {AAAAD274-696A-49EC-AAAA-F870BE91AAAA}.Proto|Any CPU.ActiveCfg = Debug|x86 - {AAAAD274-696A-49EC-AAAA-F870BE91AAAA}.Proto|Any CPU.Build.0 = Debug|x86 - {AAAAD274-696A-49EC-AAAA-F870BE91AAAA}.Proto|x86.ActiveCfg = Debug|x86 - {AAAAD274-696A-49EC-AAAA-F870BE91AAAA}.Proto|x86.Build.0 = Debug|x86 - {AAAAD274-696A-49EC-AAAA-F870BE91AAAA}.Release|Any CPU.ActiveCfg = Debug|x86 - {AAAAD274-696A-49EC-AAAA-F870BE91AAAA}.Release|Any CPU.Build.0 = Debug|x86 - {AAAAD274-696A-49EC-AAAA-F870BE91AAAA}.Release|x86.ActiveCfg = Debug|x86 - {AAAAD274-696A-49EC-AAAA-F870BE91AAAA}.Release|x86.Build.0 = Debug|x86 + {53C0DAAD-158C-4658-8EC7-D7341530239F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53C0DAAD-158C-4658-8EC7-D7341530239F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53C0DAAD-158C-4658-8EC7-D7341530239F}.Debug|x86.ActiveCfg = Debug|Any CPU + {53C0DAAD-158C-4658-8EC7-D7341530239F}.Debug|x86.Build.0 = Debug|Any CPU + {53C0DAAD-158C-4658-8EC7-D7341530239F}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {53C0DAAD-158C-4658-8EC7-D7341530239F}.Proto|Any CPU.Build.0 = Release|Any CPU + {53C0DAAD-158C-4658-8EC7-D7341530239F}.Proto|x86.ActiveCfg = Release|Any CPU + {53C0DAAD-158C-4658-8EC7-D7341530239F}.Proto|x86.Build.0 = Release|Any CPU + {53C0DAAD-158C-4658-8EC7-D7341530239F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53C0DAAD-158C-4658-8EC7-D7341530239F}.Release|Any CPU.Build.0 = Release|Any CPU + {53C0DAAD-158C-4658-8EC7-D7341530239F}.Release|x86.ActiveCfg = Release|Any CPU + {53C0DAAD-158C-4658-8EC7-D7341530239F}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3} = {3881429D-A97A-49EB-B7AE-A82BA5FE9C77} - {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06} = {B8DDA694-7939-42E3-95E5-265C2217C142} {DED3BBD7-53F4-428A-8C9F-27968E768605} = {3058BC79-8E79-4645-B05D-48CC182FA8A6} {702A7979-BCF9-4C41-853E-3ADFC9897890} = {B8DDA694-7939-42E3-95E5-265C2217C142} {C94C257C-3C0A-4858-B5D8-D746498D1F08} = {3881429D-A97A-49EB-B7AE-A82BA5FE9C77} {649FA588-F02E-457C-9FCF-87E46407481E} = {B8DDA694-7939-42E3-95E5-265C2217C142} - {8B3E283D-B5FE-4055-9D80-7E3A32F3967B} = {B8DDA694-7939-42E3-95E5-265C2217C142} {D0E98C0D-490B-4C61-9329-0862F6E87645} = {B8DDA694-7939-42E3-95E5-265C2217C142} {C163E892-5BF7-4B59-AA99-B0E8079C67C4} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449} {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449} {88E2D422-6852-46E3-A740-83E391DC7973} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449} - {AAAAD274-696A-49EC-AAAA-F870BE91AAAA} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449} + {53C0DAAD-158C-4658-8EC7-D7341530239F} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BD5177C7-1380-40E7-94D2-7768E1A8B1B8} diff --git a/FSharpBuild.Directory.Build.props b/FSharpBuild.Directory.Build.props index fcbe5205d0bf04e85e13d161ea5dc1e79f7e49f8..c38700df06c3835aeb8ded50e7cc9ae39a15e8a7 100644 --- a/FSharpBuild.Directory.Build.props +++ b/FSharpBuild.Directory.Build.props @@ -1,25 +1,14 @@ - - - - + + - Debug - $(MSBuildThisFileDirectory) $(RepoRoot)src - $(RepoRoot)artifacts - $(ArtifactsDir)\toolset - $(ArtifactsDir)\bin - $(ArtifactsDir)\obj - $(ArtifactsDir)\packages - $(ArtifactsBinDir)\$(MSBuildProjectName) - $(ArtifactsObjDir)\$(MSBuildProjectName) $(ArtifactsDir)\SymStore - $(ArtifactsBinDir)\fsc\Proto\net46 - $(ArtifactsBinDir)/fsc/Proto/netcoreapp2.1 + $(ArtifactsDir)\Bootstrap + $(ArtifactsDir)/fsc/Proto/netcoreapp2.1 4.4.0 1182;0025;$(WarningsAsErrors) @@ -62,13 +51,8 @@ - false - true - $(FSharpSourcesRoot)\fsharp\msft.pubkey - true - true + Microsoft - $(FSharpSourcesRoot)\fsharp\test.snk false @@ -83,6 +67,8 @@ + $(NoWarn);FS2003 + true portable fs false diff --git a/FSharpBuild.Directory.Build.targets b/FSharpBuild.Directory.Build.targets index fa39d7498fd53cb2f5fd3c2598ad872e6346afe1..4c700d1ac224e63e90383ef19c5942f806ef058e 100644 --- a/FSharpBuild.Directory.Build.targets +++ b/FSharpBuild.Directory.Build.targets @@ -1,5 +1,7 @@ + + @@ -13,6 +15,7 @@ during `net46`, but for purposes of restore needs to be present. --> $(AssetTargetFallback);net462 + $(NoWarn);NU1605;NU1701 @@ -34,9 +37,4 @@ - - - - - diff --git a/FSharpTests.Directory.Build.props b/FSharpTests.Directory.Build.props index a0481c8b4a0a0135c9767a03a44c74b7fbc7aa7a..6c298fe44266479a2eb1738706727d9078135f57 100644 --- a/FSharpTests.Directory.Build.props +++ b/FSharpTests.Directory.Build.props @@ -19,12 +19,12 @@ true - $(MSBuildThisFileDirectory)artifacts\toolset\dotnet + $([System.IO.Path]::GetDirectoryName('$(DOTNET_HOST_PATH)')) dotnet.exe dotnet $(MSBuildThisFileDirectory)artifacts\bin\fsc\$(Configuration)\netcoreapp2.1\fsc.exe - $(MSBuildThisFileDirectory)artifacts\toolset\dotnet + $([System.IO.Path]::GetDirectoryName('$(DOTNET_HOST_PATH)')) dotnet.exe dotnet $(MSBuildThisFileDirectory)artifacts\bin\fsi\$(Configuration)\netcoreapp2.1\fsi.exe diff --git a/NuGet.Config b/NuGet.config similarity index 100% rename from NuGet.Config rename to NuGet.config diff --git a/PublishToBlob.proj b/PublishToBlob.proj deleted file mode 100644 index 21e8ec6eb6fa75202a51027472d1f680e8ddafdc..0000000000000000000000000000000000000000 --- a/PublishToBlob.proj +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - Microsoft.DotNet.Build.Tasks.Feed - - 2.2.0-beta.19066.1 - - - - - - - - - - - $(MSBuildThisFileDirectory)artifacts\log\$(Configuration)\ - AnyCPU - $(Platform) - $(ArtifactsLogDir)AssetManifest\$(OS)-$(PlatformName).xml - - - - - - - diff --git a/Restore.cmd b/Restore.cmd new file mode 100644 index 0000000000000000000000000000000000000000..1b84815f3ed0f984fb1e6016b92e3c0b1de5236f --- /dev/null +++ b/Restore.cmd @@ -0,0 +1,2 @@ +@echo off +powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\build.ps1""" -restore %*" diff --git a/Test.cmd b/Test.cmd new file mode 100644 index 0000000000000000000000000000000000000000..4a6eabc39e2b12e04916a563d43e31d572ae4dcb --- /dev/null +++ b/Test.cmd @@ -0,0 +1,2 @@ +@echo off +powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\build.ps1""" -test %*" diff --git a/VisualFSharp.sln b/VisualFSharp.sln index ea9bbe592d7b292ddc48b4bbcb9c3b7f75642540..2ac4e75bf61b3091f9690eeffc321d71c07e0259 100644 --- a/VisualFSharp.sln +++ b/VisualFSharp.sln @@ -3,98 +3,98 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.28010.2036 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.VS.FSI", "vsintegration\src\FSharp.VS.FSI\FSharp.VS.FSI.fsproj", "{991DCF75-C2EB-42B6-9A0D-AA1D2409D519}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{CFE3259A-2D30-4EB0-80D5-E8B5F3D01449}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Private", "src\fsharp\FSharp.Compiler.Private\FSharp.Compiler.Private.fsproj", "{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "VisualFSharp.UnitTests Support", "VisualFSharp.UnitTests Support", "{3F044931-FB83-4433-B934-AE66AB27B278}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VisualFSharpFull", "vsintegration\Vsix\VisualFSharpFull\VisualFSharpFull.csproj", "{59ADCE46-9740-4079-834D-9A03A3494EBC}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "VisualFSharp", "VisualFSharp", "{4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D}" + ProjectSection(SolutionItems) = preProject + vsintegration\readme.md = vsintegration\readme.md + EndProjectSection EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Server.Shared", "src\fsharp\FSharp.Compiler.Server.Shared\FSharp.Compiler.Server.Shared.fsproj", "{D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Compiler", "Compiler", "{3881429D-A97A-49EB-B7AE-A82BA5FE9C77}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Core", "src\fsharp\FSharp.Core\FSharp.Core.fsproj", "{DED3BBD7-53F4-428A-8C9F-27968E768605}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{F7876C9B-FB6A-4EFB-B058-D6967DB75FB2}" EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.LanguageService", "vsintegration\src\FSharp.LanguageService\FSharp.LanguageService.fsproj", "{EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{B8DDA694-7939-42E3-95E5-265C2217C142}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FSharp.LanguageService.Base", "vsintegration\src\FSharp.LanguageService.Base\FSharp.LanguageService.Base.csproj", "{1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{3058BC79-8E79-4645-B05D-48CC182FA8A6}" EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Editor", "vsintegration\src\FSharp.Editor\FSharp.Editor.fsproj", "{65E0E82A-EACE-4787-8994-888674C2FE87}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ItemTemplates", "ItemTemplates", "{F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProjectSystem.Base", "vsintegration\src\FSharp.ProjectSystem.Base\Project\ProjectSystem.Base.csproj", "{B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Utils", "Utils", "{D086C8C6-D00D-4C3B-9AB2-A4286C9F5922}" EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "FSharp.PropertiesPages", "vsintegration\src\FSharp.ProjectSystem.PropertyPages\FSharp.PropertiesPages.vbproj", "{FCFB214C-462E-42B3-91CA-FC557EFEE74F}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "FSharp.Compiler.Service.tests Support", "FSharp.Compiler.Service.tests Support", "{35636A82-401A-4C3A-B2AB-EB7DC5E9C268}" EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "ProjectSystem", "vsintegration\src\FSharp.ProjectSystem.FSharp\ProjectSystem.fsproj", "{6196B0F8-CAEA-4CF1-AF82-1B520F77FE44}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Legacy", "Legacy", "{CCAB6E50-34C6-42AF-A6B0-567C29FCD91B}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ProjectTemplates", "ProjectTemplates", "{C9B1D3F5-4971-4F04-9C26-37E3AC809AB4}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.VS.FSI", "vsintegration\src\FSharp.VS.FSI\FSharp.VS.FSI.fsproj", "{991DCF75-C2EB-42B6-9A0D-AA1D2409D519}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{CFE3259A-2D30-4EB0-80D5-E8B5F3D01449}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Compiler.Private", "src\fsharp\FSharp.Compiler.Private\FSharp.Compiler.Private.fsproj", "{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}" EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "VisualFSharp.Salsa", "vsintegration\tests\Salsa\VisualFSharp.Salsa.fsproj", "{FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VisualFSharpFull", "vsintegration\Vsix\VisualFSharpFull\VisualFSharpFull.csproj", "{59ADCE46-9740-4079-834D-9A03A3494EBC}" EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "VisualFSharp.UnitTests", "vsintegration\tests\UnitTests\VisualFSharp.UnitTests.fsproj", "{EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VisualFSharpTemplates", "vsintegration\Vsix\VisualFSharpTemplates\VisualFSharpTemplates.csproj", "{025CE01B-98F3-4C3C-B486-2C0BD038D011}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DefinitionLocationAttribute", "vsintegration\tests\MockTypeProviders\DefinitionLocationAttribute\DefinitionLocationAttribute.csproj", "{DA39AD38-4A58-47BF-9215-E49768295169}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Compiler.Server.Shared", "src\fsharp\FSharp.Compiler.Server.Shared\FSharp.Compiler.Server.Shared.fsproj", "{D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DefinitionLocationAttributeFileDoesnotExist", "vsintegration\tests\MockTypeProviders\DefinitionLocationAttributeFileDoesnotExist\DefinitionLocationAttributeFileDoesnotExist.csproj", "{8C2439BD-0E49-4929-A8B1-29CEE228191E}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Core", "src\fsharp\FSharp.Core\FSharp.Core.fsproj", "{DED3BBD7-53F4-428A-8C9F-27968E768605}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DefinitionLocationAttributeLineDoesnotExist", "vsintegration\tests\MockTypeProviders\DefinitionLocationAttributeLineDoesnotExist\DefinitionLocationAttributeLineDoesnotExist.csproj", "{F47196DC-186D-4055-BAF2-658282A12F33}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.LanguageService", "vsintegration\src\FSharp.LanguageService\FSharp.LanguageService.fsproj", "{EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DefinitionLocationAttributeWithSpaceInTheType", "vsintegration\tests\MockTypeProviders\DefinitionLocationAttributeWithSpaceInTheType\DefinitionLocationAttributeWithSpaceInTheType.csproj", "{D4C88934-5893-467E-A55C-A11ECD6479FE}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FSharp.LanguageService.Base", "vsintegration\src\FSharp.LanguageService.Base\FSharp.LanguageService.Base.csproj", "{1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "DummyProviderForLanguageServiceTesting", "vsintegration\tests\MockTypeProviders\DummyProviderForLanguageServiceTesting\DummyProviderForLanguageServiceTesting.fsproj", "{6AFF752D-E991-4A08-9ED2-5BF46B0E0F8B}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Editor", "vsintegration\src\FSharp.Editor\FSharp.Editor.fsproj", "{65E0E82A-EACE-4787-8994-888674C2FE87}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EditorHideMethodsAttribute", "vsintegration\tests\MockTypeProviders\EditorHideMethodsAttribute\EditorHideMethodsAttribute.csproj", "{0B9CDEAF-EE8F-45E0-A4E0-34A8ED6DD09E}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProjectSystem.Base", "vsintegration\src\FSharp.ProjectSystem.Base\Project\ProjectSystem.Base.csproj", "{B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "EmptyAssembly", "vsintegration\tests\MockTypeProviders\EmptyAssembly\EmptyAssembly.fsproj", "{004982C6-93EA-4E70-B4F0-BE7D7219926A}" +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "FSharp.PropertiesPages", "vsintegration\src\FSharp.ProjectSystem.PropertyPages\FSharp.PropertiesPages.vbproj", "{FCFB214C-462E-42B3-91CA-FC557EFEE74F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlDocAttributeWithAdequateComment", "vsintegration\tests\MockTypeProviders\XmlDocAttributeWithAdequateComment\XmlDocAttributeWithAdequateComment.csproj", "{243A81AC-A954-4601-833A-60EEEFB00FCD}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "ProjectSystem", "vsintegration\src\FSharp.ProjectSystem.FSharp\ProjectSystem.fsproj", "{6196B0F8-CAEA-4CF1-AF82-1B520F77FE44}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlDocAttributeWithEmptyComment", "vsintegration\tests\MockTypeProviders\XmlDocAttributeWithEmptyComment\XmlDocAttributeWithEmptyComment.csproj", "{B4595EB6-053A-400E-AA1B-7727F1BC900F}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "VisualFSharp.Salsa", "vsintegration\tests\Salsa\VisualFSharp.Salsa.fsproj", "{FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlDocAttributeWithLocalizedComment", "vsintegration\tests\MockTypeProviders\XmlDocAttributeWithLocalizedComment\XmlDocAttributeWithLocalizedComment.csproj", "{A559D7E8-7EFD-473A-B618-A10B41AB523B}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "VisualFSharp.UnitTests", "vsintegration\tests\UnitTests\VisualFSharp.UnitTests.fsproj", "{EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlDocAttributeWithLongComment", "vsintegration\tests\MockTypeProviders\XmlDocAttributeWithLongComment\XmlDocAttributeWithLongComment.csproj", "{AC85EE6D-033C-45F9-B8BA-884BC22EC6D9}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DefinitionLocationAttribute", "vsintegration\tests\MockTypeProviders\DefinitionLocationAttribute\DefinitionLocationAttribute.csproj", "{DA39AD38-4A58-47BF-9215-E49768295169}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlDocAttributeWithNullComment", "vsintegration\tests\MockTypeProviders\XmlDocAttributeWithNullComment\XmlDocAttributeWithNullComment.csproj", "{956BBE41-ABD1-4DBA-9F3B-BA1C9821C98C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DefinitionLocationAttributeFileDoesnotExist", "vsintegration\tests\MockTypeProviders\DefinitionLocationAttributeFileDoesnotExist\DefinitionLocationAttributeFileDoesnotExist.csproj", "{8C2439BD-0E49-4929-A8B1-29CEE228191E}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Build", "src\fsharp\FSharp.Build\FSharp.Build.fsproj", "{702A7979-BCF9-4C41-853E-3ADFC9897890}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DefinitionLocationAttributeLineDoesnotExist", "vsintegration\tests\MockTypeProviders\DefinitionLocationAttributeLineDoesnotExist\DefinitionLocationAttributeLineDoesnotExist.csproj", "{F47196DC-186D-4055-BAF2-658282A12F33}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fsc", "src\fsharp\Fsc\Fsc.fsproj", "{C94C257C-3C0A-4858-B5D8-D746498D1F08}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DefinitionLocationAttributeWithSpaceInTheType", "vsintegration\tests\MockTypeProviders\DefinitionLocationAttributeWithSpaceInTheType\DefinitionLocationAttributeWithSpaceInTheType.csproj", "{D4C88934-5893-467E-A55C-A11ECD6479FE}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Interactive.Settings", "src\fsharp\FSharp.Compiler.Interactive.Settings\FSharp.Compiler.Interactive.Settings.fsproj", "{649FA588-F02E-457C-9FCF-87E46407481E}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "DummyProviderForLanguageServiceTesting", "vsintegration\tests\MockTypeProviders\DummyProviderForLanguageServiceTesting\DummyProviderForLanguageServiceTesting.fsproj", "{6AFF752D-E991-4A08-9ED2-5BF46B0E0F8B}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FsiAnyCPU", "src\fsharp\fsiAnyCpu\FsiAnyCPU.fsproj", "{8B3E283D-B5FE-4055-9D80-7E3A32F3967B}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EditorHideMethodsAttribute", "vsintegration\tests\MockTypeProviders\EditorHideMethodsAttribute\EditorHideMethodsAttribute.csproj", "{0B9CDEAF-EE8F-45E0-A4E0-34A8ED6DD09E}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fsi", "src\fsharp\fsi\Fsi.fsproj", "{D0E98C0D-490B-4C61-9329-0862F6E87645}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "EmptyAssembly", "vsintegration\tests\MockTypeProviders\EmptyAssembly\EmptyAssembly.fsproj", "{004982C6-93EA-4E70-B4F0-BE7D7219926A}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Tests.FSharpSuite", "tests\fsharp\FSharp.Tests.FSharpSuite.fsproj", "{C163E892-5BF7-4B59-AA99-B0E8079C67C4}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XmlDocAttributeWithAdequateComment", "vsintegration\tests\MockTypeProviders\XmlDocAttributeWithAdequateComment\XmlDocAttributeWithAdequateComment.csproj", "{243A81AC-A954-4601-833A-60EEEFB00FCD}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "VisualFSharp.UnitTests Support", "VisualFSharp.UnitTests Support", "{3F044931-FB83-4433-B934-AE66AB27B278}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XmlDocAttributeWithEmptyComment", "vsintegration\tests\MockTypeProviders\XmlDocAttributeWithEmptyComment\XmlDocAttributeWithEmptyComment.csproj", "{B4595EB6-053A-400E-AA1B-7727F1BC900F}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.UnitTests", "tests\FSharp.Compiler.UnitTests\FSharp.Compiler.UnitTests.fsproj", "{A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XmlDocAttributeWithLocalizedComment", "vsintegration\tests\MockTypeProviders\XmlDocAttributeWithLocalizedComment\XmlDocAttributeWithLocalizedComment.csproj", "{A559D7E8-7EFD-473A-B618-A10B41AB523B}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Core.UnitTests", "tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj", "{88E2D422-6852-46E3-A740-83E391DC7973}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XmlDocAttributeWithLongComment", "vsintegration\tests\MockTypeProviders\XmlDocAttributeWithLongComment\XmlDocAttributeWithLongComment.csproj", "{AC85EE6D-033C-45F9-B8BA-884BC22EC6D9}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "VisualFSharp", "VisualFSharp", "{4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D}" - ProjectSection(SolutionItems) = preProject - vsintegration\readme.md = vsintegration\readme.md - EndProjectSection +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XmlDocAttributeWithNullComment", "vsintegration\tests\MockTypeProviders\XmlDocAttributeWithNullComment\XmlDocAttributeWithNullComment.csproj", "{956BBE41-ABD1-4DBA-9F3B-BA1C9821C98C}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Compiler", "Compiler", "{3881429D-A97A-49EB-B7AE-A82BA5FE9C77}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Build", "src\fsharp\FSharp.Build\FSharp.Build.fsproj", "{702A7979-BCF9-4C41-853E-3ADFC9897890}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{F7876C9B-FB6A-4EFB-B058-D6967DB75FB2}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "fsc", "src\fsharp\fsc\fsc.fsproj", "{C94C257C-3C0A-4858-B5D8-D746498D1F08}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{B8DDA694-7939-42E3-95E5-265C2217C142}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Compiler.Interactive.Settings", "src\fsharp\FSharp.Compiler.Interactive.Settings\FSharp.Compiler.Interactive.Settings.fsproj", "{649FA588-F02E-457C-9FCF-87E46407481E}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{3058BC79-8E79-4645-B05D-48CC182FA8A6}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "fsiAnyCpu", "src\fsharp\fsiAnyCpu\fsiAnyCpu.fsproj", "{8B3E283D-B5FE-4055-9D80-7E3A32F3967B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleProject", "vsintegration\ProjectTemplates\ConsoleProject\ConsoleProject.csproj", "{604F0DAA-2D33-48DD-B162-EDF0B672803D}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "fsi", "src\fsharp\fsi\fsi.fsproj", "{D0E98C0D-490B-4C61-9329-0862F6E87645}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibraryProject", "vsintegration\ProjectTemplates\LibraryProject\LibraryProject.csproj", "{01678CDA-A11F-4DEE-9344-2EDF91CF1AE7}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharpSuite.Tests", "tests\fsharp\FSharpSuite.Tests.fsproj", "{C163E892-5BF7-4B59-AA99-B0E8079C67C4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TutorialProject", "vsintegration\ProjectTemplates\TutorialProject\TutorialProject.csproj", "{2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Compiler.UnitTests", "tests\FSharp.Compiler.UnitTests\FSharp.Compiler.UnitTests.fsproj", "{A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ItemTemplates", "ItemTemplates", "{F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Core.UnitTests", "tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj", "{88E2D422-6852-46E3-A740-83E391DC7973}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AppConfig", "vsintegration\ItemTemplates\AppConfig\AppConfig.csproj", "{6BA13AA4-C25F-480F-856B-8E8000299A72}" EndProject @@ -108,38 +108,56 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TextFile", "vsintegration\I EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XMLFile", "vsintegration\ItemTemplates\XMLFile\XMLFile.csproj", "{1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "HostedCompilerServer", "tests\fsharpqa\testenv\src\HostedCompilerServer\HostedCompilerServer.fsproj", "{4239EFEA-E746-446A-BF7A-51FCBAB13946}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "HostedCompilerServer", "tests\fsharpqa\testenv\src\HostedCompilerServer\HostedCompilerServer.fsproj", "{4239EFEA-E746-446A-BF7A-51FCBAB13946}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "ILComparer", "tests\fsharpqa\testenv\src\ILComparer\ILComparer.fsproj", "{2E60864A-E3FF-4BCC-810F-DC7C34E6B236}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Utils", "Utils", "{D086C8C6-D00D-4C3B-9AB2-A4286C9F5922}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "ILComparer", "tests\fsharpqa\testenv\src\ILComparer\ILComparer.fsproj", "{2E60864A-E3FF-4BCC-810F-DC7C34E6B236}" EndProject Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "LanguageServiceProfiling", "vsintegration\Utils\LanguageServiceProfiling\LanguageServiceProfiling.fsproj", "{E7FA3A71-51AF-4FCA-9C2F-7C853E515903}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FSharp.UIResources", "vsintegration\src\FSharp.UIResources\FSharp.UIResources.csproj", "{C4586A06-1402-48BC-8E35-A1B8642F895B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharp_Analysis", "tests\service\data\CSharp_Analysis\CSharp_Analysis.csproj", "{887630A3-4B1D-40EA-B8B3-2D842E9C40DB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharp_Analysis", "tests\service\data\CSharp_Analysis\CSharp_Analysis.csproj", "{887630A3-4B1D-40EA-B8B3-2D842E9C40DB}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "FSharp.Compiler.Service.tests Support", "FSharp.Compiler.Service.tests Support", "{35636A82-401A-4C3A-B2AB-EB7DC5E9C268}" -EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "TestTP", "tests\service\data\TestTP\TestTP.fsproj", "{FF76BD3C-5E0A-4752-B6C3-044F6E15719B}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "TestTP", "tests\service\data\TestTP\TestTP.fsproj", "{FF76BD3C-5E0A-4752-B6C3-044F6E15719B}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceFile", "vsintegration\ItemTemplates\ResourceFile\ResourceFile.csproj", "{0385564F-07B4-4264-AB8A-17C393E9140C}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Build.UnitTests", "tests\FSharp.Build.UnitTests\FSharp.Build.UnitTests.fsproj", "{400FAB03-786E-40CC-85A8-04B0C2869B14}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Build.UnitTests", "tests\FSharp.Build.UnitTests\FSharp.Build.UnitTests.fsproj", "{400FAB03-786E-40CC-85A8-04B0C2869B14}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PEVerify", "tests\fsharpqa\testenv\src\PEVerify\PEVerify.csproj", "{B0689A4E-07D8-494D-A0C8-791CB1D74E54}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FSharp.PatternMatcher", "vsintegration\src\FSharp.PatternMatcher\FSharp.PatternMatcher.csproj", "{18227628-DF90-4C47-AF3D-CC72D2EDD986}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Legacy", "Legacy", "{CCAB6E50-34C6-42AF-A6B0-567C29FCD91B}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "GetTypesVS.UnitTests", "vsintegration\tests\GetTypesVS.UnitTests\GetTypesVS.UnitTests.fsproj", "{6D93CEBD-4540-4D96-A153-B440A661FD09}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Setup", "Setup", "{6235B3AF-774D-4EA1-8F37-789E767F6368}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.FSharp.Compiler.MSBuild", "setup\Swix\Microsoft.FSharp.Compiler.MSBuild\Microsoft.FSharp.Compiler.MSBuild.csproj", "{4CBEE353-EB7F-4A47-988B-0070AEB4EE7A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.FSharp.Dependencies", "setup\Swix\Microsoft.FSharp.Dependencies\Microsoft.FSharp.Dependencies.csproj", "{6BCFED7A-3F67-4180-B307-C7D69D191D8C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.FSharp.IDE", "setup\Swix\Microsoft.FSharp.IDE\Microsoft.FSharp.IDE.csproj", "{E93E7D28-1C6B-4E04-BE83-68428CF7E039}" EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "GetTypesVSUnitTests", "vsintegration\tests\GetTypesVSUnitTests\GetTypesVSUnitTests.fsproj", "{6D93CEBD-4540-4D96-A153-B440A661FD09}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.FSharp.SDK", "setup\Swix\Microsoft.FSharp.SDK\Microsoft.FSharp.SDK.csproj", "{9482211E-23D0-4BD0-9893-E4AA5559F67A}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NuGet", "NuGet", "{647810D0-5307-448F-99A2-E83917010DAE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.FSharp.Compiler", "src\fsharp\FSharp.Compiler.nuget\Microsoft.FSharp.Compiler.csproj", "{04C59F6E-1C76-4F6A-AC21-2EA7F296A1B8}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ProjectTemplates", "ProjectTemplates", "{BED74F9E-A0D2-48E2-9EE7-449832100487}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleProject", "vsintegration\ProjectTemplates\ConsoleProject\ConsoleProject.csproj", "{1D8D778E-8D6B-4A8C-88A6-BE578988FBE8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibraryProject", "vsintegration\ProjectTemplates\LibraryProject\LibraryProject.csproj", "{C32806E0-71C2-40E4-AEC4-517F73F6A18A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TutorialProject", "vsintegration\ProjectTemplates\TutorialProject\TutorialProject.csproj", "{7B345E51-F2C0-4D4B-B0E0-05432EC9D5E1}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Debug|x86 = Debug|x86 + Proto|Any CPU = Proto|Any CPU + Proto|x86 = Proto|x86 Release|Any CPU = Release|Any CPU Release|x86 = Release|x86 EndGlobalSection @@ -148,6 +166,10 @@ Global {991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Debug|Any CPU.Build.0 = Debug|Any CPU {991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Debug|x86.ActiveCfg = Debug|Any CPU {991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Debug|x86.Build.0 = Debug|Any CPU + {991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Proto|Any CPU.Build.0 = Release|Any CPU + {991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Proto|x86.ActiveCfg = Release|Any CPU + {991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Proto|x86.Build.0 = Release|Any CPU {991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Release|Any CPU.ActiveCfg = Release|Any CPU {991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Release|Any CPU.Build.0 = Release|Any CPU {991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Release|x86.ActiveCfg = Release|Any CPU @@ -156,6 +178,10 @@ Global {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|Any CPU.Build.0 = Debug|Any CPU {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|x86.ActiveCfg = Debug|Any CPU {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|x86.Build.0 = Debug|Any CPU + {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Proto|Any CPU.Build.0 = Release|Any CPU + {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Proto|x86.ActiveCfg = Release|Any CPU + {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Proto|x86.Build.0 = Release|Any CPU {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|Any CPU.ActiveCfg = Release|Any CPU {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|Any CPU.Build.0 = Release|Any CPU {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|x86.ActiveCfg = Release|Any CPU @@ -164,6 +190,10 @@ Global {59ADCE46-9740-4079-834D-9A03A3494EBC}.Debug|Any CPU.Build.0 = Debug|Any CPU {59ADCE46-9740-4079-834D-9A03A3494EBC}.Debug|x86.ActiveCfg = Debug|Any CPU {59ADCE46-9740-4079-834D-9A03A3494EBC}.Debug|x86.Build.0 = Debug|Any CPU + {59ADCE46-9740-4079-834D-9A03A3494EBC}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {59ADCE46-9740-4079-834D-9A03A3494EBC}.Proto|Any CPU.Build.0 = Release|Any CPU + {59ADCE46-9740-4079-834D-9A03A3494EBC}.Proto|x86.ActiveCfg = Release|Any CPU + {59ADCE46-9740-4079-834D-9A03A3494EBC}.Proto|x86.Build.0 = Release|Any CPU {59ADCE46-9740-4079-834D-9A03A3494EBC}.Release|Any CPU.ActiveCfg = Release|Any CPU {59ADCE46-9740-4079-834D-9A03A3494EBC}.Release|Any CPU.Build.0 = Release|Any CPU {59ADCE46-9740-4079-834D-9A03A3494EBC}.Release|x86.ActiveCfg = Release|Any CPU @@ -172,6 +202,10 @@ Global {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Debug|Any CPU.Build.0 = Debug|Any CPU {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Debug|x86.ActiveCfg = Debug|Any CPU {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Debug|x86.Build.0 = Debug|Any CPU + {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Proto|Any CPU.Build.0 = Release|Any CPU + {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Proto|x86.ActiveCfg = Release|Any CPU + {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Proto|x86.Build.0 = Release|Any CPU {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Release|Any CPU.ActiveCfg = Release|Any CPU {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Release|Any CPU.Build.0 = Release|Any CPU {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Release|x86.ActiveCfg = Release|Any CPU @@ -180,6 +214,10 @@ Global {DED3BBD7-53F4-428A-8C9F-27968E768605}.Debug|Any CPU.Build.0 = Debug|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Debug|x86.ActiveCfg = Debug|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Debug|x86.Build.0 = Debug|Any CPU + {DED3BBD7-53F4-428A-8C9F-27968E768605}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {DED3BBD7-53F4-428A-8C9F-27968E768605}.Proto|Any CPU.Build.0 = Release|Any CPU + {DED3BBD7-53F4-428A-8C9F-27968E768605}.Proto|x86.ActiveCfg = Release|Any CPU + {DED3BBD7-53F4-428A-8C9F-27968E768605}.Proto|x86.Build.0 = Release|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Release|Any CPU.ActiveCfg = Release|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Release|Any CPU.Build.0 = Release|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Release|x86.ActiveCfg = Release|Any CPU @@ -188,6 +226,10 @@ Global {EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F}.Debug|Any CPU.Build.0 = Debug|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F}.Debug|x86.ActiveCfg = Debug|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F}.Debug|x86.Build.0 = Debug|Any CPU + {EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F}.Proto|Any CPU.Build.0 = Release|Any CPU + {EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F}.Proto|x86.ActiveCfg = Release|Any CPU + {EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F}.Proto|x86.Build.0 = Release|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F}.Release|Any CPU.ActiveCfg = Release|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F}.Release|Any CPU.Build.0 = Release|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F}.Release|x86.ActiveCfg = Release|Any CPU @@ -196,6 +238,10 @@ Global {1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF}.Debug|Any CPU.Build.0 = Debug|Any CPU {1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF}.Debug|x86.ActiveCfg = Debug|Any CPU {1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF}.Debug|x86.Build.0 = Debug|Any CPU + {1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF}.Proto|Any CPU.Build.0 = Release|Any CPU + {1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF}.Proto|x86.ActiveCfg = Release|Any CPU + {1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF}.Proto|x86.Build.0 = Release|Any CPU {1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF}.Release|Any CPU.ActiveCfg = Release|Any CPU {1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF}.Release|Any CPU.Build.0 = Release|Any CPU {1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF}.Release|x86.ActiveCfg = Release|Any CPU @@ -204,6 +250,10 @@ Global {65E0E82A-EACE-4787-8994-888674C2FE87}.Debug|Any CPU.Build.0 = Debug|Any CPU {65E0E82A-EACE-4787-8994-888674C2FE87}.Debug|x86.ActiveCfg = Debug|Any CPU {65E0E82A-EACE-4787-8994-888674C2FE87}.Debug|x86.Build.0 = Debug|Any CPU + {65E0E82A-EACE-4787-8994-888674C2FE87}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {65E0E82A-EACE-4787-8994-888674C2FE87}.Proto|Any CPU.Build.0 = Release|Any CPU + {65E0E82A-EACE-4787-8994-888674C2FE87}.Proto|x86.ActiveCfg = Release|Any CPU + {65E0E82A-EACE-4787-8994-888674C2FE87}.Proto|x86.Build.0 = Release|Any CPU {65E0E82A-EACE-4787-8994-888674C2FE87}.Release|Any CPU.ActiveCfg = Release|Any CPU {65E0E82A-EACE-4787-8994-888674C2FE87}.Release|Any CPU.Build.0 = Release|Any CPU {65E0E82A-EACE-4787-8994-888674C2FE87}.Release|x86.ActiveCfg = Release|Any CPU @@ -212,6 +262,10 @@ Global {B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7}.Debug|Any CPU.Build.0 = Debug|Any CPU {B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7}.Debug|x86.ActiveCfg = Debug|Any CPU {B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7}.Debug|x86.Build.0 = Debug|Any CPU + {B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7}.Proto|Any CPU.Build.0 = Release|Any CPU + {B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7}.Proto|x86.ActiveCfg = Release|Any CPU + {B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7}.Proto|x86.Build.0 = Release|Any CPU {B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7}.Release|Any CPU.ActiveCfg = Release|Any CPU {B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7}.Release|Any CPU.Build.0 = Release|Any CPU {B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7}.Release|x86.ActiveCfg = Release|Any CPU @@ -220,6 +274,10 @@ Global {FCFB214C-462E-42B3-91CA-FC557EFEE74F}.Debug|Any CPU.Build.0 = Debug|Any CPU {FCFB214C-462E-42B3-91CA-FC557EFEE74F}.Debug|x86.ActiveCfg = Debug|Any CPU {FCFB214C-462E-42B3-91CA-FC557EFEE74F}.Debug|x86.Build.0 = Debug|Any CPU + {FCFB214C-462E-42B3-91CA-FC557EFEE74F}.Proto|Any CPU.ActiveCfg = Proto|Any CPU + {FCFB214C-462E-42B3-91CA-FC557EFEE74F}.Proto|Any CPU.Build.0 = Proto|Any CPU + {FCFB214C-462E-42B3-91CA-FC557EFEE74F}.Proto|x86.ActiveCfg = Proto|Any CPU + {FCFB214C-462E-42B3-91CA-FC557EFEE74F}.Proto|x86.Build.0 = Proto|Any CPU {FCFB214C-462E-42B3-91CA-FC557EFEE74F}.Release|Any CPU.ActiveCfg = Release|Any CPU {FCFB214C-462E-42B3-91CA-FC557EFEE74F}.Release|Any CPU.Build.0 = Release|Any CPU {FCFB214C-462E-42B3-91CA-FC557EFEE74F}.Release|x86.ActiveCfg = Release|Any CPU @@ -228,6 +286,10 @@ Global {6196B0F8-CAEA-4CF1-AF82-1B520F77FE44}.Debug|Any CPU.Build.0 = Debug|Any CPU {6196B0F8-CAEA-4CF1-AF82-1B520F77FE44}.Debug|x86.ActiveCfg = Debug|Any CPU {6196B0F8-CAEA-4CF1-AF82-1B520F77FE44}.Debug|x86.Build.0 = Debug|Any CPU + {6196B0F8-CAEA-4CF1-AF82-1B520F77FE44}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {6196B0F8-CAEA-4CF1-AF82-1B520F77FE44}.Proto|Any CPU.Build.0 = Release|Any CPU + {6196B0F8-CAEA-4CF1-AF82-1B520F77FE44}.Proto|x86.ActiveCfg = Release|Any CPU + {6196B0F8-CAEA-4CF1-AF82-1B520F77FE44}.Proto|x86.Build.0 = Release|Any CPU {6196B0F8-CAEA-4CF1-AF82-1B520F77FE44}.Release|Any CPU.ActiveCfg = Release|Any CPU {6196B0F8-CAEA-4CF1-AF82-1B520F77FE44}.Release|Any CPU.Build.0 = Release|Any CPU {6196B0F8-CAEA-4CF1-AF82-1B520F77FE44}.Release|x86.ActiveCfg = Release|Any CPU @@ -236,6 +298,10 @@ Global {FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7}.Debug|Any CPU.Build.0 = Debug|Any CPU {FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7}.Debug|x86.ActiveCfg = Debug|Any CPU {FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7}.Debug|x86.Build.0 = Debug|Any CPU + {FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7}.Proto|Any CPU.Build.0 = Release|Any CPU + {FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7}.Proto|x86.ActiveCfg = Release|Any CPU + {FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7}.Proto|x86.Build.0 = Release|Any CPU {FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7}.Release|Any CPU.ActiveCfg = Release|Any CPU {FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7}.Release|Any CPU.Build.0 = Release|Any CPU {FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7}.Release|x86.ActiveCfg = Release|Any CPU @@ -244,6 +310,10 @@ Global {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Debug|Any CPU.Build.0 = Debug|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Debug|x86.ActiveCfg = Debug|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Debug|x86.Build.0 = Debug|Any CPU + {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Proto|Any CPU.Build.0 = Release|Any CPU + {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Proto|x86.ActiveCfg = Release|Any CPU + {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Proto|x86.Build.0 = Release|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Release|Any CPU.ActiveCfg = Release|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Release|Any CPU.Build.0 = Release|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Release|x86.ActiveCfg = Release|Any CPU @@ -252,6 +322,10 @@ Global {DA39AD38-4A58-47BF-9215-E49768295169}.Debug|Any CPU.Build.0 = Debug|Any CPU {DA39AD38-4A58-47BF-9215-E49768295169}.Debug|x86.ActiveCfg = Debug|Any CPU {DA39AD38-4A58-47BF-9215-E49768295169}.Debug|x86.Build.0 = Debug|Any CPU + {DA39AD38-4A58-47BF-9215-E49768295169}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {DA39AD38-4A58-47BF-9215-E49768295169}.Proto|Any CPU.Build.0 = Release|Any CPU + {DA39AD38-4A58-47BF-9215-E49768295169}.Proto|x86.ActiveCfg = Release|Any CPU + {DA39AD38-4A58-47BF-9215-E49768295169}.Proto|x86.Build.0 = Release|Any CPU {DA39AD38-4A58-47BF-9215-E49768295169}.Release|Any CPU.ActiveCfg = Release|Any CPU {DA39AD38-4A58-47BF-9215-E49768295169}.Release|Any CPU.Build.0 = Release|Any CPU {DA39AD38-4A58-47BF-9215-E49768295169}.Release|x86.ActiveCfg = Release|Any CPU @@ -260,6 +334,10 @@ Global {8C2439BD-0E49-4929-A8B1-29CEE228191E}.Debug|Any CPU.Build.0 = Debug|Any CPU {8C2439BD-0E49-4929-A8B1-29CEE228191E}.Debug|x86.ActiveCfg = Debug|Any CPU {8C2439BD-0E49-4929-A8B1-29CEE228191E}.Debug|x86.Build.0 = Debug|Any CPU + {8C2439BD-0E49-4929-A8B1-29CEE228191E}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {8C2439BD-0E49-4929-A8B1-29CEE228191E}.Proto|Any CPU.Build.0 = Release|Any CPU + {8C2439BD-0E49-4929-A8B1-29CEE228191E}.Proto|x86.ActiveCfg = Release|Any CPU + {8C2439BD-0E49-4929-A8B1-29CEE228191E}.Proto|x86.Build.0 = Release|Any CPU {8C2439BD-0E49-4929-A8B1-29CEE228191E}.Release|Any CPU.ActiveCfg = Release|Any CPU {8C2439BD-0E49-4929-A8B1-29CEE228191E}.Release|Any CPU.Build.0 = Release|Any CPU {8C2439BD-0E49-4929-A8B1-29CEE228191E}.Release|x86.ActiveCfg = Release|Any CPU @@ -268,6 +346,10 @@ Global {F47196DC-186D-4055-BAF2-658282A12F33}.Debug|Any CPU.Build.0 = Debug|Any CPU {F47196DC-186D-4055-BAF2-658282A12F33}.Debug|x86.ActiveCfg = Debug|Any CPU {F47196DC-186D-4055-BAF2-658282A12F33}.Debug|x86.Build.0 = Debug|Any CPU + {F47196DC-186D-4055-BAF2-658282A12F33}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {F47196DC-186D-4055-BAF2-658282A12F33}.Proto|Any CPU.Build.0 = Release|Any CPU + {F47196DC-186D-4055-BAF2-658282A12F33}.Proto|x86.ActiveCfg = Release|Any CPU + {F47196DC-186D-4055-BAF2-658282A12F33}.Proto|x86.Build.0 = Release|Any CPU {F47196DC-186D-4055-BAF2-658282A12F33}.Release|Any CPU.ActiveCfg = Release|Any CPU {F47196DC-186D-4055-BAF2-658282A12F33}.Release|Any CPU.Build.0 = Release|Any CPU {F47196DC-186D-4055-BAF2-658282A12F33}.Release|x86.ActiveCfg = Release|Any CPU @@ -276,6 +358,10 @@ Global {D4C88934-5893-467E-A55C-A11ECD6479FE}.Debug|Any CPU.Build.0 = Debug|Any CPU {D4C88934-5893-467E-A55C-A11ECD6479FE}.Debug|x86.ActiveCfg = Debug|Any CPU {D4C88934-5893-467E-A55C-A11ECD6479FE}.Debug|x86.Build.0 = Debug|Any CPU + {D4C88934-5893-467E-A55C-A11ECD6479FE}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {D4C88934-5893-467E-A55C-A11ECD6479FE}.Proto|Any CPU.Build.0 = Release|Any CPU + {D4C88934-5893-467E-A55C-A11ECD6479FE}.Proto|x86.ActiveCfg = Release|Any CPU + {D4C88934-5893-467E-A55C-A11ECD6479FE}.Proto|x86.Build.0 = Release|Any CPU {D4C88934-5893-467E-A55C-A11ECD6479FE}.Release|Any CPU.ActiveCfg = Release|Any CPU {D4C88934-5893-467E-A55C-A11ECD6479FE}.Release|Any CPU.Build.0 = Release|Any CPU {D4C88934-5893-467E-A55C-A11ECD6479FE}.Release|x86.ActiveCfg = Release|Any CPU @@ -284,6 +370,10 @@ Global {6AFF752D-E991-4A08-9ED2-5BF46B0E0F8B}.Debug|Any CPU.Build.0 = Debug|Any CPU {6AFF752D-E991-4A08-9ED2-5BF46B0E0F8B}.Debug|x86.ActiveCfg = Debug|Any CPU {6AFF752D-E991-4A08-9ED2-5BF46B0E0F8B}.Debug|x86.Build.0 = Debug|Any CPU + {6AFF752D-E991-4A08-9ED2-5BF46B0E0F8B}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {6AFF752D-E991-4A08-9ED2-5BF46B0E0F8B}.Proto|Any CPU.Build.0 = Release|Any CPU + {6AFF752D-E991-4A08-9ED2-5BF46B0E0F8B}.Proto|x86.ActiveCfg = Release|Any CPU + {6AFF752D-E991-4A08-9ED2-5BF46B0E0F8B}.Proto|x86.Build.0 = Release|Any CPU {6AFF752D-E991-4A08-9ED2-5BF46B0E0F8B}.Release|Any CPU.ActiveCfg = Release|Any CPU {6AFF752D-E991-4A08-9ED2-5BF46B0E0F8B}.Release|Any CPU.Build.0 = Release|Any CPU {6AFF752D-E991-4A08-9ED2-5BF46B0E0F8B}.Release|x86.ActiveCfg = Release|Any CPU @@ -292,6 +382,10 @@ Global {0B9CDEAF-EE8F-45E0-A4E0-34A8ED6DD09E}.Debug|Any CPU.Build.0 = Debug|Any CPU {0B9CDEAF-EE8F-45E0-A4E0-34A8ED6DD09E}.Debug|x86.ActiveCfg = Debug|Any CPU {0B9CDEAF-EE8F-45E0-A4E0-34A8ED6DD09E}.Debug|x86.Build.0 = Debug|Any CPU + {0B9CDEAF-EE8F-45E0-A4E0-34A8ED6DD09E}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {0B9CDEAF-EE8F-45E0-A4E0-34A8ED6DD09E}.Proto|Any CPU.Build.0 = Release|Any CPU + {0B9CDEAF-EE8F-45E0-A4E0-34A8ED6DD09E}.Proto|x86.ActiveCfg = Release|Any CPU + {0B9CDEAF-EE8F-45E0-A4E0-34A8ED6DD09E}.Proto|x86.Build.0 = Release|Any CPU {0B9CDEAF-EE8F-45E0-A4E0-34A8ED6DD09E}.Release|Any CPU.ActiveCfg = Release|Any CPU {0B9CDEAF-EE8F-45E0-A4E0-34A8ED6DD09E}.Release|Any CPU.Build.0 = Release|Any CPU {0B9CDEAF-EE8F-45E0-A4E0-34A8ED6DD09E}.Release|x86.ActiveCfg = Release|Any CPU @@ -300,6 +394,10 @@ Global {004982C6-93EA-4E70-B4F0-BE7D7219926A}.Debug|Any CPU.Build.0 = Debug|Any CPU {004982C6-93EA-4E70-B4F0-BE7D7219926A}.Debug|x86.ActiveCfg = Debug|Any CPU {004982C6-93EA-4E70-B4F0-BE7D7219926A}.Debug|x86.Build.0 = Debug|Any CPU + {004982C6-93EA-4E70-B4F0-BE7D7219926A}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {004982C6-93EA-4E70-B4F0-BE7D7219926A}.Proto|Any CPU.Build.0 = Release|Any CPU + {004982C6-93EA-4E70-B4F0-BE7D7219926A}.Proto|x86.ActiveCfg = Release|Any CPU + {004982C6-93EA-4E70-B4F0-BE7D7219926A}.Proto|x86.Build.0 = Release|Any CPU {004982C6-93EA-4E70-B4F0-BE7D7219926A}.Release|Any CPU.ActiveCfg = Release|Any CPU {004982C6-93EA-4E70-B4F0-BE7D7219926A}.Release|Any CPU.Build.0 = Release|Any CPU {004982C6-93EA-4E70-B4F0-BE7D7219926A}.Release|x86.ActiveCfg = Release|Any CPU @@ -308,6 +406,10 @@ Global {243A81AC-A954-4601-833A-60EEEFB00FCD}.Debug|Any CPU.Build.0 = Debug|Any CPU {243A81AC-A954-4601-833A-60EEEFB00FCD}.Debug|x86.ActiveCfg = Debug|Any CPU {243A81AC-A954-4601-833A-60EEEFB00FCD}.Debug|x86.Build.0 = Debug|Any CPU + {243A81AC-A954-4601-833A-60EEEFB00FCD}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {243A81AC-A954-4601-833A-60EEEFB00FCD}.Proto|Any CPU.Build.0 = Release|Any CPU + {243A81AC-A954-4601-833A-60EEEFB00FCD}.Proto|x86.ActiveCfg = Release|Any CPU + {243A81AC-A954-4601-833A-60EEEFB00FCD}.Proto|x86.Build.0 = Release|Any CPU {243A81AC-A954-4601-833A-60EEEFB00FCD}.Release|Any CPU.ActiveCfg = Release|Any CPU {243A81AC-A954-4601-833A-60EEEFB00FCD}.Release|Any CPU.Build.0 = Release|Any CPU {243A81AC-A954-4601-833A-60EEEFB00FCD}.Release|x86.ActiveCfg = Release|Any CPU @@ -316,6 +418,10 @@ Global {B4595EB6-053A-400E-AA1B-7727F1BC900F}.Debug|Any CPU.Build.0 = Debug|Any CPU {B4595EB6-053A-400E-AA1B-7727F1BC900F}.Debug|x86.ActiveCfg = Debug|Any CPU {B4595EB6-053A-400E-AA1B-7727F1BC900F}.Debug|x86.Build.0 = Debug|Any CPU + {B4595EB6-053A-400E-AA1B-7727F1BC900F}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {B4595EB6-053A-400E-AA1B-7727F1BC900F}.Proto|Any CPU.Build.0 = Release|Any CPU + {B4595EB6-053A-400E-AA1B-7727F1BC900F}.Proto|x86.ActiveCfg = Release|Any CPU + {B4595EB6-053A-400E-AA1B-7727F1BC900F}.Proto|x86.Build.0 = Release|Any CPU {B4595EB6-053A-400E-AA1B-7727F1BC900F}.Release|Any CPU.ActiveCfg = Release|Any CPU {B4595EB6-053A-400E-AA1B-7727F1BC900F}.Release|Any CPU.Build.0 = Release|Any CPU {B4595EB6-053A-400E-AA1B-7727F1BC900F}.Release|x86.ActiveCfg = Release|Any CPU @@ -324,6 +430,10 @@ Global {A559D7E8-7EFD-473A-B618-A10B41AB523B}.Debug|Any CPU.Build.0 = Debug|Any CPU {A559D7E8-7EFD-473A-B618-A10B41AB523B}.Debug|x86.ActiveCfg = Debug|Any CPU {A559D7E8-7EFD-473A-B618-A10B41AB523B}.Debug|x86.Build.0 = Debug|Any CPU + {A559D7E8-7EFD-473A-B618-A10B41AB523B}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {A559D7E8-7EFD-473A-B618-A10B41AB523B}.Proto|Any CPU.Build.0 = Release|Any CPU + {A559D7E8-7EFD-473A-B618-A10B41AB523B}.Proto|x86.ActiveCfg = Release|Any CPU + {A559D7E8-7EFD-473A-B618-A10B41AB523B}.Proto|x86.Build.0 = Release|Any CPU {A559D7E8-7EFD-473A-B618-A10B41AB523B}.Release|Any CPU.ActiveCfg = Release|Any CPU {A559D7E8-7EFD-473A-B618-A10B41AB523B}.Release|Any CPU.Build.0 = Release|Any CPU {A559D7E8-7EFD-473A-B618-A10B41AB523B}.Release|x86.ActiveCfg = Release|Any CPU @@ -332,6 +442,10 @@ Global {AC85EE6D-033C-45F9-B8BA-884BC22EC6D9}.Debug|Any CPU.Build.0 = Debug|Any CPU {AC85EE6D-033C-45F9-B8BA-884BC22EC6D9}.Debug|x86.ActiveCfg = Debug|Any CPU {AC85EE6D-033C-45F9-B8BA-884BC22EC6D9}.Debug|x86.Build.0 = Debug|Any CPU + {AC85EE6D-033C-45F9-B8BA-884BC22EC6D9}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {AC85EE6D-033C-45F9-B8BA-884BC22EC6D9}.Proto|Any CPU.Build.0 = Release|Any CPU + {AC85EE6D-033C-45F9-B8BA-884BC22EC6D9}.Proto|x86.ActiveCfg = Release|Any CPU + {AC85EE6D-033C-45F9-B8BA-884BC22EC6D9}.Proto|x86.Build.0 = Release|Any CPU {AC85EE6D-033C-45F9-B8BA-884BC22EC6D9}.Release|Any CPU.ActiveCfg = Release|Any CPU {AC85EE6D-033C-45F9-B8BA-884BC22EC6D9}.Release|Any CPU.Build.0 = Release|Any CPU {AC85EE6D-033C-45F9-B8BA-884BC22EC6D9}.Release|x86.ActiveCfg = Release|Any CPU @@ -340,6 +454,10 @@ Global {956BBE41-ABD1-4DBA-9F3B-BA1C9821C98C}.Debug|Any CPU.Build.0 = Debug|Any CPU {956BBE41-ABD1-4DBA-9F3B-BA1C9821C98C}.Debug|x86.ActiveCfg = Debug|Any CPU {956BBE41-ABD1-4DBA-9F3B-BA1C9821C98C}.Debug|x86.Build.0 = Debug|Any CPU + {956BBE41-ABD1-4DBA-9F3B-BA1C9821C98C}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {956BBE41-ABD1-4DBA-9F3B-BA1C9821C98C}.Proto|Any CPU.Build.0 = Release|Any CPU + {956BBE41-ABD1-4DBA-9F3B-BA1C9821C98C}.Proto|x86.ActiveCfg = Release|Any CPU + {956BBE41-ABD1-4DBA-9F3B-BA1C9821C98C}.Proto|x86.Build.0 = Release|Any CPU {956BBE41-ABD1-4DBA-9F3B-BA1C9821C98C}.Release|Any CPU.ActiveCfg = Release|Any CPU {956BBE41-ABD1-4DBA-9F3B-BA1C9821C98C}.Release|Any CPU.Build.0 = Release|Any CPU {956BBE41-ABD1-4DBA-9F3B-BA1C9821C98C}.Release|x86.ActiveCfg = Release|Any CPU @@ -348,6 +466,10 @@ Global {702A7979-BCF9-4C41-853E-3ADFC9897890}.Debug|Any CPU.Build.0 = Debug|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Debug|x86.ActiveCfg = Debug|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Debug|x86.Build.0 = Debug|Any CPU + {702A7979-BCF9-4C41-853E-3ADFC9897890}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {702A7979-BCF9-4C41-853E-3ADFC9897890}.Proto|Any CPU.Build.0 = Release|Any CPU + {702A7979-BCF9-4C41-853E-3ADFC9897890}.Proto|x86.ActiveCfg = Release|Any CPU + {702A7979-BCF9-4C41-853E-3ADFC9897890}.Proto|x86.Build.0 = Release|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Release|Any CPU.ActiveCfg = Release|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Release|Any CPU.Build.0 = Release|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Release|x86.ActiveCfg = Release|Any CPU @@ -356,6 +478,10 @@ Global {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Debug|Any CPU.Build.0 = Debug|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Debug|x86.ActiveCfg = Debug|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Debug|x86.Build.0 = Debug|Any CPU + {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Proto|Any CPU.Build.0 = Release|Any CPU + {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Proto|x86.ActiveCfg = Release|Any CPU + {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Proto|x86.Build.0 = Release|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Release|Any CPU.ActiveCfg = Release|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Release|Any CPU.Build.0 = Release|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Release|x86.ActiveCfg = Release|Any CPU @@ -364,6 +490,10 @@ Global {649FA588-F02E-457C-9FCF-87E46407481E}.Debug|Any CPU.Build.0 = Debug|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Debug|x86.ActiveCfg = Debug|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Debug|x86.Build.0 = Debug|Any CPU + {649FA588-F02E-457C-9FCF-87E46407481E}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {649FA588-F02E-457C-9FCF-87E46407481E}.Proto|Any CPU.Build.0 = Release|Any CPU + {649FA588-F02E-457C-9FCF-87E46407481E}.Proto|x86.ActiveCfg = Release|Any CPU + {649FA588-F02E-457C-9FCF-87E46407481E}.Proto|x86.Build.0 = Release|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Release|Any CPU.ActiveCfg = Release|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Release|Any CPU.Build.0 = Release|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Release|x86.ActiveCfg = Release|Any CPU @@ -372,6 +502,10 @@ Global {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Debug|Any CPU.Build.0 = Debug|Any CPU {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Debug|x86.ActiveCfg = Debug|Any CPU {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Debug|x86.Build.0 = Debug|Any CPU + {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Proto|Any CPU.Build.0 = Release|Any CPU + {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Proto|x86.ActiveCfg = Release|Any CPU + {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Proto|x86.Build.0 = Release|Any CPU {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Release|Any CPU.ActiveCfg = Release|Any CPU {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Release|Any CPU.Build.0 = Release|Any CPU {8B3E283D-B5FE-4055-9D80-7E3A32F3967B}.Release|x86.ActiveCfg = Release|Any CPU @@ -380,6 +514,10 @@ Global {D0E98C0D-490B-4C61-9329-0862F6E87645}.Debug|Any CPU.Build.0 = Debug|Any CPU {D0E98C0D-490B-4C61-9329-0862F6E87645}.Debug|x86.ActiveCfg = Debug|Any CPU {D0E98C0D-490B-4C61-9329-0862F6E87645}.Debug|x86.Build.0 = Debug|Any CPU + {D0E98C0D-490B-4C61-9329-0862F6E87645}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {D0E98C0D-490B-4C61-9329-0862F6E87645}.Proto|Any CPU.Build.0 = Release|Any CPU + {D0E98C0D-490B-4C61-9329-0862F6E87645}.Proto|x86.ActiveCfg = Release|Any CPU + {D0E98C0D-490B-4C61-9329-0862F6E87645}.Proto|x86.Build.0 = Release|Any CPU {D0E98C0D-490B-4C61-9329-0862F6E87645}.Release|Any CPU.ActiveCfg = Release|Any CPU {D0E98C0D-490B-4C61-9329-0862F6E87645}.Release|Any CPU.Build.0 = Release|Any CPU {D0E98C0D-490B-4C61-9329-0862F6E87645}.Release|x86.ActiveCfg = Release|Any CPU @@ -388,6 +526,10 @@ Global {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Debug|Any CPU.Build.0 = Debug|Any CPU {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Debug|x86.ActiveCfg = Debug|Any CPU {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Debug|x86.Build.0 = Debug|Any CPU + {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Proto|Any CPU.Build.0 = Release|Any CPU + {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Proto|x86.ActiveCfg = Release|Any CPU + {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Proto|x86.Build.0 = Release|Any CPU {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Release|Any CPU.ActiveCfg = Release|Any CPU {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Release|Any CPU.Build.0 = Release|Any CPU {C163E892-5BF7-4B59-AA99-B0E8079C67C4}.Release|x86.ActiveCfg = Release|Any CPU @@ -396,6 +538,10 @@ Global {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Debug|Any CPU.Build.0 = Debug|Any CPU {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Debug|x86.ActiveCfg = Debug|Any CPU {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Debug|x86.Build.0 = Debug|Any CPU + {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Proto|Any CPU.Build.0 = Release|Any CPU + {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Proto|x86.ActiveCfg = Release|Any CPU + {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Proto|x86.Build.0 = Release|Any CPU {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Release|Any CPU.ActiveCfg = Release|Any CPU {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Release|Any CPU.Build.0 = Release|Any CPU {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}.Release|x86.ActiveCfg = Release|Any CPU @@ -404,38 +550,22 @@ Global {88E2D422-6852-46E3-A740-83E391DC7973}.Debug|Any CPU.Build.0 = Debug|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Debug|x86.ActiveCfg = Debug|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Debug|x86.Build.0 = Debug|Any CPU + {88E2D422-6852-46E3-A740-83E391DC7973}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {88E2D422-6852-46E3-A740-83E391DC7973}.Proto|Any CPU.Build.0 = Release|Any CPU + {88E2D422-6852-46E3-A740-83E391DC7973}.Proto|x86.ActiveCfg = Release|Any CPU + {88E2D422-6852-46E3-A740-83E391DC7973}.Proto|x86.Build.0 = Release|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Release|Any CPU.ActiveCfg = Release|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Release|Any CPU.Build.0 = Release|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Release|x86.ActiveCfg = Release|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Release|x86.Build.0 = Release|Any CPU - {604F0DAA-2D33-48DD-B162-EDF0B672803D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {604F0DAA-2D33-48DD-B162-EDF0B672803D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {604F0DAA-2D33-48DD-B162-EDF0B672803D}.Debug|x86.ActiveCfg = Debug|Any CPU - {604F0DAA-2D33-48DD-B162-EDF0B672803D}.Debug|x86.Build.0 = Debug|Any CPU - {604F0DAA-2D33-48DD-B162-EDF0B672803D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {604F0DAA-2D33-48DD-B162-EDF0B672803D}.Release|Any CPU.Build.0 = Release|Any CPU - {604F0DAA-2D33-48DD-B162-EDF0B672803D}.Release|x86.ActiveCfg = Release|Any CPU - {604F0DAA-2D33-48DD-B162-EDF0B672803D}.Release|x86.Build.0 = Release|Any CPU - {01678CDA-A11F-4DEE-9344-2EDF91CF1AE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {01678CDA-A11F-4DEE-9344-2EDF91CF1AE7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {01678CDA-A11F-4DEE-9344-2EDF91CF1AE7}.Debug|x86.ActiveCfg = Debug|Any CPU - {01678CDA-A11F-4DEE-9344-2EDF91CF1AE7}.Debug|x86.Build.0 = Debug|Any CPU - {01678CDA-A11F-4DEE-9344-2EDF91CF1AE7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {01678CDA-A11F-4DEE-9344-2EDF91CF1AE7}.Release|Any CPU.Build.0 = Release|Any CPU - {01678CDA-A11F-4DEE-9344-2EDF91CF1AE7}.Release|x86.ActiveCfg = Release|Any CPU - {01678CDA-A11F-4DEE-9344-2EDF91CF1AE7}.Release|x86.Build.0 = Release|Any CPU - {2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4}.Debug|x86.ActiveCfg = Debug|Any CPU - {2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4}.Debug|x86.Build.0 = Debug|Any CPU - {2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4}.Release|Any CPU.Build.0 = Release|Any CPU - {2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4}.Release|x86.ActiveCfg = Release|Any CPU - {2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4}.Release|x86.Build.0 = Release|Any CPU {6BA13AA4-C25F-480F-856B-8E8000299A72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6BA13AA4-C25F-480F-856B-8E8000299A72}.Debug|Any CPU.Build.0 = Debug|Any CPU {6BA13AA4-C25F-480F-856B-8E8000299A72}.Debug|x86.ActiveCfg = Debug|Any CPU {6BA13AA4-C25F-480F-856B-8E8000299A72}.Debug|x86.Build.0 = Debug|Any CPU + {6BA13AA4-C25F-480F-856B-8E8000299A72}.Proto|Any CPU.ActiveCfg = Proto|Any CPU + {6BA13AA4-C25F-480F-856B-8E8000299A72}.Proto|Any CPU.Build.0 = Proto|Any CPU + {6BA13AA4-C25F-480F-856B-8E8000299A72}.Proto|x86.ActiveCfg = Proto|Any CPU + {6BA13AA4-C25F-480F-856B-8E8000299A72}.Proto|x86.Build.0 = Proto|Any CPU {6BA13AA4-C25F-480F-856B-8E8000299A72}.Release|Any CPU.ActiveCfg = Release|Any CPU {6BA13AA4-C25F-480F-856B-8E8000299A72}.Release|Any CPU.Build.0 = Release|Any CPU {6BA13AA4-C25F-480F-856B-8E8000299A72}.Release|x86.ActiveCfg = Release|Any CPU @@ -444,6 +574,10 @@ Global {12AC2813-E895-4AAA-AE6C-94E21DA09F64}.Debug|Any CPU.Build.0 = Debug|Any CPU {12AC2813-E895-4AAA-AE6C-94E21DA09F64}.Debug|x86.ActiveCfg = Debug|Any CPU {12AC2813-E895-4AAA-AE6C-94E21DA09F64}.Debug|x86.Build.0 = Debug|Any CPU + {12AC2813-E895-4AAA-AE6C-94E21DA09F64}.Proto|Any CPU.ActiveCfg = Proto|Any CPU + {12AC2813-E895-4AAA-AE6C-94E21DA09F64}.Proto|Any CPU.Build.0 = Proto|Any CPU + {12AC2813-E895-4AAA-AE6C-94E21DA09F64}.Proto|x86.ActiveCfg = Proto|Any CPU + {12AC2813-E895-4AAA-AE6C-94E21DA09F64}.Proto|x86.Build.0 = Proto|Any CPU {12AC2813-E895-4AAA-AE6C-94E21DA09F64}.Release|Any CPU.ActiveCfg = Release|Any CPU {12AC2813-E895-4AAA-AE6C-94E21DA09F64}.Release|Any CPU.Build.0 = Release|Any CPU {12AC2813-E895-4AAA-AE6C-94E21DA09F64}.Release|x86.ActiveCfg = Release|Any CPU @@ -452,6 +586,10 @@ Global {A333B85A-DC23-49B6-9797-B89A7951E92D}.Debug|Any CPU.Build.0 = Debug|Any CPU {A333B85A-DC23-49B6-9797-B89A7951E92D}.Debug|x86.ActiveCfg = Debug|Any CPU {A333B85A-DC23-49B6-9797-B89A7951E92D}.Debug|x86.Build.0 = Debug|Any CPU + {A333B85A-DC23-49B6-9797-B89A7951E92D}.Proto|Any CPU.ActiveCfg = Proto|Any CPU + {A333B85A-DC23-49B6-9797-B89A7951E92D}.Proto|Any CPU.Build.0 = Proto|Any CPU + {A333B85A-DC23-49B6-9797-B89A7951E92D}.Proto|x86.ActiveCfg = Proto|Any CPU + {A333B85A-DC23-49B6-9797-B89A7951E92D}.Proto|x86.Build.0 = Proto|Any CPU {A333B85A-DC23-49B6-9797-B89A7951E92D}.Release|Any CPU.ActiveCfg = Release|Any CPU {A333B85A-DC23-49B6-9797-B89A7951E92D}.Release|Any CPU.Build.0 = Release|Any CPU {A333B85A-DC23-49B6-9797-B89A7951E92D}.Release|x86.ActiveCfg = Release|Any CPU @@ -460,6 +598,10 @@ Global {E3FDD4AC-46B6-4B9F-B672-317D1202CC50}.Debug|Any CPU.Build.0 = Debug|Any CPU {E3FDD4AC-46B6-4B9F-B672-317D1202CC50}.Debug|x86.ActiveCfg = Debug|Any CPU {E3FDD4AC-46B6-4B9F-B672-317D1202CC50}.Debug|x86.Build.0 = Debug|Any CPU + {E3FDD4AC-46B6-4B9F-B672-317D1202CC50}.Proto|Any CPU.ActiveCfg = Proto|Any CPU + {E3FDD4AC-46B6-4B9F-B672-317D1202CC50}.Proto|Any CPU.Build.0 = Proto|Any CPU + {E3FDD4AC-46B6-4B9F-B672-317D1202CC50}.Proto|x86.ActiveCfg = Proto|Any CPU + {E3FDD4AC-46B6-4B9F-B672-317D1202CC50}.Proto|x86.Build.0 = Proto|Any CPU {E3FDD4AC-46B6-4B9F-B672-317D1202CC50}.Release|Any CPU.ActiveCfg = Release|Any CPU {E3FDD4AC-46B6-4B9F-B672-317D1202CC50}.Release|Any CPU.Build.0 = Release|Any CPU {E3FDD4AC-46B6-4B9F-B672-317D1202CC50}.Release|x86.ActiveCfg = Release|Any CPU @@ -468,6 +610,10 @@ Global {D11FC318-8F5D-4C8C-9287-AB40A016D13C}.Debug|Any CPU.Build.0 = Debug|Any CPU {D11FC318-8F5D-4C8C-9287-AB40A016D13C}.Debug|x86.ActiveCfg = Debug|Any CPU {D11FC318-8F5D-4C8C-9287-AB40A016D13C}.Debug|x86.Build.0 = Debug|Any CPU + {D11FC318-8F5D-4C8C-9287-AB40A016D13C}.Proto|Any CPU.ActiveCfg = Proto|Any CPU + {D11FC318-8F5D-4C8C-9287-AB40A016D13C}.Proto|Any CPU.Build.0 = Proto|Any CPU + {D11FC318-8F5D-4C8C-9287-AB40A016D13C}.Proto|x86.ActiveCfg = Proto|Any CPU + {D11FC318-8F5D-4C8C-9287-AB40A016D13C}.Proto|x86.Build.0 = Proto|Any CPU {D11FC318-8F5D-4C8C-9287-AB40A016D13C}.Release|Any CPU.ActiveCfg = Release|Any CPU {D11FC318-8F5D-4C8C-9287-AB40A016D13C}.Release|Any CPU.Build.0 = Release|Any CPU {D11FC318-8F5D-4C8C-9287-AB40A016D13C}.Release|x86.ActiveCfg = Release|Any CPU @@ -476,6 +622,10 @@ Global {1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6}.Debug|Any CPU.Build.0 = Debug|Any CPU {1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6}.Debug|x86.ActiveCfg = Debug|Any CPU {1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6}.Debug|x86.Build.0 = Debug|Any CPU + {1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6}.Proto|Any CPU.ActiveCfg = Proto|Any CPU + {1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6}.Proto|Any CPU.Build.0 = Proto|Any CPU + {1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6}.Proto|x86.ActiveCfg = Proto|Any CPU + {1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6}.Proto|x86.Build.0 = Proto|Any CPU {1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6}.Release|Any CPU.ActiveCfg = Release|Any CPU {1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6}.Release|Any CPU.Build.0 = Release|Any CPU {1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6}.Release|x86.ActiveCfg = Release|Any CPU @@ -484,6 +634,10 @@ Global {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Debug|Any CPU.Build.0 = Debug|Any CPU {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Debug|x86.ActiveCfg = Debug|Any CPU {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Debug|x86.Build.0 = Debug|Any CPU + {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Proto|Any CPU.Build.0 = Release|Any CPU + {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Proto|x86.ActiveCfg = Release|Any CPU + {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Proto|x86.Build.0 = Release|Any CPU {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Release|Any CPU.ActiveCfg = Release|Any CPU {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Release|Any CPU.Build.0 = Release|Any CPU {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Release|x86.ActiveCfg = Release|Any CPU @@ -492,6 +646,10 @@ Global {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Debug|Any CPU.Build.0 = Debug|Any CPU {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Debug|x86.ActiveCfg = Debug|Any CPU {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Debug|x86.Build.0 = Debug|Any CPU + {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Proto|Any CPU.Build.0 = Release|Any CPU + {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Proto|x86.ActiveCfg = Release|Any CPU + {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Proto|x86.Build.0 = Release|Any CPU {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Release|Any CPU.ActiveCfg = Release|Any CPU {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Release|Any CPU.Build.0 = Release|Any CPU {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Release|x86.ActiveCfg = Release|Any CPU @@ -500,6 +658,10 @@ Global {E7FA3A71-51AF-4FCA-9C2F-7C853E515903}.Debug|Any CPU.Build.0 = Debug|Any CPU {E7FA3A71-51AF-4FCA-9C2F-7C853E515903}.Debug|x86.ActiveCfg = Debug|Any CPU {E7FA3A71-51AF-4FCA-9C2F-7C853E515903}.Debug|x86.Build.0 = Debug|Any CPU + {E7FA3A71-51AF-4FCA-9C2F-7C853E515903}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {E7FA3A71-51AF-4FCA-9C2F-7C853E515903}.Proto|Any CPU.Build.0 = Release|Any CPU + {E7FA3A71-51AF-4FCA-9C2F-7C853E515903}.Proto|x86.ActiveCfg = Release|Any CPU + {E7FA3A71-51AF-4FCA-9C2F-7C853E515903}.Proto|x86.Build.0 = Release|Any CPU {E7FA3A71-51AF-4FCA-9C2F-7C853E515903}.Release|Any CPU.ActiveCfg = Release|Any CPU {E7FA3A71-51AF-4FCA-9C2F-7C853E515903}.Release|Any CPU.Build.0 = Release|Any CPU {E7FA3A71-51AF-4FCA-9C2F-7C853E515903}.Release|x86.ActiveCfg = Release|Any CPU @@ -508,6 +670,10 @@ Global {C4586A06-1402-48BC-8E35-A1B8642F895B}.Debug|Any CPU.Build.0 = Debug|Any CPU {C4586A06-1402-48BC-8E35-A1B8642F895B}.Debug|x86.ActiveCfg = Debug|Any CPU {C4586A06-1402-48BC-8E35-A1B8642F895B}.Debug|x86.Build.0 = Debug|Any CPU + {C4586A06-1402-48BC-8E35-A1B8642F895B}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {C4586A06-1402-48BC-8E35-A1B8642F895B}.Proto|Any CPU.Build.0 = Release|Any CPU + {C4586A06-1402-48BC-8E35-A1B8642F895B}.Proto|x86.ActiveCfg = Release|Any CPU + {C4586A06-1402-48BC-8E35-A1B8642F895B}.Proto|x86.Build.0 = Release|Any CPU {C4586A06-1402-48BC-8E35-A1B8642F895B}.Release|Any CPU.ActiveCfg = Release|Any CPU {C4586A06-1402-48BC-8E35-A1B8642F895B}.Release|Any CPU.Build.0 = Release|Any CPU {C4586A06-1402-48BC-8E35-A1B8642F895B}.Release|x86.ActiveCfg = Release|Any CPU @@ -516,6 +682,10 @@ Global {887630A3-4B1D-40EA-B8B3-2D842E9C40DB}.Debug|Any CPU.Build.0 = Debug|Any CPU {887630A3-4B1D-40EA-B8B3-2D842E9C40DB}.Debug|x86.ActiveCfg = Debug|Any CPU {887630A3-4B1D-40EA-B8B3-2D842E9C40DB}.Debug|x86.Build.0 = Debug|Any CPU + {887630A3-4B1D-40EA-B8B3-2D842E9C40DB}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {887630A3-4B1D-40EA-B8B3-2D842E9C40DB}.Proto|Any CPU.Build.0 = Release|Any CPU + {887630A3-4B1D-40EA-B8B3-2D842E9C40DB}.Proto|x86.ActiveCfg = Release|Any CPU + {887630A3-4B1D-40EA-B8B3-2D842E9C40DB}.Proto|x86.Build.0 = Release|Any CPU {887630A3-4B1D-40EA-B8B3-2D842E9C40DB}.Release|Any CPU.ActiveCfg = Release|Any CPU {887630A3-4B1D-40EA-B8B3-2D842E9C40DB}.Release|Any CPU.Build.0 = Release|Any CPU {887630A3-4B1D-40EA-B8B3-2D842E9C40DB}.Release|x86.ActiveCfg = Release|Any CPU @@ -524,6 +694,10 @@ Global {FF76BD3C-5E0A-4752-B6C3-044F6E15719B}.Debug|Any CPU.Build.0 = Debug|Any CPU {FF76BD3C-5E0A-4752-B6C3-044F6E15719B}.Debug|x86.ActiveCfg = Debug|Any CPU {FF76BD3C-5E0A-4752-B6C3-044F6E15719B}.Debug|x86.Build.0 = Debug|Any CPU + {FF76BD3C-5E0A-4752-B6C3-044F6E15719B}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {FF76BD3C-5E0A-4752-B6C3-044F6E15719B}.Proto|Any CPU.Build.0 = Release|Any CPU + {FF76BD3C-5E0A-4752-B6C3-044F6E15719B}.Proto|x86.ActiveCfg = Release|Any CPU + {FF76BD3C-5E0A-4752-B6C3-044F6E15719B}.Proto|x86.Build.0 = Release|Any CPU {FF76BD3C-5E0A-4752-B6C3-044F6E15719B}.Release|Any CPU.ActiveCfg = Release|Any CPU {FF76BD3C-5E0A-4752-B6C3-044F6E15719B}.Release|Any CPU.Build.0 = Release|Any CPU {FF76BD3C-5E0A-4752-B6C3-044F6E15719B}.Release|x86.ActiveCfg = Release|Any CPU @@ -532,6 +706,10 @@ Global {0385564F-07B4-4264-AB8A-17C393E9140C}.Debug|Any CPU.Build.0 = Debug|Any CPU {0385564F-07B4-4264-AB8A-17C393E9140C}.Debug|x86.ActiveCfg = Debug|Any CPU {0385564F-07B4-4264-AB8A-17C393E9140C}.Debug|x86.Build.0 = Debug|Any CPU + {0385564F-07B4-4264-AB8A-17C393E9140C}.Proto|Any CPU.ActiveCfg = Proto|Any CPU + {0385564F-07B4-4264-AB8A-17C393E9140C}.Proto|Any CPU.Build.0 = Proto|Any CPU + {0385564F-07B4-4264-AB8A-17C393E9140C}.Proto|x86.ActiveCfg = Proto|Any CPU + {0385564F-07B4-4264-AB8A-17C393E9140C}.Proto|x86.Build.0 = Proto|Any CPU {0385564F-07B4-4264-AB8A-17C393E9140C}.Release|Any CPU.ActiveCfg = Release|Any CPU {0385564F-07B4-4264-AB8A-17C393E9140C}.Release|Any CPU.Build.0 = Release|Any CPU {0385564F-07B4-4264-AB8A-17C393E9140C}.Release|x86.ActiveCfg = Release|Any CPU @@ -540,6 +718,10 @@ Global {400FAB03-786E-40CC-85A8-04B0C2869B14}.Debug|Any CPU.Build.0 = Debug|Any CPU {400FAB03-786E-40CC-85A8-04B0C2869B14}.Debug|x86.ActiveCfg = Debug|Any CPU {400FAB03-786E-40CC-85A8-04B0C2869B14}.Debug|x86.Build.0 = Debug|Any CPU + {400FAB03-786E-40CC-85A8-04B0C2869B14}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {400FAB03-786E-40CC-85A8-04B0C2869B14}.Proto|Any CPU.Build.0 = Release|Any CPU + {400FAB03-786E-40CC-85A8-04B0C2869B14}.Proto|x86.ActiveCfg = Release|Any CPU + {400FAB03-786E-40CC-85A8-04B0C2869B14}.Proto|x86.Build.0 = Release|Any CPU {400FAB03-786E-40CC-85A8-04B0C2869B14}.Release|Any CPU.ActiveCfg = Release|Any CPU {400FAB03-786E-40CC-85A8-04B0C2869B14}.Release|Any CPU.Build.0 = Release|Any CPU {400FAB03-786E-40CC-85A8-04B0C2869B14}.Release|x86.ActiveCfg = Release|Any CPU @@ -548,6 +730,10 @@ Global {B0689A4E-07D8-494D-A0C8-791CB1D74E54}.Debug|Any CPU.Build.0 = Debug|Any CPU {B0689A4E-07D8-494D-A0C8-791CB1D74E54}.Debug|x86.ActiveCfg = Debug|Any CPU {B0689A4E-07D8-494D-A0C8-791CB1D74E54}.Debug|x86.Build.0 = Debug|Any CPU + {B0689A4E-07D8-494D-A0C8-791CB1D74E54}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {B0689A4E-07D8-494D-A0C8-791CB1D74E54}.Proto|Any CPU.Build.0 = Release|Any CPU + {B0689A4E-07D8-494D-A0C8-791CB1D74E54}.Proto|x86.ActiveCfg = Release|Any CPU + {B0689A4E-07D8-494D-A0C8-791CB1D74E54}.Proto|x86.Build.0 = Release|Any CPU {B0689A4E-07D8-494D-A0C8-791CB1D74E54}.Release|Any CPU.ActiveCfg = Release|Any CPU {B0689A4E-07D8-494D-A0C8-791CB1D74E54}.Release|Any CPU.Build.0 = Release|Any CPU {B0689A4E-07D8-494D-A0C8-791CB1D74E54}.Release|x86.ActiveCfg = Release|Any CPU @@ -556,6 +742,10 @@ Global {18227628-DF90-4C47-AF3D-CC72D2EDD986}.Debug|Any CPU.Build.0 = Debug|Any CPU {18227628-DF90-4C47-AF3D-CC72D2EDD986}.Debug|x86.ActiveCfg = Debug|Any CPU {18227628-DF90-4C47-AF3D-CC72D2EDD986}.Debug|x86.Build.0 = Debug|Any CPU + {18227628-DF90-4C47-AF3D-CC72D2EDD986}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {18227628-DF90-4C47-AF3D-CC72D2EDD986}.Proto|Any CPU.Build.0 = Release|Any CPU + {18227628-DF90-4C47-AF3D-CC72D2EDD986}.Proto|x86.ActiveCfg = Release|Any CPU + {18227628-DF90-4C47-AF3D-CC72D2EDD986}.Proto|x86.Build.0 = Release|Any CPU {18227628-DF90-4C47-AF3D-CC72D2EDD986}.Release|Any CPU.ActiveCfg = Release|Any CPU {18227628-DF90-4C47-AF3D-CC72D2EDD986}.Release|Any CPU.Build.0 = Release|Any CPU {18227628-DF90-4C47-AF3D-CC72D2EDD986}.Release|x86.ActiveCfg = Release|Any CPU @@ -564,15 +754,133 @@ Global {6D93CEBD-4540-4D96-A153-B440A661FD09}.Debug|Any CPU.Build.0 = Debug|Any CPU {6D93CEBD-4540-4D96-A153-B440A661FD09}.Debug|x86.ActiveCfg = Debug|Any CPU {6D93CEBD-4540-4D96-A153-B440A661FD09}.Debug|x86.Build.0 = Debug|Any CPU + {6D93CEBD-4540-4D96-A153-B440A661FD09}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {6D93CEBD-4540-4D96-A153-B440A661FD09}.Proto|Any CPU.Build.0 = Release|Any CPU + {6D93CEBD-4540-4D96-A153-B440A661FD09}.Proto|x86.ActiveCfg = Release|Any CPU + {6D93CEBD-4540-4D96-A153-B440A661FD09}.Proto|x86.Build.0 = Release|Any CPU {6D93CEBD-4540-4D96-A153-B440A661FD09}.Release|Any CPU.ActiveCfg = Release|Any CPU {6D93CEBD-4540-4D96-A153-B440A661FD09}.Release|Any CPU.Build.0 = Release|Any CPU {6D93CEBD-4540-4D96-A153-B440A661FD09}.Release|x86.ActiveCfg = Release|Any CPU {6D93CEBD-4540-4D96-A153-B440A661FD09}.Release|x86.Build.0 = Release|Any CPU + {4CBEE353-EB7F-4A47-988B-0070AEB4EE7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4CBEE353-EB7F-4A47-988B-0070AEB4EE7A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4CBEE353-EB7F-4A47-988B-0070AEB4EE7A}.Debug|x86.ActiveCfg = Debug|Any CPU + {4CBEE353-EB7F-4A47-988B-0070AEB4EE7A}.Debug|x86.Build.0 = Debug|Any CPU + {4CBEE353-EB7F-4A47-988B-0070AEB4EE7A}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {4CBEE353-EB7F-4A47-988B-0070AEB4EE7A}.Proto|Any CPU.Build.0 = Release|Any CPU + {4CBEE353-EB7F-4A47-988B-0070AEB4EE7A}.Proto|x86.ActiveCfg = Release|Any CPU + {4CBEE353-EB7F-4A47-988B-0070AEB4EE7A}.Proto|x86.Build.0 = Release|Any CPU + {4CBEE353-EB7F-4A47-988B-0070AEB4EE7A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4CBEE353-EB7F-4A47-988B-0070AEB4EE7A}.Release|Any CPU.Build.0 = Release|Any CPU + {4CBEE353-EB7F-4A47-988B-0070AEB4EE7A}.Release|x86.ActiveCfg = Release|Any CPU + {4CBEE353-EB7F-4A47-988B-0070AEB4EE7A}.Release|x86.Build.0 = Release|Any CPU + {6BCFED7A-3F67-4180-B307-C7D69D191D8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6BCFED7A-3F67-4180-B307-C7D69D191D8C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6BCFED7A-3F67-4180-B307-C7D69D191D8C}.Debug|x86.ActiveCfg = Debug|Any CPU + {6BCFED7A-3F67-4180-B307-C7D69D191D8C}.Debug|x86.Build.0 = Debug|Any CPU + {6BCFED7A-3F67-4180-B307-C7D69D191D8C}.Proto|Any CPU.ActiveCfg = Debug|Any CPU + {6BCFED7A-3F67-4180-B307-C7D69D191D8C}.Proto|Any CPU.Build.0 = Debug|Any CPU + {6BCFED7A-3F67-4180-B307-C7D69D191D8C}.Proto|x86.ActiveCfg = Debug|Any CPU + {6BCFED7A-3F67-4180-B307-C7D69D191D8C}.Proto|x86.Build.0 = Debug|Any CPU + {6BCFED7A-3F67-4180-B307-C7D69D191D8C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6BCFED7A-3F67-4180-B307-C7D69D191D8C}.Release|Any CPU.Build.0 = Release|Any CPU + {6BCFED7A-3F67-4180-B307-C7D69D191D8C}.Release|x86.ActiveCfg = Release|Any CPU + {6BCFED7A-3F67-4180-B307-C7D69D191D8C}.Release|x86.Build.0 = Release|Any CPU + {E93E7D28-1C6B-4E04-BE83-68428CF7E039}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E93E7D28-1C6B-4E04-BE83-68428CF7E039}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E93E7D28-1C6B-4E04-BE83-68428CF7E039}.Debug|x86.ActiveCfg = Debug|Any CPU + {E93E7D28-1C6B-4E04-BE83-68428CF7E039}.Debug|x86.Build.0 = Debug|Any CPU + {E93E7D28-1C6B-4E04-BE83-68428CF7E039}.Proto|Any CPU.ActiveCfg = Debug|Any CPU + {E93E7D28-1C6B-4E04-BE83-68428CF7E039}.Proto|Any CPU.Build.0 = Debug|Any CPU + {E93E7D28-1C6B-4E04-BE83-68428CF7E039}.Proto|x86.ActiveCfg = Debug|Any CPU + {E93E7D28-1C6B-4E04-BE83-68428CF7E039}.Proto|x86.Build.0 = Debug|Any CPU + {E93E7D28-1C6B-4E04-BE83-68428CF7E039}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E93E7D28-1C6B-4E04-BE83-68428CF7E039}.Release|Any CPU.Build.0 = Release|Any CPU + {E93E7D28-1C6B-4E04-BE83-68428CF7E039}.Release|x86.ActiveCfg = Release|Any CPU + {E93E7D28-1C6B-4E04-BE83-68428CF7E039}.Release|x86.Build.0 = Release|Any CPU + {9482211E-23D0-4BD0-9893-E4AA5559F67A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9482211E-23D0-4BD0-9893-E4AA5559F67A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9482211E-23D0-4BD0-9893-E4AA5559F67A}.Debug|x86.ActiveCfg = Debug|Any CPU + {9482211E-23D0-4BD0-9893-E4AA5559F67A}.Debug|x86.Build.0 = Debug|Any CPU + {9482211E-23D0-4BD0-9893-E4AA5559F67A}.Proto|Any CPU.ActiveCfg = Debug|Any CPU + {9482211E-23D0-4BD0-9893-E4AA5559F67A}.Proto|Any CPU.Build.0 = Debug|Any CPU + {9482211E-23D0-4BD0-9893-E4AA5559F67A}.Proto|x86.ActiveCfg = Debug|Any CPU + {9482211E-23D0-4BD0-9893-E4AA5559F67A}.Proto|x86.Build.0 = Debug|Any CPU + {9482211E-23D0-4BD0-9893-E4AA5559F67A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9482211E-23D0-4BD0-9893-E4AA5559F67A}.Release|Any CPU.Build.0 = Release|Any CPU + {9482211E-23D0-4BD0-9893-E4AA5559F67A}.Release|x86.ActiveCfg = Release|Any CPU + {9482211E-23D0-4BD0-9893-E4AA5559F67A}.Release|x86.Build.0 = Release|Any CPU + {025CE01B-98F3-4C3C-B486-2C0BD038D011}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {025CE01B-98F3-4C3C-B486-2C0BD038D011}.Debug|Any CPU.Build.0 = Debug|Any CPU + {025CE01B-98F3-4C3C-B486-2C0BD038D011}.Debug|x86.ActiveCfg = Debug|Any CPU + {025CE01B-98F3-4C3C-B486-2C0BD038D011}.Debug|x86.Build.0 = Debug|Any CPU + {025CE01B-98F3-4C3C-B486-2C0BD038D011}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {025CE01B-98F3-4C3C-B486-2C0BD038D011}.Proto|Any CPU.Build.0 = Release|Any CPU + {025CE01B-98F3-4C3C-B486-2C0BD038D011}.Proto|x86.ActiveCfg = Release|Any CPU + {025CE01B-98F3-4C3C-B486-2C0BD038D011}.Proto|x86.Build.0 = Release|Any CPU + {025CE01B-98F3-4C3C-B486-2C0BD038D011}.Release|Any CPU.ActiveCfg = Release|Any CPU + {025CE01B-98F3-4C3C-B486-2C0BD038D011}.Release|Any CPU.Build.0 = Release|Any CPU + {025CE01B-98F3-4C3C-B486-2C0BD038D011}.Release|x86.ActiveCfg = Release|Any CPU + {025CE01B-98F3-4C3C-B486-2C0BD038D011}.Release|x86.Build.0 = Release|Any CPU + {04C59F6E-1C76-4F6A-AC21-2EA7F296A1B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {04C59F6E-1C76-4F6A-AC21-2EA7F296A1B8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {04C59F6E-1C76-4F6A-AC21-2EA7F296A1B8}.Debug|x86.ActiveCfg = Debug|Any CPU + {04C59F6E-1C76-4F6A-AC21-2EA7F296A1B8}.Debug|x86.Build.0 = Debug|Any CPU + {04C59F6E-1C76-4F6A-AC21-2EA7F296A1B8}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {04C59F6E-1C76-4F6A-AC21-2EA7F296A1B8}.Proto|Any CPU.Build.0 = Release|Any CPU + {04C59F6E-1C76-4F6A-AC21-2EA7F296A1B8}.Proto|x86.ActiveCfg = Release|Any CPU + {04C59F6E-1C76-4F6A-AC21-2EA7F296A1B8}.Proto|x86.Build.0 = Release|Any CPU + {04C59F6E-1C76-4F6A-AC21-2EA7F296A1B8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {04C59F6E-1C76-4F6A-AC21-2EA7F296A1B8}.Release|Any CPU.Build.0 = Release|Any CPU + {04C59F6E-1C76-4F6A-AC21-2EA7F296A1B8}.Release|x86.ActiveCfg = Release|Any CPU + {04C59F6E-1C76-4F6A-AC21-2EA7F296A1B8}.Release|x86.Build.0 = Release|Any CPU + {1D8D778E-8D6B-4A8C-88A6-BE578988FBE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1D8D778E-8D6B-4A8C-88A6-BE578988FBE8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1D8D778E-8D6B-4A8C-88A6-BE578988FBE8}.Debug|x86.ActiveCfg = Debug|Any CPU + {1D8D778E-8D6B-4A8C-88A6-BE578988FBE8}.Debug|x86.Build.0 = Debug|Any CPU + {1D8D778E-8D6B-4A8C-88A6-BE578988FBE8}.Proto|Any CPU.ActiveCfg = Proto|Any CPU + {1D8D778E-8D6B-4A8C-88A6-BE578988FBE8}.Proto|Any CPU.Build.0 = Proto|Any CPU + {1D8D778E-8D6B-4A8C-88A6-BE578988FBE8}.Proto|x86.ActiveCfg = Proto|Any CPU + {1D8D778E-8D6B-4A8C-88A6-BE578988FBE8}.Proto|x86.Build.0 = Proto|Any CPU + {1D8D778E-8D6B-4A8C-88A6-BE578988FBE8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1D8D778E-8D6B-4A8C-88A6-BE578988FBE8}.Release|Any CPU.Build.0 = Release|Any CPU + {1D8D778E-8D6B-4A8C-88A6-BE578988FBE8}.Release|x86.ActiveCfg = Release|Any CPU + {1D8D778E-8D6B-4A8C-88A6-BE578988FBE8}.Release|x86.Build.0 = Release|Any CPU + {C32806E0-71C2-40E4-AEC4-517F73F6A18A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C32806E0-71C2-40E4-AEC4-517F73F6A18A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C32806E0-71C2-40E4-AEC4-517F73F6A18A}.Debug|x86.ActiveCfg = Debug|Any CPU + {C32806E0-71C2-40E4-AEC4-517F73F6A18A}.Debug|x86.Build.0 = Debug|Any CPU + {C32806E0-71C2-40E4-AEC4-517F73F6A18A}.Proto|Any CPU.ActiveCfg = Proto|Any CPU + {C32806E0-71C2-40E4-AEC4-517F73F6A18A}.Proto|Any CPU.Build.0 = Proto|Any CPU + {C32806E0-71C2-40E4-AEC4-517F73F6A18A}.Proto|x86.ActiveCfg = Proto|Any CPU + {C32806E0-71C2-40E4-AEC4-517F73F6A18A}.Proto|x86.Build.0 = Proto|Any CPU + {C32806E0-71C2-40E4-AEC4-517F73F6A18A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C32806E0-71C2-40E4-AEC4-517F73F6A18A}.Release|Any CPU.Build.0 = Release|Any CPU + {C32806E0-71C2-40E4-AEC4-517F73F6A18A}.Release|x86.ActiveCfg = Release|Any CPU + {C32806E0-71C2-40E4-AEC4-517F73F6A18A}.Release|x86.Build.0 = Release|Any CPU + {7B345E51-F2C0-4D4B-B0E0-05432EC9D5E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7B345E51-F2C0-4D4B-B0E0-05432EC9D5E1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7B345E51-F2C0-4D4B-B0E0-05432EC9D5E1}.Debug|x86.ActiveCfg = Debug|Any CPU + {7B345E51-F2C0-4D4B-B0E0-05432EC9D5E1}.Debug|x86.Build.0 = Debug|Any CPU + {7B345E51-F2C0-4D4B-B0E0-05432EC9D5E1}.Proto|Any CPU.ActiveCfg = Proto|Any CPU + {7B345E51-F2C0-4D4B-B0E0-05432EC9D5E1}.Proto|Any CPU.Build.0 = Proto|Any CPU + {7B345E51-F2C0-4D4B-B0E0-05432EC9D5E1}.Proto|x86.ActiveCfg = Proto|Any CPU + {7B345E51-F2C0-4D4B-B0E0-05432EC9D5E1}.Proto|x86.Build.0 = Proto|Any CPU + {7B345E51-F2C0-4D4B-B0E0-05432EC9D5E1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7B345E51-F2C0-4D4B-B0E0-05432EC9D5E1}.Release|Any CPU.Build.0 = Release|Any CPU + {7B345E51-F2C0-4D4B-B0E0-05432EC9D5E1}.Release|x86.ActiveCfg = Release|Any CPU + {7B345E51-F2C0-4D4B-B0E0-05432EC9D5E1}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution + {3F044931-FB83-4433-B934-AE66AB27B278} = {F7876C9B-FB6A-4EFB-B058-D6967DB75FB2} + {F7876C9B-FB6A-4EFB-B058-D6967DB75FB2} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D} + {F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D} + {D086C8C6-D00D-4C3B-9AB2-A4286C9F5922} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D} + {35636A82-401A-4C3A-B2AB-EB7DC5E9C268} = {F7876C9B-FB6A-4EFB-B058-D6967DB75FB2} + {CCAB6E50-34C6-42AF-A6B0-567C29FCD91B} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D} {991DCF75-C2EB-42B6-9A0D-AA1D2409D519} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D} {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3} = {3881429D-A97A-49EB-B7AE-A82BA5FE9C77} {59ADCE46-9740-4079-834D-9A03A3494EBC} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D} @@ -584,7 +892,6 @@ Global {B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7} = {CCAB6E50-34C6-42AF-A6B0-567C29FCD91B} {FCFB214C-462E-42B3-91CA-FC557EFEE74F} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D} {6196B0F8-CAEA-4CF1-AF82-1B520F77FE44} = {CCAB6E50-34C6-42AF-A6B0-567C29FCD91B} - {C9B1D3F5-4971-4F04-9C26-37E3AC809AB4} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D} {FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7} = {F7876C9B-FB6A-4EFB-B058-D6967DB75FB2} {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F} = {F7876C9B-FB6A-4EFB-B058-D6967DB75FB2} {DA39AD38-4A58-47BF-9215-E49768295169} = {3F044931-FB83-4433-B934-AE66AB27B278} @@ -605,14 +912,8 @@ Global {8B3E283D-B5FE-4055-9D80-7E3A32F3967B} = {B8DDA694-7939-42E3-95E5-265C2217C142} {D0E98C0D-490B-4C61-9329-0862F6E87645} = {B8DDA694-7939-42E3-95E5-265C2217C142} {C163E892-5BF7-4B59-AA99-B0E8079C67C4} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449} - {3F044931-FB83-4433-B934-AE66AB27B278} = {F7876C9B-FB6A-4EFB-B058-D6967DB75FB2} {A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449} {88E2D422-6852-46E3-A740-83E391DC7973} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449} - {F7876C9B-FB6A-4EFB-B058-D6967DB75FB2} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D} - {604F0DAA-2D33-48DD-B162-EDF0B672803D} = {C9B1D3F5-4971-4F04-9C26-37E3AC809AB4} - {01678CDA-A11F-4DEE-9344-2EDF91CF1AE7} = {C9B1D3F5-4971-4F04-9C26-37E3AC809AB4} - {2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4} = {C9B1D3F5-4971-4F04-9C26-37E3AC809AB4} - {F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D} {6BA13AA4-C25F-480F-856B-8E8000299A72} = {F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA} {12AC2813-E895-4AAA-AE6C-94E21DA09F64} = {F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA} {A333B85A-DC23-49B6-9797-B89A7951E92D} = {F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA} @@ -621,18 +922,25 @@ Global {1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6} = {F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA} {4239EFEA-E746-446A-BF7A-51FCBAB13946} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449} {2E60864A-E3FF-4BCC-810F-DC7C34E6B236} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449} - {D086C8C6-D00D-4C3B-9AB2-A4286C9F5922} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D} {E7FA3A71-51AF-4FCA-9C2F-7C853E515903} = {D086C8C6-D00D-4C3B-9AB2-A4286C9F5922} {C4586A06-1402-48BC-8E35-A1B8642F895B} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D} {887630A3-4B1D-40EA-B8B3-2D842E9C40DB} = {35636A82-401A-4C3A-B2AB-EB7DC5E9C268} - {35636A82-401A-4C3A-B2AB-EB7DC5E9C268} = {F7876C9B-FB6A-4EFB-B058-D6967DB75FB2} {FF76BD3C-5E0A-4752-B6C3-044F6E15719B} = {35636A82-401A-4C3A-B2AB-EB7DC5E9C268} {0385564F-07B4-4264-AB8A-17C393E9140C} = {F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA} {400FAB03-786E-40CC-85A8-04B0C2869B14} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449} {B0689A4E-07D8-494D-A0C8-791CB1D74E54} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449} {18227628-DF90-4C47-AF3D-CC72D2EDD986} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D} - {CCAB6E50-34C6-42AF-A6B0-567C29FCD91B} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D} {6D93CEBD-4540-4D96-A153-B440A661FD09} = {F7876C9B-FB6A-4EFB-B058-D6967DB75FB2} + {4CBEE353-EB7F-4A47-988B-0070AEB4EE7A} = {6235B3AF-774D-4EA1-8F37-789E767F6368} + {6BCFED7A-3F67-4180-B307-C7D69D191D8C} = {6235B3AF-774D-4EA1-8F37-789E767F6368} + {E93E7D28-1C6B-4E04-BE83-68428CF7E039} = {6235B3AF-774D-4EA1-8F37-789E767F6368} + {9482211E-23D0-4BD0-9893-E4AA5559F67A} = {6235B3AF-774D-4EA1-8F37-789E767F6368} + {025CE01B-98F3-4C3C-B486-2C0BD038D011} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D} + {04C59F6E-1C76-4F6A-AC21-2EA7F296A1B8} = {647810D0-5307-448F-99A2-E83917010DAE} + {BED74F9E-A0D2-48E2-9EE7-449832100487} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D} + {1D8D778E-8D6B-4A8C-88A6-BE578988FBE8} = {BED74F9E-A0D2-48E2-9EE7-449832100487} + {C32806E0-71C2-40E4-AEC4-517F73F6A18A} = {BED74F9E-A0D2-48E2-9EE7-449832100487} + {7B345E51-F2C0-4D4B-B0E0-05432EC9D5E1} = {BED74F9E-A0D2-48E2-9EE7-449832100487} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {48EDBBBE-C8EE-4E3C-8B19-97184A487B37} diff --git a/build.cmd b/build.cmd deleted file mode 100644 index ab85f177c5daeff932c0ebc52b6c312d7404e926..0000000000000000000000000000000000000000 --- a/build.cmd +++ /dev/null @@ -1,1087 +0,0 @@ -rem Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. -@if "%_echo%"=="" echo off -setlocal enableDelayedExpansion - -:ARGUMENTS_VALIDATION -if /I "%1" == "--help" (goto :USAGE) -if /I "%1" == "/help" (goto :USAGE) -if /I "%1" == "/h" (goto :USAGE) -if /I "%1" == "/?" (goto :USAGE) -goto :ARGUMENTS_OK - - -:USAGE - -echo Build and run a subset of test suites -echo. -echo Usage: -echo. -echo build.cmd ^ -echo ^ -echo ^ -echo ^ -echo ^ -echo ^ -echo ^ -echo ^ -echo. -echo No arguments default to default", meaning this (no testing) -echo. -echo build.cmd net40 -echo. -echo.Other examples: -echo. -echo. build.cmd net40 (build compiler for .NET Framework) -echo. build.cmd coreclr (build compiler for .NET Core) -echo. build.cmd buildfromsource (build compiler for .NET Core -- Verify that buildfromsource works) -echo. build.cmd vs (build Visual Studio IDE Tools) -echo. build.cmd all (build everything) -echo. build.cmd test (build and test default targets) -echo. build.cmd net40 test (build and test compiler for .NET Framework) -echo. build.cmd coreclr test (build and test compiler for .NET Core) -echo. build.cmd vs test (build and test Visual Studio IDE Tools) -echo. build.cmd all test (build and test everything) -echo. build.cmd nobuild test include Conformance (run only tests marked with Conformance category) -echo. build.cmd nobuild test include Expensive (run only tests marked with Expensive category) -echo. -goto :success - -:ARGUMENTS_OK - -rem disable setup build by setting FSC_BUILD_SETUP=0 -if /i "%FSC_BUILD_SETUP%" == "" (set FSC_BUILD_SETUP=1) - -rem by default don't build coreclr lkg. However allow configuration by setting an environment variable : set BUILD_PROTO_WITH_CORECLR_LKG = 1 -if "%BUILD_PROTO_WITH_CORECLR_LKG%" =="" (set BUILD_PROTO_WITH_CORECLR_LKG=0) - -set BUILD_PROTO=0 -set BUILD_PHASE=1 -set BUILD_NET40=0 -set BUILD_NET40_FSHARP_CORE=0 -set BUILD_CORECLR=0 -set BUILD_FROMSOURCE=0 -set BUILD_VS=0 -set BUILD_FCS=0 -set BUILD_CONFIG=Release -set BUILD_DIAG= -set BUILD_PUBLICSIGN=0 -set BUILD_FSHARP_PROJ=1 - -set TEST_NET40_COMPILERUNIT_SUITE=0 -set TEST_NET40_COREUNIT_SUITE=0 -set TEST_NET40_FSHARP_SUITE=0 -set TEST_NET40_FSHARPQA_SUITE=0 -set TEST_CORECLR_COREUNIT_SUITE=0 -set TEST_CORECLR_FSHARP_SUITE=0 -set TEST_VS_IDEUNIT_SUITE=0 -set TEST_FCS=0 -set TEST_END_2_END=0 -set INCLUDE_TEST_TAGS= - -set COPY_FSCOMP_RESOURCE_FOR_BUILD_FROM_SOURCES=0 - -set SIGN_TYPE=%PB_SIGNTYPE% - -REM ------------------ Parse all arguments ----------------------- - -set _autoselect=1 -set _autoselect_tests=0 -set no_test=0 -set /a counter=0 -for /l %%x in (1 1 9) do ( - set /a counter=!counter!+1 - set /a nextcounter=!counter!+1 - call :PROCESS_ARG %%!counter! %%!nextcounter! "!counter!" -) -for %%i in (%BUILD_FSC_DEFAULT%) do ( call :PROCESS_ARG %%i ) - -REM apply defaults - -if /i "%_buildexit%" == "1" ( - exit /B %_buildexitvalue% -) - -if /i "%_autoselect%" == "1" ( - set BUILD_NET40_FSHARP_CORE=1 - set BUILD_NET40=1 -) - -if /i "%_autoselect_tests%" == "1" ( - if /i "%BUILD_NET40_FSHARP_CORE%" == "1" ( - set BUILD_NUGET=1 - set TEST_NET40_COREUNIT_SUITE=1 - ) - - if /i "%BUILD_NET40%" == "1" ( - set BUILD_NUGET=1 - set TEST_NET40_COMPILERUNIT_SUITE=1 - set TEST_NET40_COREUNIT_SUITE=1 - set TEST_NET40_FSHARP_SUITE=1 - set TEST_NET40_FSHARPQA_SUITE=1 - ) - - if /i "%BUILD_FCS%" == "1" ( - set TEST_FCS=1 - ) - - if /i "%BUILD_CORECLR%" == "1" ( - set TEST_CORECLR_FSHARP_SUITE=1 - set TEST_CORECLR_COREUNIT_SUITE=1 - ) - - if /i "%BUILD_VS%" == "1" ( - set TEST_VS_IDEUNIT_SUITE=1 - ) -) - -goto :MAIN - -REM ------------------ Procedure to parse one argument ----------------------- - -:PROCESS_ARG -set ARG=%~1 -set ARG2=%~2 -if "%ARG%" == "1" if "%2" == "" (set ARG=default) -if "%2" == "" if not "%ARG%" == "default" goto :EOF - -rem Do no work -if /i "%ARG%" == "none" ( - set _buildexit=1 - set _buildexitvalue=0 -) - -if /i "%ARG%" == "net40-lib" ( - set _autoselect=0 - set BUILD_NET40_FSHARP_CORE=1 -) - -if /i "%ARG%" == "net40" ( - set _autoselect=0 - set BUILD_NET40_FSHARP_CORE=1 - set BUILD_NET40=1 - set COPY_FSCOMP_RESOURCE_FOR_BUILD_FROM_SOURCES=1 -) - -if /i "%ARG%" == "coreclr" ( - set _autoselect=0 - set BUILD_CORECLR=1 - set BUILD_FROMSOURCE=1 -) - -if /i "%ARG%" == "buildfromsource" ( - set _autoselect=0 - set BUILD_PROTO_WITH_CORECLR_LKG=1 - set BUILD_FROMSOURCE=1 -) - -if /i "%ARG%" == "vs" ( - set _autoselect=0 - set BUILD_NET40=1 - set BUILD_VS=1 - set COPY_FSCOMP_RESOURCE_FOR_BUILD_FROM_SOURCES=1 -) - -if /i "%ARG%" == "fcs" ( - set _autoselect=0 - set BUILD_FCS=1 -) - -if /i "%ARG%" == "vstest" ( - set TEST_VS_IDEUNIT_SUITE=1 -) - -if /i "%ARG%" == "nobuild" ( - set BUILD_PHASE=0 -) -if /i "%ARG%" == "all" ( - set _autoselect=0 - set COPY_FSCOMP_RESOURCE_FOR_BUILD_FROM_SOURCES=1 - set BUILD_PROTO=1 - set BUILD_PROTO_WITH_CORECLR_LKG=1 - set BUILD_NET40=1 - set BUILD_CORECLR=1 - set BUILD_VS=1 - set BUILD_FCS=1 - set BUILD_SETUP=%FSC_BUILD_SETUP% - set BUILD_NUGET=1 - set CI=1 -) - -if /i "%ARG%" == "microbuild" ( - set _autoselect=0 - set BUILD_PROTO=1 - set BUILD_NET40=1 - set BUILD_NET40_FSHARP_CORE=1 - set BUILD_PROTO_WITH_CORECLR_LKG=1 - set BUILD_CORECLR=1 - set BUILD_VS=1 - set BUILD_SETUP=%FSC_BUILD_SETUP% - set BUILD_NUGET=1 - set BUILD_MICROBUILD=1 - - set TEST_NET40_COMPILERUNIT_SUITE=1 - set TEST_NET40_COREUNIT_SUITE=1 - set TEST_NET40_FSHARP_SUITE=1 - set TEST_NET40_FSHARPQA_SUITE=1 - set TEST_CORECLR_COREUNIT_SUITE=0 - set TEST_CORECLR_FSHARP_SUITE=0 - set TEST_VS_IDEUNIT_SUITE=1 - set CI=1 - - REM redirecting TEMP directories - set TEMP=%~dp0artifacts\tmp - set TMP=%~dp0artifacts\tmp -) - -if /i "%ARG%" == "nuget" ( - set _autoselect=0 - - set BUILD_PROTO=1 - set BUILD_NET40_FSHARP_CORE=1 - set BUILD_NET40=1 - set BUILD_CORECLR=1 - set BUILD_NUGET=1 -) - -REM These divide "ci" into three chunks which can be done in parallel -if /i "%ARG%" == "ci_part1" ( - set _autoselect=0 - - REM what we do - build and test Visual F# Tools, including setup and nuget - set BUILD_PROTO=1 - set BUILD_NUGET=1 - set BUILD_NET40=1 - set BUILD_NET40_FSHARP_CORE=1 - set BUILD_VS=1 - set TEST_VS_IDEUNIT_SUITE=1 - set BUILD_CORECLR=1 - set BUILD_SETUP=%FSC_BUILD_SETUP% - set CI=1 -) - -if /i "%ARG%" == "ci_part2" ( - set _autoselect=0 - - REM what we do - test F# on .NET Framework - set BUILD_PROTO=1 - set BUILD_NET40=1 - set BUILD_NET40_FSHARP_CORE=1 - set BUILD_NUGET=1 - set TEST_NET40_COMPILERUNIT_SUITE=1 - set TEST_NET40_COREUNIT_SUITE=1 - set TEST_NET40_FSHARPQA_SUITE=1 - set TEST_NET40_FSHARP_SUITE=1 - set CI=1 -) - -if /i "%ARG%" == "ci_part3" ( - set _autoselect=0 - - REM what we do: test F# on Core CLR: nuget requires coreclr, fcs requires coreclr - set BUILD_PROTO_WITH_CORECLR_LKG=1 - set BUILD_PROTO=1 - set BUILD_CORECLR=1 - set BUILD_NET40_FSHARP_CORE=1 - set BUILD_NET40=1 - set TEST_CORECLR_FSHARP_SUITE=1 - set TEST_CORECLR_COREUNIT_SUITE=1 - set CI=1 -) - -if /i "%ARG%" == "ci_part4" ( - set _autoselect=0 - - REM what we do: test F# on Core CLR: nuget requires coreclr, fcs requires coreclr - set BUILD_PROTO_WITH_CORECLR_LKG=1 - set BUILD_PROTO=1 - set BUILD_CORECLR=1 - set BUILD_NET40_FSHARP_CORE=1 - set BUILD_NET40=1 - set BUILD_NUGET=1 - set BUILD_FCS=1 - set TEST_FCS=1 - set CI=1 -) - -if /i "%ARG%" == "end-2-end" ( - set BUILD_PROTO=1 - set BUILD_CORECLR=1 - set BUILD_NET40_FSHARP_CORE=1 - set BUILD_NET40=1 - set TEST_END_2_END=1 -) - -if /i "%ARG%" == "proto" ( - set _autoselect=0 - set BUILD_PROTO=1 -) - -if /i "%ARG%" == "diag" ( - set BUILD_DIAG=/v:detailed - if not defined APPVEYOR ( set BUILD_LOG=fsharp_build_log.log ) -) - -if /i "%ARG%" == "debug" ( - set BUILD_CONFIG=Debug -) - -if /i "%ARG%" == "release" ( - set BUILD_CONFIG=Release -) - -if /i "%ARG%" == "test-sign" ( - set SIGN_TYPE=test -) - -if /i "%ARG%" == "real-sign" ( - set SIGN_TYPE=real -) - -if /i "%ARG%" == "test" ( - set _autoselect_tests=1 -) - -if /i "%ARG%" == "no-test" ( - set no_test=1 -) - -if /i "%ARG%" == "include" ( - set /a counter=!counter!+1 - if "!INCLUDE_TEST_TAGS!" == "" ( set INCLUDE_TEST_TAGS=%ARG2% ) else (set INCLUDE_TEST_TAGS=%ARG2%;!INCLUDE_TEST_TAGS! ) -) - -if /i "%ARG%" == "test-all" ( - set _autoselect=0 - set BUILD_PROTO=1 - set BUILD_PROTO_WITH_CORECLR_LKG=1 - set BUILD_NET40=1 - set BUILD_NET40_FSHARP_CORE=1 - set BUILD_CORECLR=1 - set BUILD_VS=1 - set BUILD_FCS=1 - set BUILD_SETUP=%FSC_BUILD_SETUP% - set BUILD_NUGET=1 - - set TEST_NET40_COMPILERUNIT_SUITE=1 - set TEST_NET40_COREUNIT_SUITE=1 - set TEST_NET40_FSHARP_SUITE=1 - set TEST_NET40_FSHARPQA_SUITE=1 - set TEST_CORECLR_COREUNIT_SUITE=1 - set TEST_VS_IDEUNIT_SUITE=1 - set TEST_FCS=1 - set TEST_END_2_END=1 -) - -if /i "%ARG%" == "test-net40-fsharpqa" ( - set _autoselect=0 - set BUILD_NET40=1 - set BUILD_NET40_FSHARP_CORE=1 - set TEST_NET40_FSHARPQA_SUITE=1 -) - -if /i "%ARG%" == "test-compiler-unit" ( - set _autoselect=0 - set BUILD_NET40=1 - set BUILD_NET40_FSHARP_CORE=1 - set TEST_NET40_COMPILERUNIT_SUITE=1 -) - -if /i "%ARG%" == "test-net40-ideunit" ( - set _autoselect=0 - set BUILD_NET40=1 - set BUILD_NET40_FSHARP_CORE=1 - set BUILD_VS=1 - set TEST_VS_IDEUNIT_SUITE=1 -) - -if /i "%ARG%" == "test-net40-coreunit" ( - set _autoselect=0 - set BUILD_NET40_FSHARP_CORE=1 - set BUILD_NUGET=1 - set TEST_NET40_COREUNIT_SUITE=1 -) - -if /i "%ARG%" == "test-coreclr-coreunit" ( - set _autoselect=0 - set BUILD_PROTO_WITH_CORECLR_LKG=1 - set BUILD_CORECLR=1 - set BUILD_NUGET=1 - set TEST_CORECLR_COREUNIT_SUITE=1 -) - -if /i "%ARG%" == "test-net40-fsharp" ( - set _autoselect=0 - set BUILD_NET40=1 - set BUILD_NET40_FSHARP_CORE=1 - set TEST_NET40_FSHARP_SUITE=1 -) - -if /i "%ARG%" == "test-fcs" ( - set _autoselect=0 - set BUILD_FCS=1 - set TEST_FCS=1 -) - -if /i "%ARG%" == "test-coreclr-fsharp" ( - set _autoselect=0 - set BUILD_NET40=1 - set BUILD_NET40_FSHARP_CORE=1 - set BUILD_PROTO_WITH_CORECLR_LKG=1 - set BUILD_CORECLR=1 - set TEST_CORECLR_FSHARP_SUITE=1 -) - -if /i "%ARG%" == "publicsign" ( - set BUILD_PUBLICSIGN=1 -) - -if /i "%ARG%" == "init" ( - set BUILD_PROTO_WITH_CORECLR_LKG=1 -) - -goto :EOF -:: Note: "goto :EOF" returns from an in-batchfile "call" command -:: in preference to returning from the entire batch file. - -REM ------------------ Report config ----------------------- - -:MAIN - -REM after this point, ARG variable should not be used, use only BUILD_* or TEST_* - -REM all PB_* variables override any settings - -REM if the `PB_SKIPTESTS` variable is set to 'true' then no tests should be built or run, even if explicitly specified -if /i "%PB_SKIPTESTS%" == "true" ( - set TEST_NET40_COMPILERUNIT_SUITE=0 - set TEST_NET40_COREUNIT_SUITE=0 - set TEST_NET40_FSHARP_SUITE=0 - set TEST_NET40_FSHARPQA_SUITE=0 - set TEST_CORECLR_COREUNIT_SUITE=0 - set TEST_CORECLR_FSHARP_SUITE=0 - set TEST_VS_IDEUNIT_SUITE=0 -) - -if /i "%TEST_NET40_FSHARP_SUITE" == "1" ( - if /i "%TEST_CORECLR_FSHARP_SUITE%" == "1" ( - TEST_END_2_END=1 - ) -) - -rem Decide if Proto need building -if NOT EXIST "%~dp0artifacts\bin\fsc\Proto\net46\fsc.exe" ( - set BUILD_PROTO=1 -) - -rem decide if FSharp.Proj needs building -if "%BUILD_NET40%"=="0" if "%BUILD_NET40_FSHARP_CORE%"=="0" if "%BUILD_CORECLR%"=="0" if "%BUILD_VS%"=="0" if "%BUILD_FCS%"=="0" if "%TEST_NET40_COMPILERUNIT_SUITE%"=="0" if "%TEST_NET40_COREUNIT_SUITE%"=="0" if "%TEST_NET40_FSHARP_SUITE%"=="0" if "%TEST_NET40_FSHARPQA_SUITE%"=="0" if "%TEST_CORECLR_COREUNIT_SUITE%"=="0" if "%TEST_CORECLR_FSHARP_SUITE%"=="0" if "%TEST_VS_IDEUNIT_SUITE%"=="0" if "%TEST_FCS%"=="0" if "%TEST_END_2_END%"=="0" if "%COPY_FSCOMP_RESOURCE_FOR_BUILD_FROM_SOURCES%"=="0" ( - set BUILD_FSHARP_PROJ=0 -) - -rem -rem This stops the dotnet cli from hunting around and -rem finding the highest possible dotnet sdk version to use. -rem -rem description of dotnet lookup here: -rem https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet?tabs=netcore2x -set DOTNET_MULTILEVEL_LOOKUP=false - -echo Build/Tests configuration: -echo. -echo BUILD_PROTO=%BUILD_PROTO% -echo BUILD_PROTO_WITH_CORECLR_LKG=%BUILD_PROTO_WITH_CORECLR_LKG% -echo BUILD_NET40=%BUILD_NET40% -echo BUILD_NET40_FSHARP_CORE=%BUILD_NET40_FSHARP_CORE% -echo BUILD_CORECLR=%BUILD_CORECLR% -echo BUILD_VS=%BUILD_VS% -echo BUILD_FCS=%BUILD_FCS% -echo BUILD_SETUP=%BUILD_SETUP% -echo BUILD_NUGET=%BUILD_NUGET% -echo BUILD_CONFIG=%BUILD_CONFIG% -echo BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN% -echo BUILD_MICROBUILD=%BUILD_MICROBUILD% -echo BUILD_FROMSOURCE=%BUILD_FROMSOURCE% -echo BUILD_FSHARP_PROJ=%BUILD_FSHARP_PROJ% -echo. -echo PB_SKIPTESTS=%PB_SKIPTESTS% -echo PB_RESTORESOURCE=%PB_RESTORESOURCE% -echo. -echo SIGN_TYPE=%SIGN_TYPE% -echo. -echo COPY_FSCOMP_RESOURCE_FOR_BUILD_FROM_SOURCES=%COPY_FSCOMP_RESOURCE_FOR_BUILD_FROM_SOURCES% -echo. -echo TEST_FCS=%TEST_FCS% -echo TEST_NET40_COMPILERUNIT_SUITE=%TEST_NET40_COMPILERUNIT_SUITE% -echo TEST_NET40_COREUNIT_SUITE=%TEST_NET40_COREUNIT_SUITE% -echo TEST_NET40_FSHARP_SUITE=%TEST_NET40_FSHARP_SUITE% -echo TEST_NET40_FSHARPQA_SUITE=%TEST_NET40_FSHARPQA_SUITE% -echo TEST_CORECLR_COREUNIT_SUITE=%TEST_CORECLR_COREUNIT_SUITE% -echo TEST_CORECLR_FSHARP_SUITE=%TEST_CORECLR_FSHARP_SUITE% -echo TEST_VS_IDEUNIT_SUITE=%TEST_VS_IDEUNIT_SUITE% -echo INCLUDE_TEST_TAGS=%INCLUDE_TEST_TAGS% -echo TEMP=%TEMP% - -:: load Visual Studio 2017 developer command prompt if VS150COMNTOOLS is not set - -:: If this is not set, VsDevCmd.bat will change %cd% to [USERPROFILE]\source, causing the build to fail. -SET VSCMD_START_DIR=%cd% - -:: Try find installation path of VS2017 with vswhere.exe -if "%VS150COMNTOOLS%" EQU "" if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\" ( - for /f "usebackq delims=" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -prerelease -property installationPath`) do set VS_INSTALLATION_PATH=%%i -) - -if "%VS_INSTALLATION_PATH%" NEQ "" ( - call "%VS_INSTALLATION_PATH%\Common7\Tools\VsDevCmd.bat" -) - -:: If there's no installation of VS2017 or VS2017 Preview, use the build tools -if "%VS150COMNTOOLS%" EQU "" if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\VsDevCmd.bat" ( - call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\VsDevCmd.bat" -) - -echo. -echo Environment -set -echo. -echo. - -echo ---------------- Done with arguments, starting preparation ----------------- -rem set TargetFrameworkSDKToolsDirectory --- needed for sdk to find al.exe. -if not "%TargetFrameworkSDKToolsDirectory%" == "" ( goto have_TargetFrameworkSDKToolsDirectory ) -set TargetFrameworkSDKToolsDirectory=%WindowsSDK_ExecutablePath_x64% - -if not "%TargetFrameworkSDKToolsDirectory%" == "" ( goto have_TargetFrameworkSDKToolsDirectory ) -set TargetFrameworkSDKToolsDirectory=%WindowsSDK_ExecutablePath_x86% - -:have_TargetFrameworkSDKToolsDirectory - -if "%RestorePackages%"=="" ( - set RestorePackages=true -) - -@echo VSSDKToolsPath: %VSSDKToolsPath% -@echo VSSDKIncludes: %VSSDKIncludes% -@echo TargetFrameworkSDKToolsDirectory: %TargetFrameworkSDKToolsDirectory% - -@call src\update.cmd signonly - -:: Check prerequisites -if not "%VisualStudioVersion%" == "" goto vsversionset -if exist "%VS160COMNTOOLS%\..\ide\devenv.exe" set VisualStudioVersion=16.0 -if not "%VisualStudioVersion%" == "" goto vsversionset - -if not "%VisualStudioVersion%" == "" goto vsversionset -if exist "%VS150COMNTOOLS%\..\ide\devenv.exe" set VisualStudioVersion=15.0 -if not "%VisualStudioVersion%" == "" goto vsversionset - -if not "%VisualStudioVersion%" == "" goto vsversionset -if exist "%VS150COMNTOOLS%\..\..\ide\devenv.exe" set VisualStudioVersion=15.0 -if not "%VisualStudioVersion%" == "" goto vsversionset - -if exist "%VS140COMNTOOLS%\..\ide\devenv.exe" set VisualStudioVersion=14.0 -if exist "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\common7\ide\devenv.exe" set VisualStudioVersion=14.0 -if exist "%ProgramFiles%\Microsoft Visual Studio 14.0\common7\ide\devenv.exe" set VisualStudioVersion=14.0 -if not "%VisualStudioVersion%" == "" goto vsversionset - -if exist "%VS120COMNTOOLS%\..\ide\devenv.exe" set VisualStudioVersion=12.0 -if exist "%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\common7\ide\devenv.exe" set VisualStudioVersion=12.0 -if exist "%ProgramFiles%\Microsoft Visual Studio 12.0\common7\ide\devenv.exe" set VisualStudioVersion=12.0 - -:vsversionset -if "%VisualStudioVersion%" == "" echo Error: Could not find an installation of Visual Studio && goto :failure - -if exist "%VS160COMNTOOLS%\..\..\MSBuild\Current\Bin\MSBuild.exe" ( - set _msbuildexe="%VS160COMNTOOLS%\..\..\MSBuild\Current\Bin\MSBuild.exe" - goto :havemsbuild -) -if exist "%VS150COMNTOOLS%\..\..\MSBuild\15.0\Bin\MSBuild.exe" ( - set _msbuildexe="%VS150COMNTOOLS%\..\..\MSBuild\15.0\Bin\MSBuild.exe" - goto :havemsbuild -) -if exist "%ProgramFiles(x86)%\MSBuild\%VisualStudioVersion%\Bin\MSBuild.exe" ( - set _msbuildexe="%ProgramFiles(x86)%\MSBuild\%VisualStudioVersion%\Bin\MSBuild.exe" - goto :havemsbuild -) -if exist "%ProgramFiles%\MSBuild\%VisualStudioVersion%\Bin\MSBuild.exe" ( - set _msbuildexe="%ProgramFiles%\MSBuild\%VisualStudioVersion%\Bin\MSBuild.exe" - goto :havemsbuild -) -echo Error: Could not find MSBuild.exe. && goto :failure -goto :eof - -:havemsbuild -set _nrswitch=/nr:false - -set msbuildflags=%_nrswitch% /nologo /clp:Summary /v:minimal -set _ngenexe="%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\ngen.exe" -if not exist %_ngenexe% echo Error: Could not find ngen.exe. && goto :failure - -echo ---------------- Done with prepare, starting package restore ---------------- - -:: Restore the Tools directory -call "%~dp0init-tools.cmd" -set _dotnetexe=%~dp0artifacts\toolset\dotnet\dotnet.exe -set path=%~dp0artifacts\toolset\dotnet;%path% - -if not "%PB_PackageVersionPropsUrl%" == "" ( - echo ----------- do dependency uptake check ----------- - - set dependencyUptakeDir=%~dp0artifacts\dependencyUptake - if not exist "!dependencyUptakeDir!" mkdir "!dependencyUptakeDir!" - - :: download package version overrides - echo powershell -noprofile -executionPolicy RemoteSigned -command "Invoke-WebRequest -Uri '%PB_PackageVersionPropsUrl%' -OutFile '!dependencyUptakeDir!\PackageVersions.props'" - powershell -noprofile -executionPolicy RemoteSigned -command "Invoke-WebRequest -Uri '%PB_PackageVersionPropsUrl%' -OutFile '!dependencyUptakeDir!\PackageVersions.props'" - if ERRORLEVEL 1 echo Error downloading package version properties && goto :failure -) - -if "%RestorePackages%" == "true" ( - if "%BUILD_FCS%" == "1" ( - cd fcs - .paket\paket.exe restore - cd.. - @if ERRORLEVEL 1 echo Error: Paket restore failed && goto :failure - ) -) - -echo ---------------- Done with package restore, verify buildfrom source --------------- -if "%BUILD_PROTO_WITH_CORECLR_LKG%" == "1" ( - pushd src - call buildfromsource.cmd - @if ERRORLEVEL 1 echo Error: buildfromsource.cmd failed && goto :failure - popd -) - -echo ---------------- Done with package restore, starting proto ------------------------ -set logdir=%~dp0artifacts\log\%BUILD_CONFIG% -if not exist "!logdir!" mkdir "!logdir!" - -rem Build Proto -if "%BUILD_PROTO%" == "1" ( - rmdir /s /q artifacts/bin/fsc/Proto - - echo %_msbuildexe% proto.proj /t:Restore /bl:%~dp0artifacts\log\Proto\proto.proj.restore.binlog - %_msbuildexe% proto.proj /t:Restore /bl:%~dp0artifacts\log\Proto\proto.proj.restore.binlog - @if ERRORLEVEL 1 echo Error restoring proto failed && goto :failure - - echo %_msbuildexe% proto.proj /t:Build /bl:%~dp0artifacts\log\Proto\proto.proj.build.binlog - %_msbuildexe% proto.proj /t:Build /bl:%~dp0artifacts\log\Proto\proto.proj.build.binlog - @if ERRORLEVEL 1 echo Error building proto failed && goto :failure -) - -echo ---------------- Done with SDK restore, starting build ------------------------ - -if "%BUILD_PHASE%" == "1" if "%BUILD_FSHARP_PROJ%" == "1" ( - - echo %_dotnetexe% restore fsharp.proj /p:Configuration=%BUILD_CONFIG% /bl:!logdir!\fsharp.proj.restore.binlog - %_dotnetexe% restore fsharp.proj /p:Configuration=%BUILD_CONFIG% /bl:!logdir!\fsharp.proj.restore.binlog - - echo %_msbuildexe% fsharp.proj /t:Build /p:Configuration=%BUILD_CONFIG% /p:BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN% /bl:!logdir!\fsharp.proj.build.binlog - %_msbuildexe% fsharp.proj /t:Build /p:Configuration=%BUILD_CONFIG% /p:BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN% /bl:!logdir!\fsharp.proj.build.binlog - - @if ERRORLEVEL 1 echo Error build failed && goto :failure -) - -echo ---------------- Done with build, starting assembly version checks --------------- -set asmvercheckpath=%~dp0tests\fsharpqa\testenv\src\AssemblyVersionCheck - -if "%BUILD_NET40%" == "1" ( - echo #r @"%USERPROFILE%\.nuget\packages\Newtonsoft.Json\9.0.1\lib\net45\Newtonsoft.Json.dll">%asmvercheckpath%\assemblies.fsx - echo "%~dp0artifacts\bin\fsi\%BUILD_CONFIG%\net46\fsi.exe" "%asmvercheckpath%\AssemblyVersionCheck.fsx" -- "%~dp0build\config\AssemblySignToolData.json" "%~dp0artifacts" - "%~dp0artifacts\bin\fsi\%BUILD_CONFIG%\net46\fsi.exe" "%asmvercheckpath%\AssemblyVersionCheck.fsx" -- "%~dp0build\config\AssemblySignToolData.json" "%~dp0artifacts" - if ERRORLEVEL 1 echo Error verifying assembly versions and commit hashes. && goto :failure -) - -echo ---------------- Done with assembly version checks, starting assembly signing --------------- - -if not "%SIGN_TYPE%" == "" ( - echo %_msbuildexe% build\projects\Signing.proj /t:Restore - %_msbuildexe% build\projects\Signing.proj /t:Restore - - echo %_msbuildexe% build\projects\Signing.proj /t:DoSigning /p:SignType=%SIGN_TYPE% /p:Configuration=%BUILD_CONFIG% /p:BinaryBasePath=%~dp0artifacts /p:ConfigFile=%~dp0build\config\AssemblySignToolData.json - %_msbuildexe% build\projects\Signing.proj /t:DoSigning /p:SignType=%SIGN_TYPE% /p:Configuration=%BUILD_CONFIG% /p:BinaryBasePath=%~dp0artifacts /p:ConfigFile=%~dp0build\config\AssemblySignToolData.json - - if ERRORLEVEL 1 echo Error running sign tool && goto :failure -) - -if not "%SIGN_TYPE%" == "" ( - echo %_msbuildexe% build\projects\Signing.proj /t:DoSigning /p:SignType=%SIGN_TYPE% /p:Configuration=%BUILD_CONFIG% /p:BinaryBasepath=%~dp0artifacts\packages\%BUILD_CONFIG% /p:ConfigFile=%~dp0build\config\PackageSignToolData.json - %_msbuildexe% build\projects\Signing.proj /t:DoSigning /p:SignType=%SIGN_TYPE% /p:Configuration=%BUILD_CONFIG% /p:BinaryBasepath=%~dp0artifacts\packages\%BUILD_CONFIG% /p:ConfigFile=%~dp0build\config\PackageSignToolData.json - if ERRORLEVEL 1 echo Error running sign tool && goto :failure -) - -if "%BUILD_SETUP%" == "1" ( - echo %_msbuildexe% %msbuildflags% setup\build-insertion.proj /p:Configuration=%BUILD_CONFIG% /bl:!logdir!\msbuild.build-insertion.build.%BUILD_CONFIG%.binlog - %_msbuildexe% %msbuildflags% setup\build-insertion.proj /p:Configuration=%BUILD_CONFIG% /bl:!logdir!\msbuild.build-insertion.build.%BUILD_CONFIG%.binlog - if ERRORLEVEL 1 echo Error building insertion packages && goto :failure -) - -if not "%SIGN_TYPE%" == "" ( - echo %_msbuildexe% build\projects\Signing.proj /t:DoSigning /p:SignType=%SIGN_TYPE% /p:Configuration=%BUILD_CONFIG% /p:BinaryBasepath=%~dp0artifacts\VSSetup\%BUILD_CONFIG%\Insertion /p:ConfigFile=%~dp0build\config\InsertionSignToolData.json - %_msbuildexe% build\projects\Signing.proj /t:DoSigning /p:SignType=%SIGN_TYPE% /p:Configuration=%BUILD_CONFIG% /p:BinaryBasePath=%~dp0artifacts\VSSetup\%BUILD_CONFIG%\Insertion /p:ConfigFile=%~dp0build\config\InsertionSignToolData.json - if ERRORLEVEL 1 echo Error running sign tool && goto :failure -) - -echo ---------------- Done with signing, building insertion files --------------- - -if "%BUILD_SETUP%" == "1" ( - echo %_msbuildexe% %msbuildflags% setup\Swix\Microsoft.FSharp.vsmanproj /p:Configuration=%BUILD_CONFIG% /bl:!logdir!\msbuild.setup-swix.build.%BUILD_CONFIG%.binlog - %_msbuildexe% %msbuildflags% setup\Swix\Microsoft.FSharp.vsmanproj /p:Configuration=%BUILD_CONFIG% /bl:!logdir!\msbuild.setup-swix.build.%BUILD_CONFIG%.binlog - if ERRORLEVEL 1 echo Error building .vsmanproj && goto :failure -) - -echo ---------------- Done building insertion files, starting pack/update/prepare --------------- - -set X86_PROGRAMFILES=%ProgramFiles% -if "%OSARCH%"=="AMD64" set X86_PROGRAMFILES=%ProgramFiles(x86)% - -set SYSWOW64=. -if "%OSARCH%"=="AMD64" set SYSWOW64=SysWoW64 - -if not "%OSARCH%"=="x86" set REGEXE32BIT=%WINDIR%\syswow64\reg.exe - -echo SDK environment vars from Registry -echo ================================== - -for /d %%i in (%WINDIR%\Microsoft.NET\Framework\v4.0.?????) do set CORDIR=%%i -set PATH=%PATH%;%CORDIR% - -set REGEXE32BIT=reg.exe - -IF NOT DEFINED SNEXE32 IF EXIST "%WINSDKNETFXTOOLS%\sn.exe" set SNEXE32=%WINSDKNETFXTOOLS%sn.exe -IF NOT DEFINED SNEXE64 IF EXIST "%WINSDKNETFXTOOLS%x64\sn.exe" set SNEXE64=%WINSDKNETFXTOOLS%x64\sn.exe - -echo. -echo SDK environment vars -echo ======================= -echo WINSDKNETFXTOOLS: %WINSDKNETFXTOOLS% -echo SNEXE32: %SNEXE32% -echo SNEXE64: %SNEXE64% -echo - -if "%TEST_NET40_COMPILERUNIT_SUITE%" == "0" if "%TEST_FCS%" == "0" if "%TEST_NET40_COREUNIT_SUITE%" == "0" if "TEST_CORECLR_FSHARP_SUITE" == "0" if "%TEST_CORECLR_COREUNIT_SUITE%" == "0" if "%TEST_VS_IDEUNIT_SUITE%" == "0" if "%TEST_NET40_FSHARP_SUITE%" == "0" if "%TEST_NET40_FSHARPQA_SUITE%" == "0" goto :success - -if "%no_test%" == "1" goto :success - -echo ---------------- Done with update, starting tests ----------------------- - -if NOT "%INCLUDE_TEST_TAGS%" == "" ( - set TTAGS_ARG_RUNALL=-ttags:%INCLUDE_TEST_TAGS% -) - -set link_exe=%~dp0tests\fsharpqa\testenv\bin\link\link.exe -if not exist "%link_exe%" ( - echo Error: failed to find "%link_exe%" use nuget to restore the VisualCppTools package - goto :failure -) - -if /I not "%single_threaded%" == "true" (set PARALLEL_ARG=-procs:%NUMBER_OF_PROCESSORS%) else set PARALLEL_ARG=-procs:0 - -set FSCBINPATH=%~dp0artifacts\bin\fsc\%BUILD_CONFIG%\net46 -set FSIANYCPUBINPATH=%~dp0artifacts\bin\fsiAnyCpu\%BUILD_CONFIG%\net46 -set FSIBINPATH=%~dp0artifacts\bin\fsi\%BUILD_CONFIG%\net46 - -ECHO FSCBINPATH=%FSCBINPATH% -ECHO FSIANYCPUBINPATH=%FSIANYCPUBINPATH% -ECHO FSIBINPATH=%FSIBINPATH% -ECHO link_exe=%link_exe% - -REM ---------------- test-net40-fsharp ----------------------- - -set TESTLOGDIR=%~dp0artifacts\TestResults\%BUILD_CONFIG% -if "%TEST_NET40_FSHARP_SUITE%" == "1" ( - - set LOGFILE=%TESTLOGDIR%\FSharp.Tests.FSharpSuite_net46.trx - echo "%_dotnetexe%" test "%~dp0tests\fsharp\FSharp.Tests.FSharpSuite.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!" - "%_dotnetexe%" test "%~dp0tests\fsharp\FSharp.Tests.FSharpSuite.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!" - - if errorlevel 1 ( - echo -------------------------------------------------------------- - echo Error: Running tests net40-fsharp failed, see file `!LOGFILE!` - echo -------------------------------------------------------------- - goto :failure - ) - - if not exist "!LOGFILE!" ( - echo -------------------------------------------------------- - echo Test results file !LOGFILE! not found, ensure tests ran. - echo -------------------------------------------------------- - goto :failure - ) -) - -REM ---------------- test-fcs ----------------------- - -if "%TEST_FCS%" == "1" ( - - set LOGFILE=%TESTLOGDIR%\FSharp.Compiler.Service.Tests_net46.trx - echo "%_dotnetexe%" test "%~dp0fcs\FSharp.Compiler.Service.Tests\FSharp.Compiler.Service.Tests.fsproj" -s "%~dp0fcs\FSharp.Compiler.Service.Tests\app.runsettings" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!" - "%_dotnetexe%" test "%~dp0fcs\FSharp.Compiler.Service.Tests\FSharp.Compiler.Service.Tests.fsproj" -s "%~dp0fcs\FSharp.Compiler.Service.Tests\app.runsettings" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!" - - if errorlevel 1 ( - echo -------------------------------------------------------------- - echo Error: Running net40 fcs tests, see file `!LOGFILE!` - echo -------------------------------------------------------------- - goto :failure - ) - - if not exist "!LOGFILE!" ( - echo -------------------------------------------------------- - echo Test results file !LOGFILE! not found, ensure tests ran. - echo -------------------------------------------------------- - goto :failure - ) - - set LOGFILE=%TESTLOGDIR%\FSharp.Compiler.Service.Tests_netcoreapp2.0.trx - echo "%_dotnetexe%" test "%~dp0fcs\FSharp.Compiler.Service.Tests\FSharp.Compiler.Service.Tests.fsproj" -s "%~dp0fcs\FSharp.Compiler.Service.Tests\app.runsettings" --no-restore --no-build -c %BUILD_CONFIG% -f netcoreapp2.0 -l "trx;LogFileName=!LOGFILE!" - "%_dotnetexe%" test "%~dp0fcs\FSharp.Compiler.Service.Tests\FSharp.Compiler.Service.Tests.fsproj" -s "%~dp0fcs\FSharp.Compiler.Service.Tests\app.runsettings" --no-restore --no-build -c %BUILD_CONFIG% -f netcoreapp2.0 -l "trx;LogFileName=!LOGFILE!" - - if errorlevel 1 ( - echo -------------------------------------------------------------- - echo Error: Running coreclr fcs tests, see file `!LOGFILE!` - echo -------------------------------------------------------------- - goto :failure - ) - - if not exist "!LOGFILE!" ( - echo -------------------------------------------------------- - echo Test results file !LOGFILE! not found, ensure tests ran. - echo -------------------------------------------------------- - goto :failure - ) -) - -REM ---------------- end2end ----------------------- -if "%TEST_END_2_END%" == "1" ( - - pushd %~dp0tests\EndToEndBuildTests - - echo Execute end to end compiler tests - echo call EndToEndBuildTests.cmd - call EndToEndBuildTests.cmd - if errorlevel 1 ( - popd - Echo end to end tests failed. - goto :failure - ) -) - -REM ---------------- net40-fsharpqa ----------------------- - -set OSARCH=%PROCESSOR_ARCHITECTURE% - -rem Set this to 1 in order to use an external compiler host process -rem This only has an effect when running the FSHARPQA tests, but can -rem greatly speed up execution since fsc.exe does not need to be spawned thousands of times -set HOSTED_COMPILER=1 - -if "%TEST_NET40_FSHARPQA_SUITE%" == "1" ( - - set CSC_PIPE=%USERPROFILE%\.nuget\packages\Microsoft.Net.Compilers\2.7.0\tools\csc.exe - set FSC=!FSCBINPATH!\fsc.exe - set FSI=!FSIBINPATH!\fsi.exe - set FSIANYCPU=!FSIANYCPUBINPATH!\fsi.exe - set FSCOREDLLPATH=!FSCBinPath!\FSharp.Core.dll - set PATH=!FSCBINPATH!;!FSIBINPATH!;!FSIANYCPUBINPATH!;!PATH! - set perlexe=%USERPROFILE%\.nuget\packages\StrawberryPerl64\5.22.2.1\Tools\perl\bin\perl.exe - if not exist !perlexe! (echo Error: perl was not downloaded from check the packages directory: !perlexe! && goto :failure ) - - set RESULTSDIR=%~dp0artifacts\TestResults\%BUILD_CONFIG% - set OUTPUTFILE=test-net40-fsharpqa-results.log - set ERRORFILE=test-net40-fsharpqa-errors.log - set FAILENV=test-net40-fsharpqa-errors - - pushd %~dp0tests\fsharpqa\source - echo !perlexe! %~dp0tests\fsharpqa\testenv\bin\runall.pl -resultsroot !RESULTSDIR! -results !OUTPUTFILE! -log !ERRORFILE! -fail !FAILENV! -cleanup:no !TTAGS_ARG_RUNALL! !PARALLEL_ARG! - !perlexe! %~dp0tests\fsharpqa\testenv\bin\runall.pl -resultsroot !RESULTSDIR! -results !OUTPUTFILE! -log !ERRORFILE! -fail !FAILENV! -cleanup:no !TTAGS_ARG_RUNALL! !PARALLEL_ARG! - - popd - if ERRORLEVEL 1 ( - echo ----------------------------------------------------------------- - type "!RESULTSDIR!\!OUTPUTFILE!" - echo ----------------------------------------------------------------- - type "!RESULTSDIR!\!ERRORFILE!" - echo ----------------------------------------------------------------- - echo Error: Running tests net40-fsharpqa failed, see logs above -- FAILED - echo ----------------------------------------------------------------- - goto :failure - ) -) - -REM ---------------- net40-compilerunit ----------------------- - -if "%TEST_NET40_COMPILERUNIT_SUITE%" == "1" ( - - set LOGFILE=%TESTLOGDIR%\FSharp.Compiler.UnitTests_net46.trx - echo "%_dotnetexe%" test "%~dp0tests\FSharp.Compiler.UnitTests\FSharp.Compiler.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!" - "%_dotnetexe%" test "%~dp0tests\FSharp.Compiler.UnitTests\FSharp.Compiler.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!" - - if errorlevel 1 ( - echo ----------------------------------------------------------------- - echo Error: Running tests net40-compilerunit failed, see file `!LOGFILE!` - echo ----------------------------------------------------------------- - goto :failure - ) - - if not exist "!LOGFILE!" ( - echo -------------------------------------------------------- - echo Test results file !LOGFILE! not found, ensure tests ran. - echo -------------------------------------------------------- - goto :failure - ) - - set LOGFILE=%TESTLOGDIR%\FSharp.Build.UnitTests_net46.trx - echo "%_dotnetexe%" test "%~dp0tests\FSharp.Build.UnitTests\FSharp.Build.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!" - "%_dotnetexe%" test "%~dp0tests\FSharp.Build.UnitTests\FSharp.Build.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!" - - if errorlevel 1 ( - echo ----------------------------------------------------------------- - echo Error: Running tests net40-compilernit failed, see file `!LOGFILE!` - echo ----------------------------------------------------------------- - goto :failure - ) - - if not exist "!LOGFILE!" ( - echo -------------------------------------------------------- - echo Test results file !LOGFILE! not found, ensure tests ran. - echo -------------------------------------------------------- - goto :failure - ) -) - -REM ---------------- net40-coreunit ----------------------- - -if "%TEST_NET40_COREUNIT_SUITE%" == "1" ( - - set LOGFILE=%TESTLOGDIR%\FSharp.Core.UnitTests_net46.trx - echo "%_dotnetexe%" test "%~dp0tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!" - "%_dotnetexe%" test "%~dp0tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!" - - if errorlevel 1 ( - echo ----------------------------------------------------------------- - echo Error: Running tests net40-coreunit failed, see file `!LOGFILE!` - echo ----------------------------------------------------------------- - goto :failure - ) - - if not exist "!LOGFILE!" ( - echo -------------------------------------------------------- - echo Test results file !LOGFILE! not found, ensure tests ran. - echo -------------------------------------------------------- - goto :failure - ) -) - -REM ---------------- coreclr-coreunit ----------------------- - -if "%TEST_CORECLR_COREUNIT_SUITE%" == "1" ( - - set LOGFILE=%TESTLOGDIR%\FSharp.Build.UnitTests_netcoreapp2.0.trx - echo "%_dotnetexe%" test "%~dp0tests\FSharp.Build.UnitTests\FSharp.Build.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f netcoreapp2.0 -l "trx;LogFileName=!LOGFILE!" - "%_dotnetexe%" test "%~dp0tests\FSharp.Build.UnitTests\FSharp.Build.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f netcoreapp2.0 -l "trx;LogFileName=!LOGFILE!" - - if errorlevel 1 ( - echo ----------------------------------------------------------------- - echo Error: Running tests coreclr-compilernit failed, see file `!LOGFILE!` - echo ----------------------------------------------------------------- - goto :failure - ) - - if not exist "!LOGFILE!" ( - echo -------------------------------------------------------- - echo Test results file !LOGFILE! not found, ensure tests ran. - echo -------------------------------------------------------- - goto :failure - ) - - set LOGFILE=%TESTLOGDIR%\FSharp.Core.UnitTests_netcoreapp2.0.trx - echo "%_dotnetexe%" test "%~dp0tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f netcoreapp2.0 -l "trx;LogFileName=!LOGFILE!" - "%_dotnetexe%" test "%~dp0tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f netcoreapp2.0 -l "trx;LogFileName=!LOGFILE!" - - if errorlevel 1 ( - echo ------------------------------------------------------------------ - echo Error: Running tests coreclr-coreunit failed, see file `!LOGFILE!` - echo ------------------------------------------------------------------ - goto :failure - ) - - if not exist "!LOGFILE!" ( - echo -------------------------------------------------------- - echo Test results file !LOGFILE! not found, ensure tests ran. - echo -------------------------------------------------------- - goto :failure - ) -) - -REM ---------------- coreclr-fsharp ----------------------- - -if "%TEST_CORECLR_FSHARP_SUITE%" == "1" ( - set LOGFILE=%TESTLOGDIR%\FSharp.Tests.FSharpSuite_netcoreapp2.0.trx - echo "%_dotnetexe%" test "%~dp0tests\fsharp\FSharp.Tests.FSharpSuite.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f netcoreapp2.0 -l "trx;LogFileName=!LOGFILE!" - "%_dotnetexe%" test "%~dp0tests\fsharp\FSharp.Tests.FSharpSuite.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f netcoreapp2.0 -l "trx;LogFileName=!LOGFILE!" - - if errorlevel 1 ( - echo ---------------------------------------------------------------- - echo Error: Running tests coreclr-fsharp failed, see file `!LOGFILE!` - echo ---------------------------------------------------------------- - goto :failure - ) - - if not exist "!LOGFILE!" ( - echo -------------------------------------------------------- - echo Test results file !LOGFILE! not found, ensure tests ran. - echo -------------------------------------------------------- - goto :failure - ) -) - -REM ---------------- vs-ideunit ----------------------- - -if "%TEST_VS_IDEUNIT_SUITE%" == "1" ( - set LOGFILE=%TESTLOGDIR%\GetTypesVSUnitTests_net46.trx - echo "%_dotnetexe%" test "%~dp0vsintegration\tests\GetTypesVSUnitTests\GetTypesVSUnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!" - "%_dotnetexe%" test "%~dp0vsintegration\tests\GetTypesVSUnitTests\GetTypesVSUnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!" - - if errorlevel 1 ( - echo --------------------------------------------------------------------------- - echo Error: Running tests net40-gettypesvsunittests failed, see file `!LOGFILE!` - echo --------------------------------------------------------------------------- - goto :failure - ) - - if not exist "!LOGFILE!" ( - echo -------------------------------------------------------- - echo Test results file !LOGFILE! not found, ensure tests ran. - echo -------------------------------------------------------- - goto :failure - ) - - set LOGFILE=%TESTLOGDIR%\VisualFSharp.UnitTests_net46.trx - echo "%_dotnetexe%" test "%~dp0vsintegration\tests\UnitTests\VisualFSharp.UnitTests.fsproj" -s "%~dp0vsintegration\tests\UnitTests\app.runsettings" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!" - "%_dotnetexe%" test "%~dp0vsintegration\tests\UnitTests\VisualFSharp.UnitTests.fsproj" -s "%~dp0vsintegration\tests\UnitTests\app.runsettings" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!" - if errorlevel 1 ( - echo ------------------------------------------------------------ - echo Error: Running tests vs-ideunit failed, see file `!LOGFILE!` - echo ------------------------------------------------------------ - goto :failure - ) - - if not exist "!LOGFILE!" ( - echo -------------------------------------------------------- - echo Test results file !LOGFILE! not found, ensure tests ran. - echo -------------------------------------------------------- - goto :failure - ) -) - -goto :success -REM ------ exit ------------------------------------- -:failure -endlocal -@echo -exit /b 1 - -:success -endlocal -exit /b 0 diff --git a/build.sh b/build.sh index 4e78c56091cc8eda8602da9c30e6f3f364ddfb0d..ed167ab24acebfc59ea69087490fe58b405a23de 100755 --- a/build.sh +++ b/build.sh @@ -1,3 +1,16 @@ -#!/bin/sh +#!/usr/bin/env bash -make Configuration=release +source="${BASH_SOURCE[0]}" + +# resolve $SOURCE until the file is no longer a symlink +while [[ -h $source ]]; do + scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + source="$(readlink "$source")" + + # if $source was a relative symlink, we need to resolve it relative to the path where the + # symlink file was located + [[ $source != /* ]] && source="$scriptroot/$source" +done + +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" +"$scriptroot/eng/build.sh" --build $@ diff --git a/build/config/AssemblySignToolData.json b/build/config/AssemblySignToolData.json deleted file mode 100644 index 8e8aebed7d629a4fbc196384b7be28f353b00751..0000000000000000000000000000000000000000 --- a/build/config/AssemblySignToolData.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "sign": [ - { - "certificate": "Microsoft", - "strongName": "StrongName", - "values": [ - "bin\\FSharp.Core\\*\\*\\FSharp.Core.dll", - "bin\\FSharp.Core\\*\\*\\*\\FSharp.Core.resources.dll", - "bin\\FSharp.Build\\*\\*\\FSharp.Build.dll", - "bin\\FSharp.Build\\*\\*\\*\\FSharp.Build.resources.dll", - "bin\\FSharp.Compiler.Private\\*\\*\\FSharp.Compiler.Private.dll", - "bin\\FSharp.Compiler.Private\\*\\*\\*\\FSharp.Compiler.Private.resources.dll", - "bin\\FSharp.Compiler.Server.Shared\\*\\*\\FSharp.Compiler.Server.Shared.dll", - "bin\\FSharp.Compiler.Interactive.Settings\\*\\*\\FSharp.Compiler.Interactive.Settings.dll", - "bin\\FSharp.Compiler.Interactive.Settings\\*\\*\\*\\FSharp.Compiler.Interactive.Settings.resources.dll", - "bin\\fsc\\*\\*\\fsc.exe", - "bin\\fsi\\*\\*\\fsi.exe", - "bin\\fsiAnyCpu\\*\\*\\fsiAnyCpu.exe", - "bin\\FSharp.VS.FSI\\*\\*\\FSharp.VS.FSI.dll", - "bin\\FSharp.VS.FSI\\*\\*\\*\\FSharp.VS.FSI.resources.dll", - "bin\\FSharp.LanguageService.Base\\*\\*\\FSharp.LanguageService.Base.dll", - "bin\\FSharp.LanguageService.Base\\*\\*\\*\\FSharp.LanguageService.Base.resources.dll", - "bin\\FSharp.LanguageService\\*\\*\\FSharp.LanguageService.dll", - "bin\\FSharp.LanguageService\\*\\*\\*\\FSharp.LanguageService.resources.dll", - "bin\\FSharp.UIResources\\*\\*\\FSharp.UIResources.dll", - "bin\\FSharp.UIResources\\*\\*\\*\\FSharp.UIResources.resources.dll", - "bin\\FSharp.Editor\\*\\*\\FSharp.Editor.dll", - "bin\\FSharp.Editor\\*\\*\\*\\FSharp.Editor.resources.dll", - "bin\\FSharp.PatternMatcher\\*\\*\\FSharp.PatternMatcher.dll", - "bin\\FSharp.PropertiesPages\\*\\*\\FSharp.ProjectSystem.PropertyPages.dll", - "bin\\FSharp.PropertiesPages\\*\\*\\*\\FSharp.ProjectSystem.PropertyPages.resources.dll", - "bin\\ProjectSystem\\*\\*\\FSharp.ProjectSystem.FSharp.dll", - "bin\\ProjectSystem\\*\\*\\*\\FSharp.ProjectSystem.FSharp.resources.dll", - "bin\\ProjectSystem.Base\\*\\*\\FSharp.ProjectSystem.Base.dll", - "bin\\ProjectSystem.Base\\*\\*\\*\\FSharp.ProjectSystem.Base.resources.dll" - ] - }, - { - "certificate": "VsixSHA2", - "strongName": null, - "values": [ - "bin\\VisualFSharpFull\\*\\*\\VisualFSharpFull.vsix", - "bin\\VisualFSharpTemplates\\*\\*\\VisualFSharpTemplate.vsix", - "VSSetup\\*\\Insertion\\Microsoft.FSharp.Dependencies.vsix", - "VSSetup\\*\\Insertion\\Microsoft.FSharp.VSIX.Full.Resources.*.vsix" - ] - }, - { - "certificate": "NuGet", - "strongName": null, - "values": [ - "packages\\*\\*.nupkg" - ] - } - ], - "exclude": [ - "e_sqlite3.dll", - "FSharp.Core.UnitTests.dll", - "FSharp.Data.TypeProviders.dll", - "Microsoft.Build.dll", - "Microsoft.Build.Framework.dll", - "Microsoft.Build.Tasks.Core.dll", - "Microsoft.Build.Utilities.Core.dll", - "Newtonsoft.Json.dll", - "System.Collections.Immutable.dll", - "System.Reflection.Metadata.dll", - "System.ValueTuple.4.4.0.nupkg", - "System.ValueTuple.dll" - ] -} diff --git a/build/config/InsertionSignToolData.json b/build/config/InsertionSignToolData.json deleted file mode 100644 index d81579b12c9627e39d61ef83ca69f0eaa6ae35f7..0000000000000000000000000000000000000000 --- a/build/config/InsertionSignToolData.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "sign": [ - { - "certificate": "VsixSHA2", - "strongName": null, - "values": [ - "Microsoft.FSharp.Compiler.vsix", - "Microsoft.FSharp.Compiler.Resources.*.vsix", - "Microsoft.FSharp.Dependencies.vsix", - "Microsoft.FSharp.IDE.vsix", - "Microsoft.FSharp.SDK.vsix" - ] - } - ], - "exclude": [ - "fsc.exe", - "FSharp.Build.dll", - "FSharp.Build.resources.dll", - "FSharp.Core.dll", - "FSharp.Core.resources.dll", - "FSharp.Compiler.Private.dll", - "FSharp.Compiler.Private.resources.dll", - "FSharp.Compiler.Server.Shared.dll", - "FSharp.Compiler.Interactive.Settings.dll", - "FSharp.Compiler.Interactive.Settings.resources.dll", - "fsi.exe", - "fsiAnyCpu.exe", - "FSharp.Data.TypeProviders.dll", - "Microsoft.Build.dll", - "Microsoft.Build.Framework.dll", - "Microsoft.Build.Tasks.Core.dll", - "Microsoft.Build.Utilities.Core.dll", - "System.Collections.Immutable.dll", - "System.Reflection.Metadata.dll", - "System.ValueTuple.dll" - ] -} diff --git a/build/config/PackageSignToolData.json b/build/config/PackageSignToolData.json deleted file mode 100644 index bee55c6df1c9fdefbf73f919dfdd609b548b6976..0000000000000000000000000000000000000000 --- a/build/config/PackageSignToolData.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "sign": [ - { - "certificate": "NuGet", - "strongName": null, - "values": [ - "*.nupkg" - ] - } - ], - "exclude": [ - "FSharp.Build.resources.dll", - "FSharp.Compiler.Interactive.Settings.resources.dll", - "FSharp.Compiler.Private.resources.dll", - "FSharp.Core.resources.dll", - "fsc.exe", - "FSharp.Build.dll", - "FSharp.Compiler.Interactive.Settings.dll", - "FSharp.Compiler.Private.dll", - "FSharp.Core.dll", - "FSharp.Core.UnitTests.dll", - "fsi.exe" - ] -} \ No newline at end of file diff --git a/build/projects/Directory.Build.props b/build/projects/Directory.Build.props deleted file mode 100644 index bb8eac309b1ad0dfc3418caf301e1f06803c82ae..0000000000000000000000000000000000000000 --- a/build/projects/Directory.Build.props +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/build/projects/Directory.Build.targets b/build/projects/Directory.Build.targets deleted file mode 100644 index ccd47cc0a9aa21567cd1adbf7d7054bf309679f1..0000000000000000000000000000000000000000 --- a/build/projects/Directory.Build.targets +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/build/projects/Signing.proj b/build/projects/Signing.proj deleted file mode 100644 index 9e981e135ec9aa9004f17a8fa4586321c65ae363..0000000000000000000000000000000000000000 --- a/build/projects/Signing.proj +++ /dev/null @@ -1,27 +0,0 @@ - - - - - net46 - $(NuGetPackageRoot)RoslynTools.SignTool\$(RoslynToolsSignToolPackageVersion)\tools\SignTool.exe - -msbuildPath "$(MSBuildBinPath)\msbuild.exe" -nugetPackagesPath "$(NuGetPackageRoot.TrimEnd('\'))" -config "$(ConfigFile)" - -testSign $(SignToolArgs) - -test $(SignToolArgs) - - - - - - - - - - - - - - - - - diff --git a/build/targets/AssemblyVersions.props b/build/targets/AssemblyVersions.props deleted file mode 100644 index d76ea06ec5fbcde5ae1ca99a0ae3751934597215..0000000000000000000000000000000000000000 --- a/build/targets/AssemblyVersions.props +++ /dev/null @@ -1,62 +0,0 @@ - - - - - $([System.DateTime]::Now.ToString(yyyyMMdd.0)) - - $(BUILD_BUILDNUMBER.Replace(".DRAFT", "")) - - - <_Build_Year>$(BUILD_BUILDNUMBER.Substring(0, 4)) - <_Build_Month>$(BUILD_BUILDNUMBER.Substring(4, 2)) - <_Build_Day>$(BUILD_BUILDNUMBER.Substring(6, 2)) - <_Build_Number>$(BUILD_BUILDNUMBER.Substring(9)) - $(_Build_Year).$(_Build_Month).$(_Build_Day).$(_Build_Number) - - 4.5 - $(FSLanguageVersion) - $(FSCoreMajorVersion).4 - $(FSCoreMajorVersion).0.0 - $(FSCorePackageVersion).0 - - 10.2 - $(FSPackageMajorVersion).3 - $(FSPackageVersion).0 - - 15 - 9 - $(VSMajorVersion).0 - $(VSMajorVersion).$(VSMinorVersion).0.0 - - - $(BUILD_BUILDNUMBER.Split('.')[0].Substring(2)) - $(BUILD_BUILDNUMBER.Split('.')[1].PadLeft(2, '0')) - $(BuildTimeStamp_Date)$(BuildTimeStamp_Number) - $(VSAssemblyVersion.Split('.')[0]).$(VSAssemblyVersion.Split('.')[1]).$(BUILD_BUILDNUMBER) - 42.42.42.42 - $(BuildTimeStamp_Date)-$(BuildTimeStamp_Number) - - - - - - diff --git a/build/targets/CommonPackages.targets b/build/targets/CommonPackages.targets deleted file mode 100644 index dc21381a3a8ba3c395821baed9f0f40c79fde70c..0000000000000000000000000000000000000000 --- a/build/targets/CommonPackages.targets +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/build/targets/ConvertPortablePdbs.targets b/build/targets/ConvertPortablePdbs.targets deleted file mode 100644 index 9d65dab2dc41ef1725ef502bb43869ec7e78eba8..0000000000000000000000000000000000000000 --- a/build/targets/ConvertPortablePdbs.targets +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - $(SymStoreDirectory)\$(TargetFramework) - $(NuGetPackageRoot)Pdb2Pdb\$(Pdb2PdbPackageVersion)\tools\Pdb2Pdb.exe - "$(TargetPath)" /out "$(ConvertedPdbsDirectory)\$(TargetName).pdb" /srcsvrvar SRC_INDEX=public - - - - - - - - - $(TargetDir)\$(TargetName).pdb - - - - - - - diff --git a/build/targets/GenerateAssemblyAttributes.targets b/build/targets/GenerateAssemblyAttributes.targets deleted file mode 100644 index 7b747c9dd92c02369c47dfe1670ae482d3de7250..0000000000000000000000000000000000000000 --- a/build/targets/GenerateAssemblyAttributes.targets +++ /dev/null @@ -1,119 +0,0 @@ - - - - - false - - - - - $(IntermediateOutputPath)$(MSBuildProjectName).AssemblyLevelAttributes$(DefaultLanguageSourceExtension) - - - $(NoWarn);2003 - - - - - - - - - - - - - - - - $(FSCoreVersion) - - - $(FSProductVersion) - - - $(VSAssemblyVersion) - - $(IntermediateOutputPath)$(MSBuildProjectName).AssemblyVersion$(DefaultLanguageSourceExtension) - - - - <_UseWriteCodeFragmentHack Condition="'$(OS)' == 'Unix' and '$(Language)' == 'F#'">true - - - - <_AssemblyVersionAttributes Include="System.Reflection.AssemblyCompanyAttribute"> - <_Parameter1>Microsoft Corporation - - <_AssemblyVersionAttributes Include="System.Reflection.AssemblyCopyrightAttribute"> - <_Parameter1>© Microsoft Corporation. All Rights Reserved. - - <_AssemblyVersionAttributes Include="System.Reflection.AssemblyDescriptionAttribute"> - <_Parameter1>$(AssemblyName) - - <_AssemblyVersionAttributes Include="System.Reflection.AssemblyFileVersionAttribute"> - <_Parameter1>$(Build_FileVersion) - - <_AssemblyVersionAttributes Include="System.Reflection.AssemblyInformationalVersionAttribute"> - <_Parameter1>$(MicroBuildAssemblyVersion). Commit Hash: $(GitHeadSha). - - <_AssemblyVersionAttributes Include="System.Reflection.AssemblyProductAttribute"> - <_Parameter1>Microsoft® F# - - <_AssemblyVersionAttributes Include="System.Reflection.AssemblyTitleAttribute"> - <_Parameter1>$(AssemblyName) - - <_AssemblyVersionAttributes Include="System.Reflection.AssemblyVersionAttribute"> - <_Parameter1>$(MicroBuildAssemblyVersion) - - - - - - - - - - - - - - - - - <_LinesToWrite Include="// <auto-generated>" /> - <_LinesToWrite Include="namespace FSharp" /> - <_LinesToWrite Include="open System" /> - <_LinesToWrite Include="open System.Reflection" /> - <_LinesToWrite Include="[<assembly: %(_AssemblyVersionAttributes.Identity)("%(_AssemblyVersionAttributes._Parameter1)")>]" /> - <_LinesToWrite Include="do()" /> - - - - - - - - - - - diff --git a/build/targets/GenerateInternalsVisibleTo.targets b/build/targets/GenerateInternalsVisibleTo.targets deleted file mode 100644 index 4950837d36af63210f71fa86bf03ba77f73a4001..0000000000000000000000000000000000000000 --- a/build/targets/GenerateInternalsVisibleTo.targets +++ /dev/null @@ -1,80 +0,0 @@ - - - - $(IntermediateOutputPath)$(MSBuildProjectName).InternalsVisibleTo$(DefaultLanguageSourceExtension) - - - - - false - - - - - - <_PublicKey>002400000480000094000000060200000024000052534131000400000100010007D1FA57C4AED9F0A32E84AA0FAEFD0DE9E8FD6AEC8F87FB03766C834C99921EB23BE79AD9D5DCC1DD9AD236132102900B723CF980957FC4E177108FC607774F29E8320E92EA05ECE4E821C0A5EFE8F1645C4C0C93C1AB99285D622CAA652C1DFAD63D745D6F2DE5F17E5EAF0FC4963D261C8A12436518206DC093344D5AD293 - - - <_PublicKey>002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069ee - - - <_InternalsVisibleToAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute"> - <_Parameter1 Condition="'%(InternalsVisibleTo.Key)' != ''">%(InternalsVisibleTo.Identity), PublicKey=%(InternalsVisibleTo.Key) - <_Parameter1 Condition="'%(InternalsVisibleTo.Key)' == ''">%(InternalsVisibleTo.Identity), PublicKey=$(_PublicKey) - - - - - - - - - <_UseWriteCodeFragmentHack Condition="'$(OS)' == 'Unix' and '$(Language)' == 'F#'">true - - - - - - - - - - - - - <_LinesToWrite Include="// <auto-generated>" /> - <_LinesToWrite Include="namespace FSharp" /> - <_LinesToWrite Include="open System" /> - <_LinesToWrite Include="open System.Reflection" /> - <_LinesToWrite Include="[<assembly: %(_InternalsVisibleToAttribute.Identity)("%(_InternalsVisibleToAttribute._Parameter1)")>]" /> - <_LinesToWrite Include="do()" /> - - - - - - - - - diff --git a/build/targets/GitHash.props b/build/targets/GitHash.props deleted file mode 100644 index 30f2d03b9153af37631e380abf9384be7fb2759c..0000000000000000000000000000000000000000 --- a/build/targets/GitHash.props +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - $(MSBuildThisFileDirectory)..\..\ - - - - - - $(BUILD_SOURCEVERSION) - - - - - - $(GIT_COMMIT) - - - - - - <developer build> - - - - - - - <_DotGitDir>$(RepoRoot).git - <_HeadFileContent Condition="Exists('$(_DotGitDir)/HEAD')">$([System.IO.File]::ReadAllText('$(_DotGitDir)/HEAD').Trim()) - <_RefPath Condition="$(_HeadFileContent.StartsWith('ref: '))">$(_DotGitDir)/$(_HeadFileContent.Substring(5)) - $([System.IO.File]::ReadAllText('$(_RefPath)').Trim()) - $(_HeadFileContent) - - - - - diff --git a/build/targets/NGenOrCrossGen.targets b/build/targets/NGenOrCrossGen.targets deleted file mode 100644 index 3dba4fc5b2d0f7e492c93c9699c561c9da79ab6d..0000000000000000000000000000000000000000 --- a/build/targets/NGenOrCrossGen.targets +++ /dev/null @@ -1,36 +0,0 @@ - - - - - $(windir)\Microsoft.NET\Framework64\v4.0.30319\ngen.exe - $(windir)\Microsoft.NET\Framework\v4.0.30319\ngen.exe - - - - - - - - - - - - - - - - true - false - - - - diff --git a/eng/Build.ps1 b/eng/Build.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..ffa7b6d788aad33150cff8b131a3c20da9d6c818 --- /dev/null +++ b/eng/Build.ps1 @@ -0,0 +1,286 @@ +# +# This script controls the F# build process. This encompasess everything from build, testing to +# publishing of NuGet packages. The intent is to structure it to allow for a simple flow of logic +# between the following phases: +# +# - restore +# - build +# - sign +# - pack +# - test +# - publish +# +# Each of these phases has a separate command which can be executed independently. For instance +# it's fine to call `build.ps1 -build -testDesktop` followed by repeated calls to +# `.\build.ps1 -testDesktop`. + +[CmdletBinding(PositionalBinding=$false)] +param ( + [string][Alias('c')]$configuration = "Debug", + [string][Alias('v')]$verbosity = "m", + [string]$msbuildEngine = "vs", + + # Actions + [switch][Alias('r')]$restore, + [switch][Alias('b')]$build, + [switch]$rebuild, + [switch]$sign, + [switch]$pack, + [switch]$publish, + [switch]$launch, + [switch]$help, + + # Options + [switch][Alias('proto')]$bootstrap, + [string]$bootstrapConfiguration = "Proto", + [string]$bootstrapTfm = "net46", + [switch][Alias('bl')]$binaryLog, + [switch]$ci, + [switch]$official, + [switch]$procdump, + [switch]$deployExtensions, + [switch]$prepareMachine, + [switch]$useGlobalNuGetCache = $true, + [switch]$warnAsError = $true, + [switch][Alias('test')]$testDesktop, + [switch]$testCoreClr, + [switch]$testFSharpQA, + [switch]$testVs, + [switch]$testAll, + + [parameter(ValueFromRemainingArguments=$true)][string[]]$properties) + +Set-StrictMode -version 2.0 +$ErrorActionPreference = "Stop" + +function Print-Usage() { + Write-Host "Common settings:" + Write-Host " -configuration Build configuration: 'Debug' or 'Release' (short: -c)" + Write-Host " -verbosity Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]" + Write-Host " -deployExtensions Deploy built vsixes" + Write-Host " -binaryLog Create MSBuild binary log (short: -bl)" + Write-Host "" + Write-Host "Actions:" + Write-Host " -restore Restore packages (short: -r)" + Write-Host " -build Build main solution (short: -b)" + Write-Host " -rebuild Rebuild main solution" + Write-Host " -pack Build NuGet packages, VS insertion manifests and installer" + Write-Host " -sign Sign our binaries" + Write-Host " -publish Publish build artifacts (e.g. symbols)" + Write-Host " -launch Launch Visual Studio in developer hive" + Write-Host " -help Print help and exit" + Write-Host "" + Write-Host "Test actions" + Write-Host " -testAll Run all tests" + Write-Host " -testDesktop Run tests against full .NET Framework" + Write-Host " -testCoreClr Run tests against CoreCLR" + Write-Host " -testFSharpQA Run F# Cambridge tests" + Write-Host " -testVs Run F# editor unit tests" + Write-Host "" + Write-Host "Advanced settings:" + Write-Host " -ci Set when running on CI server" + Write-Host " -official Set when building an official build" + Write-Host " -bootstrap Build using a bootstrap compiler" + Write-Host " -msbuildEngine Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)." + Write-Host " -procdump Monitor test runs with procdump" + Write-Host " -prepareMachine Prepare machine for CI run, clean up processes after build" + Write-Host " -useGlobalNuGetCache Use global NuGet cache." + Write-Host "" + Write-Host "Command line arguments starting with '/p:' are passed through to MSBuild." +} + +# Process the command line arguments and establish defaults for the values which are not +# specified. +function Process-Arguments() { + if ($help -or (($properties -ne $null) -and ($properties.Contains("/help") -or $properties.Contains("/?")))) { + Print-Usage + exit 0 + } + + if ($testAll) { + $script:testDesktop = $True + $script:testCoreClr = $True + $script:testFSharpQA = $True + $script:testVs = $True + } + + foreach ($property in $properties) { + if (!$property.StartsWith("/p:", "InvariantCultureIgnoreCase")) { + Write-Host "Invalid argument: $property" + Print-Usage + exit 1 + } + } +} + +function Update-Arguments() { + if (-Not (Test-Path "$ArtifactsDir\Bootstrap\fsc.exe")) { + $script:bootstrap = $True + } +} + +function BuildSolution() { + # VisualFSharp.sln can't be built with dotnet due to WPF, WinForms and VSIX build task dependencies + $solution = "VisualFSharp.sln" + + Write-Host "$($solution):" + + $bl = if ($binaryLog) { "/bl:" + (Join-Path $LogDir "Build.binlog") } else { "" } + $projects = Join-Path $RepoRoot $solution + $officialBuildId = if ($official) { $env:BUILD_BUILDNUMBER } else { "" } + $toolsetBuildProj = InitializeToolset + $quietRestore = !$ci + $testTargetFrameworks = if ($testCoreClr) { "netcoreapp2.1" } else { "" } + + # Do not set the property to true explicitly, since that would override value projects might set. + $suppressExtensionDeployment = if (!$deployExtensions) { "/p:DeployExtension=false" } else { "" } + + MSBuild $toolsetBuildProj ` + $bl ` + /p:Configuration=$configuration ` + /p:Projects=$projects ` + /p:RepoRoot=$RepoRoot ` + /p:Restore=$restore ` + /p:Build=$build ` + /p:Rebuild=$rebuild ` + /p:Pack=$pack ` + /p:Sign=$sign ` + /p:Publish=$publish ` + /p:ContinuousIntegrationBuild=$ci ` + /p:OfficialBuildId=$officialBuildId ` + /p:BootstrapBuildPath=$bootstrapDir ` + /p:QuietRestore=$quietRestore ` + /p:QuietRestoreBinaryLog=$binaryLog ` + /p:TestTargetFrameworks=$testTargetFrameworks ` + $suppressExtensionDeployment ` + @properties +} + +function TestAndAddToPath([string] $testPath) { + if (Test-Path $testPath) { + $env:PATH = "$testPath;$env:PATH" + Write-Host "Added [$testPath] to the path." + } +} + +function UpdatePath() { + # add highest framework dir + $subdir = "" + foreach ($child in Get-ChildItem "$env:WINDIR\Microsoft.NET\Framework\v4.0.?????") { + $subdir = $child + } + TestAndAddToPath $subdir + + # add windows SDK dir for ildasm.exe + foreach ($child in Get-ChildItem "${env:ProgramFiles(x86)}\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.?.? Tools") { + $subdir = $child + } + TestAndAddToPath $subdir + + TestAndAddToPath "$ArtifactsDir\bin\fsc\$configuration\net46" + TestAndAddToPath "$ArtifactsDir\bin\fsiAnyCpu\$configuration\net46" +} + +function VerifyAssemblyVersions() { + $fsiPath = Join-Path $ArtifactsDir "bin\fsi\$configuration\net46\fsi.exe" + + # desktop fsi isn't always built + if (Test-Path $fsiPath) { + $asmVerCheckPath = "$RepoRoot\scripts" + Exec-Console $fsiPath """$asmVerCheckPath\AssemblyVersionCheck.fsx"" -- ""$ArtifactsDir""" + } +} + +function TestUsingNUnit([string] $testProject, [string] $targetFramework) { + $dotnetPath = InitializeDotNetCli + $dotnetExe = Join-Path $dotnetPath "dotnet.exe" + $projectName = [System.IO.Path]::GetFileNameWithoutExtension($testProject) + $testLogPath = "$ArtifactsDir\TestResults\$configuration\${projectName}_$targetFramework.xml" + $testBinLogPath = "$LogDir\${projectName}_$targetFramework.binlog" + $args = "test $testProject --no-restore --no-build -c $configuration -f $targetFramework -v n --test-adapter-path . --logger ""nunit;LogFilePath=$testLogPath"" /bl:$testBinLogPath" + Exec-Console $dotnetExe $args +} + +function Prepare-TempDir() { + Copy-Item (Join-Path $RepoRoot "tests\Resources\Directory.Build.props") $TempDir + Copy-Item (Join-Path $RepoRoot "tests\Resources\Directory.Build.targets") $TempDir +} + +try { + Process-Arguments + + . (Join-Path $PSScriptRoot "build-utils.ps1") + + Update-Arguments + + Push-Location $RepoRoot + + if ($ci) { + Prepare-TempDir + } + + if ($bootstrap) { + $bootstrapDir = Make-BootstrapBuild + } + + if ($restore -or $build -or $rebuild -or $pack -or $sign -or $publish) { + BuildSolution + } + + if ($build) { + VerifyAssemblyVersions + } + + $desktopTargetFramework = "net46" + $coreclrTargetFramework = "netcoreapp2.0" + + if ($testDesktop) { + TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Compiler.UnitTests\FSharp.Compiler.UnitTests.fsproj" -targetFramework $desktopTargetFramework + TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Build.UnitTests\FSharp.Build.UnitTests.fsproj" -targetFramework $desktopTargetFramework + TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj" -targetFramework $desktopTargetFramework + TestUsingNUnit -testProject "$RepoRoot\tests\fsharp\FSharpSuite.Tests.fsproj" -targetFramework $desktopTargetFramework + } + + if ($testCoreClr) { + TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Compiler.UnitTests\FSharp.Compiler.UnitTests.fsproj" -targetFramework $coreclrTargetFramework + TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Build.UnitTests\FSharp.Build.UnitTests.fsproj" -targetFramework $coreclrTargetFramework + TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj" -targetFramework $coreclrTargetFramework + TestUsingNUnit -testProject "$RepoRoot\tests\fsharp\FSharpSuite.Tests.fsproj" -targetFramework $coreclrTargetFramework + } + + if ($testFSharpQA) { + Push-Location "$RepoRoot\tests\fsharpqa\source" + $resultsRoot = "$ArtifactsDir\TestResults\$configuration" + $resultsLog = "test-net40-fsharpqa-results.log" + $errorLog = "test-net40-fsharpqa-errors.log" + $failLog = "test-net40-fsharpqa-errors" + $perlExe = "$env:USERPROFILE\.nuget\packages\StrawberryPerl64\5.22.2.1\Tools\perl\bin\perl.exe" + Create-Directory $resultsRoot + UpdatePath + $env:HOSTED_COMPILER = 1 + $env:CSC_PIPE = "$env:USERPROFILE\.nuget\packages\Microsoft.Net.Compilers\2.7.0\tools\csc.exe" + $env:FSCOREDLLPATH = "$ArtifactsDir\bin\fsc\$configuration\net46\FSharp.Core.dll" + $env:LINK_EXE = "$RepoRoot\tests\fsharpqa\testenv\bin\link\link.exe" + $env:OSARCH = $env:PROCESSOR_ARCHITECTURE + Exec-Console $perlExe """$RepoRoot\tests\fsharpqa\testenv\bin\runall.pl"" -resultsroot ""$resultsRoot"" -results $resultsLog -log $errorLog -fail $failLog -cleanup:no -procs:$env:NUMBER_OF_PROCESSORS" + Pop-Location + } + + if ($testVs) { + Write-Host "Environment Variables" + Get-Childitem Env: + TestUsingNUnit -testProject "$RepoRoot\vsintegration\tests\GetTypesVS.UnitTests\GetTypesVS.UnitTests.fsproj" -targetFramework $desktopTargetFramework + TestUsingNUnit -testProject "$RepoRoot\vsintegration\tests\UnitTests\VisualFSharp.UnitTests.fsproj" -targetFramework $desktopTargetFramework + } + + ExitWithExitCode 0 +} +catch { + Write-Host $_ + Write-Host $_.Exception + Write-Host $_.ScriptStackTrace + ExitWithExitCode 1 +} +finally { + Pop-Location +} diff --git a/eng/CIBuild.cmd b/eng/CIBuild.cmd new file mode 100644 index 0000000000000000000000000000000000000000..84640d7efc52837186c50f78efece88cdce896b3 --- /dev/null +++ b/eng/CIBuild.cmd @@ -0,0 +1,2 @@ +@echo off +powershell -noprofile -executionPolicy RemoteSigned -file "%~dp0\Build.ps1" -ci -restore -build -bootstrap -pack -sign -publish -binaryLog %* diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml new file mode 100644 index 0000000000000000000000000000000000000000..4b3e52da9c93e65064cb3ba2162a2e457412d695 --- /dev/null +++ b/eng/Version.Details.xml @@ -0,0 +1,11 @@ + + + + + + + https://github.com/dotnet/arcade + 9ba7a4ced36358fc130b762d25a83fa370c296c9 + + + diff --git a/build/targets/PackageVersions.props b/eng/Versions.props similarity index 71% rename from build/targets/PackageVersions.props rename to eng/Versions.props index 498a9d7fd6879aee69a5fe4ff3d6b00c3000a067..1e029d23606f8479b721c9fdd6e358c20e96af8e 100644 --- a/build/targets/PackageVersions.props +++ b/eng/Versions.props @@ -1,5 +1,48 @@ + + + false + + + true + true + true + true + true + + + + + beta + + 4.5 + $(FSCoreMajorVersion).5 + $(FSCoreMajorVersion).0 + $(FSCoreVersion).0 + + 10.2 + $(FSPackageMajorVersion).3 + $(FSPackageVersion) + $(FSProductVersion).0 + + 15 + 9 + $(VSMajorVersion).0 + $(VSMajorVersion).$(VSMinorVersion).0 + $(VSAssemblyVersion).0 + + + + + $(FSCoreVersion) + $(FSProductVersion) + $(VSAssemblyVersion) + $(VSMajorVersion).$(VSMinorVersion).0 + + $(VersionPrefix) + + @@ -13,14 +56,14 @@ https://api.nuget.org/v3/index.json; https://dotnet.myget.org/F/roslyn/api/v3/index.json; https://dotnet.myget.org/F/symreader-converter/api/v3/index.json; + https://myget.org/F/vs-devcore/api/v3/index.json; + https://myget.org/F/vs-editor/api/v3/index.json; + https://vside.myget.org/F/vssdk/api/v3/index.json; + https://vside.myget.org/F/vs-impl/api/v3/index.json; - - $(PB_RestoreSource);$(RestoreSources) - $(MSBuildThisFileDirectory)..\..\artifacts\dependencyUptake\PackageVersions.props - - $([System.IO.File]::ReadAllText('$(MSBuildThisFileDirectory)..\..\RoslynPackageVersion.txt').Trim()) + $([System.IO.File]::ReadAllText('$(MSBuildThisFileDirectory)..\RoslynPackageVersion.txt').Trim()) 1.5.0 @@ -66,14 +109,14 @@ 8.0.1 14.0.25420 - 15.6.27740 + 15.8.525 15.0.26201-alpha 1.1.4322 - 15.0.26201 + 15.8.525 15.0.26201 - 15.6.27740 - 15.6.27740 - 15.6.27740 + 15.8.525 + 15.8.525 + 15.8.525 8.0.50727 7.10.6071 15.0.26201 @@ -82,7 +125,7 @@ 14.3.25407 15.0.26201 15.0.26201 - 15.0.26201 + 15.9.28307 10.0.30319 11.0.50727 15.0.25123-Dev15Preview @@ -92,18 +135,18 @@ 10.0.30319 11.0.61030 12.0.30110 - 15.6.27740 + 15.8.525 7.10.6071 8.0.50727 10.0.30319 12.0.30112 - 15.6.27740 - 15.6.27740 - 15.3.23 + 15.8.525 + 15.8.525 + 15.8.209 15.0.26201 15.3.15 9.0.30729 - 15.6.170 + 15.7.109 12.0.4 7.0.4 8.0.4 @@ -114,13 +157,10 @@ 0.2.0 1.0.0 1.0.147 - 10.1.0 - 1.0.0 3.0.0-alpha4 1.0.30 - 1.1.0-beta1-63314-01 8.0.0-alpha 2.7.0 2.0.3 @@ -128,16 +168,13 @@ 1.0.0 4.3.0 9.0.1 - 3.10.1 - 3.10.0 - 3.10.1 + 3.11.0 + 3.11.2 + 3.11.0 + 2.1.36 1.0.0-beta2-dev3 5.22.2.1 - 0.2.0-beta-000081 - - - diff --git a/eng/build-utils.ps1 b/eng/build-utils.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..845169db12a2e2b9a655aa5e21e8528f4fd98d4b --- /dev/null +++ b/eng/build-utils.ps1 @@ -0,0 +1,257 @@ +# Collection of powershell build utility functions that we use across our scripts. + +Set-StrictMode -version 2.0 +$ErrorActionPreference="Stop" + +# Import Arcade functions +. (Join-Path $PSScriptRoot "common\tools.ps1") + +$VSSetupDir = Join-Path $ArtifactsDir "VSSetup\$configuration" +$PackagesDir = Join-Path $ArtifactsDir "packages\$configuration" + +$binaryLog = if (Test-Path variable:binaryLog) { $binaryLog } else { $false } +$nodeReuse = if (Test-Path variable:nodeReuse) { $nodeReuse } else { $false } +$bootstrapDir = if (Test-Path variable:bootstrapDir) { $bootstrapDir } else { "" } +$bootstrapConfiguration = if (Test-Path variable:bootstrapConfiguration) { $bootstrapConfiguration } else { "Proto" } +$bootstrapTrm = if (Test-Path variable:bootstrapTfm) { $bootstrapConfiguration } else { "net46" } +$properties = if (Test-Path variable:properties) { $properties } else { @() } + +function GetProjectOutputBinary([string]$fileName, [string]$projectName = "", [string]$configuration = $script:configuration, [string]$tfm = "net46", [string]$rid = "", [bool]$published = $false) { + $projectName = if ($projectName -ne "") { $projectName } else { [System.IO.Path]::GetFileNameWithoutExtension($fileName) } + $publishDir = if ($published) { "publish\" } else { "" } + $ridDir = if ($rid -ne "") { "$rid\" } else { "" } + return Join-Path $ArtifactsDir "bin\$projectName\$configuration\$tfm\$ridDir$publishDir$fileName" +} + +# Handy function for executing a command in powershell and throwing if it +# fails. +# +# Use this when the full command is known at script authoring time and +# doesn't require any dynamic argument build up. Example: +# +# Exec-Block { & $msbuild Test.proj } +# +# Original sample came from: http://jameskovacs.com/2010/02/25/the-exec-problem/ +function Exec-Block([scriptblock]$cmd) { + & $cmd + + # Need to check both of these cases for errors as they represent different items + # - $?: did the powershell script block throw an error + # - $lastexitcode: did a windows command executed by the script block end in error + if ((-not $?) -or ($lastexitcode -ne 0)) { + throw "Command failed to execute: $cmd" + } +} + +function Exec-CommandCore([string]$command, [string]$commandArgs, [switch]$useConsole = $true) { + if ($useConsole) { + $exitCode = Exec-Process $command $commandArgs + if ($exitCode -ne 0) { + throw "Command failed to execute with exit code $($exitCode): $command $commandArgs" + } + return + } + + $startInfo = New-Object System.Diagnostics.ProcessStartInfo + $startInfo.FileName = $command + $startInfo.Arguments = $commandArgs + + $startInfo.UseShellExecute = $false + $startInfo.WorkingDirectory = Get-Location + $startInfo.RedirectStandardOutput = $true + $startInfo.CreateNoWindow = $true + + $process = New-Object System.Diagnostics.Process + $process.StartInfo = $startInfo + $process.Start() | Out-Null + + $finished = $false + try { + # The OutputDataReceived event doesn't fire as events are sent by the + # process in powershell. Possibly due to subtlties of how Powershell + # manages the thread pool that I'm not aware of. Using blocking + # reading here as an alternative which is fine since this blocks + # on completion already. + $out = $process.StandardOutput + while (-not $out.EndOfStream) { + $line = $out.ReadLine() + Write-Output $line + } + + while (-not $process.WaitForExit(100)) { + # Non-blocking loop done to allow ctr-c interrupts + } + + $finished = $true + if ($process.ExitCode -ne 0) { + throw "Command failed to execute with exit code $($process.ExitCode): $command $commandArgs" + } + } + finally { + # If we didn't finish then an error occured or the user hit ctrl-c. Either + # way kill the process + if (-not $finished) { + $process.Kill() + } + } +} + +# Handy function for executing a windows command which needs to go through +# windows command line parsing. +# +# Use this when the command arguments are stored in a variable. Particularly +# when the variable needs reparsing by the windows command line. Example: +# +# $args = "/p:ManualBuild=true Test.proj" +# Exec-Command $msbuild $args +# +function Exec-Command([string]$command, [string]$commandArgs) { + Exec-CommandCore -command $command -commandArgs $commandargs -useConsole:$false +} + +# Functions exactly like Exec-Command but lets the process re-use the current +# console. This means items like colored output will function correctly. +# +# In general this command should be used in place of +# Exec-Command $msbuild $args | Out-Host +# +function Exec-Console([string]$command, [string]$commandArgs) { + Exec-CommandCore -command $command -commandArgs $commandargs -useConsole:$true +} + +# Handy function for executing a powershell script in a clean environment with +# arguments. Prefer this over & sourcing a script as it will both use a clean +# environment and do proper error checking +function Exec-Script([string]$script, [string]$scriptArgs = "") { + Exec-Command "powershell" "-noprofile -executionPolicy RemoteSigned -file `"$script`" $scriptArgs" +} + +# Ensure the proper .NET Core SDK is available. Returns the location to the dotnet.exe. +function Ensure-DotnetSdk() { + return Join-Path (InitializeDotNetCli -install:$true) "dotnet.exe" +} + +function Get-VersionCore([string]$name, [string]$versionFile) { + $name = $name.Replace(".", "") + $name = $name.Replace("-", "") + $nodeName = "$($name)Version" + $x = [xml](Get-Content -raw $versionFile) + $node = $x.SelectSingleNode("//Project/PropertyGroup/$nodeName") + if ($node -ne $null) { + return $node.InnerText + } + + throw "Cannot find package $name in $versionFile" + +} + +# Return the version of the NuGet package as used in this repo +function Get-PackageVersion([string]$name) { + return Get-VersionCore $name (Join-Path $EngRoot "Versions.props") +} + +# Locate the directory where our NuGet packages will be deployed. Needs to be kept in sync +# with the logic in Version.props +function Get-PackagesDir() { + $d = $null + if ($env:NUGET_PACKAGES -ne $null) { + $d = $env:NUGET_PACKAGES + } + else { + $d = Join-Path $env:UserProfile ".nuget\packages\" + } + + Create-Directory $d + return $d +} + +# Locate the directory of a specific NuGet package which is restored via our main +# toolset values. +function Get-PackageDir([string]$name, [string]$version = "") { + if ($version -eq "") { + $version = Get-PackageVersion $name + } + + $p = Get-PackagesDir + $p = Join-Path $p $name.ToLowerInvariant() + $p = Join-Path $p $version + return $p +} + +function Run-MSBuild([string]$projectFilePath, [string]$buildArgs = "", [string]$logFileName = "", [switch]$parallel = $true, [switch]$summary = $true, [switch]$warnAsError = $true, [string]$configuration = $script:configuration) { + # Because we override the C#/VB toolset to build against our LKG package, it is important + # that we do not reuse MSBuild nodes from other jobs/builds on the machine. Otherwise, + # we'll run into issues such as https://github.com/dotnet/roslyn/issues/6211. + # MSBuildAdditionalCommandLineArgs= + $args = "/p:TreatWarningsAsErrors=true /nologo /nodeReuse:false /p:Configuration=$configuration "; + + if ($warnAsError) { + $args += " /warnaserror" + } + + if ($summary) { + $args += " /consoleloggerparameters:Verbosity=minimal;summary" + } else { + $args += " /consoleloggerparameters:Verbosity=minimal" + } + + if ($parallel) { + $args += " /m" + } + + if ($binaryLog) { + if ($logFileName -eq "") { + $logFileName = [IO.Path]::GetFileNameWithoutExtension($projectFilePath) + } + $logFileName = [IO.Path]::ChangeExtension($logFileName, ".binlog") + $logFilePath = Join-Path $LogDir $logFileName + $args += " /bl:$logFilePath" + } + + if ($official) { + $args += " /p:OfficialBuildId=" + $env:BUILD_BUILDNUMBER + } + + if ($ci) { + $args += " /p:ContinuousIntegrationBuild=true" + } + + if ($bootstrapDir -ne "") { + $args += " /p:BootstrapBuildPath=$bootstrapDir" + } + + $args += " $buildArgs" + $args += " $projectFilePath" + $args += " $properties" + + $buildTool = InitializeBuildTool + Exec-Console $buildTool.Path "$($buildTool.Command) $args" +} + +# Create a bootstrap build of the compiler. Returns the directory where the bootstrap build +# is located. +# +# Important to not set $script:bootstrapDir here yet as we're actually in the process of +# building the bootstrap. +function Make-BootstrapBuild() { + Write-Host "Building bootstrap compiler" + + $dir = Join-Path $ArtifactsDir "Bootstrap" + Remove-Item -re $dir -ErrorAction SilentlyContinue + Create-Directory $dir + + # prepare FsLex and Fsyacc + Run-MSBuild "$RepoRoot\src\buildtools\buildtools.proj" "/restore /t:Build" -logFileName "BuildTools" -configuration $bootstrapConfiguration + Copy-Item "$ArtifactsDir\bin\fslex\$bootstrapConfiguration\netcoreapp2.0\*" -Destination $dir + Copy-Item "$ArtifactsDir\bin\fsyacc\$bootstrapConfiguration\netcoreapp2.0\*" -Destination $dir + + # prepare compiler + $projectPath = "$RepoRoot\proto.proj" + Run-MSBuild $projectPath "/restore /t:Build" -logFileName "Bootstrap" -configuration $bootstrapConfiguration + Copy-Item "$ArtifactsDir\bin\fsc\$bootstrapConfiguration\$bootstrapTfm\*" -Destination $dir + + Write-Host "Cleaning Bootstrap compiler artifacts" + Run-MSBuild $projectPath "/t:Clean" -logFileName "BootstrapClean" -configuration $bootstrapConfiguration + + return $dir +} diff --git a/eng/build.sh b/eng/build.sh new file mode 100755 index 0000000000000000000000000000000000000000..c2d362c267fb9529925c0be3cbbf015b6f62677a --- /dev/null +++ b/eng/build.sh @@ -0,0 +1,245 @@ +#!/usr/bin/env bash +# Copyright (c) .NET Foundation and contributors. All rights reserved. +# Licensed under the MIT license. See LICENSE file in the project root for full license information. + +# Stop script if unbound variable found (use ${var:-} if intentional) +set -u + +usage() +{ + echo "Common settings:" + echo " --configuration Build configuration: 'Debug' or 'Release' (short: -c)" + echo " --verbosity Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic] (short: -v)" + echo " --binaryLog Create MSBuild binary log (short: -bl)" + echo "" + echo "Actions:" + echo " --restore Restore projects required to build (short: -r)" + echo " --build Build all projects (short: -b)" + echo " --rebuild Rebuild all projects" + echo " --pack Build nuget packages" + echo " --publish Publish build artifacts" + echo " --help Print help and exit" + echo "" + echo "Test actions:" + echo " --testcoreclr Run unit tests on .NET Core (short: --test, -t)" + echo "" + echo "Advanced settings:" + echo " --ci Building in CI" + echo " --docker Run in a docker container if applicable" + echo " --skipAnalyzers Do not run analyzers during build operations" + echo " --prepareMachine Prepare machine for CI run, clean up processes after build" + echo "" + echo "Command line arguments starting with '/p:' are passed through to MSBuild." +} + +source="${BASH_SOURCE[0]}" + +# resolve $source until the file is no longer a symlink +while [[ -h "$source" ]]; do + scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + source="$(readlink "$source")" + # if $source was a relative symlink, we need to resolve it relative to the path where the + # symlink file was located + [[ $source != /* ]] && source="$scriptroot/$source" +done +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + +restore=false +build=false +rebuild=false +pack=false +publish=false +test_core_clr=false + +configuration="Debug" +verbosity='minimal' +binary_log=false +ci=false +skip_analyzers=false +prepare_machine=false +properties="" + +docker=false +args="" + +if [[ $# = 0 ]] +then + usage + exit 1 +fi + +while [[ $# > 0 ]]; do + opt="$(echo "$1" | awk '{print tolower($0)}')" + case "$opt" in + --help|-h) + usage + exit 0 + ;; + --configuration|-c) + configuration=$2 + args="$args $1" + shift + ;; + --verbosity|-v) + verbosity=$2 + args="$args $1" + shift + ;; + --binarylog|-bl) + binary_log=true + ;; + --restore|-r) + restore=true + ;; + --build|-b) + build=true + ;; + --rebuild) + rebuild=true + ;; + --pack) + pack=true + ;; + --publish) + publish=true + ;; + --testcoreclr|--test|-t) + test_core_clr=true + ;; + --ci) + ci=true + ;; + --skipanalyzers) + skip_analyzers=true + ;; + --preparemachine) + prepare_machine=true + ;; + --docker) + docker=true + shift + continue + ;; + /p:*) + properties="$properties $1" + ;; + *) + echo "Invalid argument: $1" + usage + exit 1 + ;; + esac + args="$args $1" + shift +done + +# Import Arcade functions +. "$scriptroot/common/tools.sh" + +function TestUsingNUnit() { + testproject="" + targetframework="" + while [[ $# > 0 ]]; do + opt="$(echo "$1" | awk '{print tolower($0)}')" + case "$opt" in + --testproject) + testproject=$2 + shift + ;; + --targetframework) + targetframework=$2 + shift + ;; + *) + echo "Invalid argument: $1" + exit 1 + ;; + esac + shift + done + + if [[ "$testproject" == "" || "$targetframework" == "" ]]; then + echo "--testproject and --targetframework must be specified" + exit 1 + fi + + projectname=$(basename -- "$testproject") + projectname="${projectname%.*}" + testlogpath="$artifacts_dir/TestResults/$configuration/${projectname}_$targetframework.xml" + args="test \"$testproject\" --no-restore --no-build -c $configuration -f $targetframework --test-adapter-path . --logger \"nunit;LogFilePath=$testlogpath\"" + "$DOTNET_INSTALL_DIR/dotnet" $args +} + +function BuildSolution { + local solution="FSharp.sln" + echo "$solution:" + + InitializeToolset + local toolset_build_proj=$_InitializeToolset + + local bl="" + if [[ "$binary_log" = true ]]; then + bl="/bl:\"$log_dir/Build.binlog\"" + fi + + local projects="$repo_root/$solution" + + # https://github.com/dotnet/roslyn/issues/23736 + local enable_analyzers=!$skip_analyzers + UNAME="$(uname)" + if [[ "$UNAME" == "Darwin" ]]; then + enable_analyzers=false + fi + + # NuGet often exceeds the limit of open files on Mac and Linux + # https://github.com/NuGet/Home/issues/2163 + if [[ "$UNAME" == "Darwin" || "$UNAME" == "Linux" ]]; then + ulimit -n 6500 + fi + + local quiet_restore="" + if [[ "$ci" != true ]]; then + quiet_restore=true + fi + + # build bootstrap tools + bootstrap_config=Proto + MSBuild "$repo_root/src/buildtools/buildtools.proj" \ + /restore \ + /p:Configuration=$bootstrap_config \ + /t:Build + + bootstrap_dir=$artifacts_dir/Bootstrap + mkdir -p "$bootstrap_dir" + cp $artifacts_dir/bin/fslex/$bootstrap_config/netcoreapp2.0/* $bootstrap_dir + cp $artifacts_dir/bin/fsyacc/$bootstrap_config/netcoreapp2.0/* $bootstrap_dir + + # do real build + MSBuild $toolset_build_proj \ + $bl \ + /p:Configuration=$configuration \ + /p:Projects="$projects" \ + /p:RepoRoot="$repo_root" \ + /p:Restore=$restore \ + /p:Build=$build \ + /p:Rebuild=$rebuild \ + /p:Pack=$pack \ + /p:Publish=$publish \ + /p:UseRoslynAnalyzers=$enable_analyzers \ + /p:ContinuousIntegrationBuild=$ci \ + /p:QuietRestore=$quiet_restore \ + /p:QuietRestoreBinaryLog="$binary_log" \ + $properties +} + +InitializeDotNetCli $restore + +BuildSolution + +if [[ "$test_core_clr" == true ]]; then + TestUsingNUnit --testproject "$repo_root/tests/FSharp.Compiler.UnitTests/FSharp.Compiler.UnitTests.fsproj" --targetframework netcoreapp2.0 + TestUsingNUnit --testproject "$repo_root/tests/FSharp.Build.UnitTests/FSharp.Build.UnitTests.fsproj" --targetframework netcoreapp2.0 + TestUsingNUnit --testproject "$repo_root/tests/FSharp.Core.UnitTests/FSharp.Core.UnitTests.fsproj" --targetframework netcoreapp2.0 +fi + +ExitWithExitCode 0 diff --git a/eng/cibuild.sh b/eng/cibuild.sh new file mode 100755 index 0000000000000000000000000000000000000000..290f7ebaa583a891956ac3b813564ccb945ea780 --- /dev/null +++ b/eng/cibuild.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +source="${BASH_SOURCE[0]}" + +# resolve $SOURCE until the file is no longer a symlink +while [[ -h $source ]]; do + scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + source="$(readlink "$source")" + + # if $source was a relative symlink, we need to resolve it relative to the path where + # the symlink file was located + [[ $source != /* ]] && source="$scriptroot/$source" +done +scriptroot="$( cd -P "$( dirname "$source" )" && pwd)" + +echo "Building this commit:" +git show --no-patch --pretty=raw HEAD + +. "$scriptroot/build.sh" --ci --restore --build --pack --publish --binaryLog "$@" diff --git a/eng/common/PublishBuildAssets.cmd b/eng/common/PublishBuildAssets.cmd deleted file mode 100644 index 3c6e4ff829d57b395b706e75b381d7dc68255bd9..0000000000000000000000000000000000000000 --- a/eng/common/PublishBuildAssets.cmd +++ /dev/null @@ -1,3 +0,0 @@ -@echo off -powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0sdk-task.ps1""" -msbuildEngine dotnet -restore -projects PublishBuildAssets.proj -ci %*" -exit /b %ErrorLevel% diff --git a/eng/common/PublishToPackageFeed.proj b/eng/common/PublishToPackageFeed.proj index 7dc478d981f694d7777e540b332a9e533cf0fff3..25362ff060c11b97a4085f4621ab1a13268aeb23 100644 --- a/eng/common/PublishToPackageFeed.proj +++ b/eng/common/PublishToPackageFeed.proj @@ -10,25 +10,57 @@ netcoreapp2.1 - + + + + + - + - - + + + + + + + + + + + + + https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json + https://dotnetfeed.blob.core.windows.net/arcade-validation/index.json + + + + + AssetManifestPath="%(ManifestFiles.Identity)" + BlobAssetsBasePath="$(BlobBasePath)" + PackageAssetsBasePath="$(PackageBasePath)" /> diff --git a/eng/common/build.ps1 b/eng/common/build.ps1 index 8279dc713391bedb20b6ec8e68d071aa4bca6649..d0147db4bd52a5a31ad7844d0200185ddd448214 100644 --- a/eng/common/build.ps1 +++ b/eng/common/build.ps1 @@ -11,7 +11,7 @@ Param( [switch][Alias('b')]$build, [switch] $rebuild, [switch] $deploy, - [switch] $test, + [switch][Alias('t')]$test, [switch] $integrationTest, [switch] $performanceTest, [switch] $sign, @@ -40,10 +40,10 @@ function Print-Usage() { Write-Host " -rebuild Rebuild solution" Write-Host " -deploy Deploy built VSIXes" Write-Host " -deployDeps Deploy dependencies (e.g. VSIXes for integration tests)" - Write-Host " -test Run all unit tests in the solution" - Write-Host " -pack Package build outputs into NuGet packages and Willow components" + Write-Host " -test Run all unit tests in the solution (short: -t)" Write-Host " -integrationTest Run all integration tests in the solution" Write-Host " -performanceTest Run all performance tests in the solution" + Write-Host " -pack Package build outputs into NuGet packages and Willow components" Write-Host " -sign Sign build outputs" Write-Host " -publish Publish artifacts (e.g. symbols)" Write-Host "" @@ -51,9 +51,11 @@ function Print-Usage() { Write-Host "Advanced settings:" Write-Host " -projects Semi-colon delimited list of sln/proj's to build. Globbing is supported (*.sln)" Write-Host " -ci Set when running on CI server" - Write-Host " -prepareMachine Prepare machine for CI run" + Write-Host " -prepareMachine Prepare machine for CI run, clean up processes after build" + Write-Host " -warnAsError Sets warnaserror msbuild parameter ('true' or 'false')" Write-Host " -msbuildEngine Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)." Write-Host "" + Write-Host "Command line arguments not listed above are passed thru to msbuild." Write-Host "The above arguments can be shortened as much as to be unambiguous (e.g. -co for configuration, -t for test, etc.)." } @@ -99,12 +101,11 @@ function Build { /p:PerformanceTest=$performanceTest ` /p:Sign=$sign ` /p:Publish=$publish ` - /p:ContinuousIntegrationBuild=$ci ` @properties } try { - if ($help -or (($properties -ne $null) -and ($properties.Contains("/help") -or $properties.Contains("/?")))) { + if ($help -or (($null -ne $properties) -and ($properties.Contains("/help") -or $properties.Contains("/?")))) { Print-Usage exit 0 } diff --git a/eng/common/build.sh b/eng/common/build.sh old mode 100755 new mode 100644 index 4fe8b41ed706fee501774aed98918b9eb64ec5eb..40b1e8ec73e397178e200038d7815ac453695014 --- a/eng/common/build.sh +++ b/eng/common/build.sh @@ -10,20 +10,24 @@ set -e usage() { echo "Common settings:" - echo " --configuration Build configuration: 'Debug' or 'Release' (short: --c)" + echo " --configuration Build configuration: 'Debug' or 'Release' (short: -c)" echo " --verbosity Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic] (short: -v)" echo " --binaryLog Create MSBuild binary log (short: -bl)" + echo " --help Print help and exit (short: -h)" echo "" + echo "Actions:" echo " --restore Restore dependencies (short: -r)" - echo " --build Build all projects (short: -b)" - echo " --rebuild Rebuild all projects" - echo " --test Run all unit tests (short: -t)" + echo " --build Build solution (short: -b)" + echo " --rebuild Rebuild solution" + echo " --test Run all unit tests in the solution (short: -t)" + echo " --integrationTest Run all integration tests in the solution" + echo " --performanceTest Run all performance tests in the solution" + echo " --pack Package build outputs into NuGet packages and Willow components" echo " --sign Sign build outputs" echo " --publish Publish artifacts (e.g. symbols)" - echo " --pack Package build outputs into NuGet packages and Willow components" - echo " --help Print help and exit (short: -h)" echo "" + echo "Advanced settings:" echo " --projects Project or solution file(s) to build" echo " --ci Set when running on CI server" @@ -32,6 +36,7 @@ usage() echo " --warnAsError Sets warnaserror msbuild parameter ('true' or 'false')" echo "" echo "Command line arguments starting with '/p:' are passed through to MSBuild." + echo "Arguments can also be passed in with a single hyphen." } source="${BASH_SOURCE[0]}" @@ -50,10 +55,10 @@ restore=false build=false rebuild=false test=false -pack=false -publish=false integration_test=false performance_test=false +pack=false +publish=false sign=false public=false ci=false @@ -66,78 +71,82 @@ projects='' configuration='Debug' prepare_machine=false verbosity='minimal' + properties='' while [[ $# > 0 ]]; do - opt="$(echo "$1" | awk '{print tolower($0)}')" + opt="$(echo "${1/#--/-}" | awk '{print tolower($0)}')" case "$opt" in - --help|-h) + -help|-h) usage exit 0 ;; - --configuration|-c) + -configuration|-c) configuration=$2 shift ;; - --verbosity|-v) + -verbosity|-v) verbosity=$2 shift ;; - --binarylog|-bl) + -binarylog|-bl) binary_log=true ;; - --restore|-r) + -restore|-r) restore=true ;; - --build|-b) + -build|-b) build=true ;; - --rebuild) + -rebuild) rebuild=true ;; - --pack) + -pack) pack=true ;; - --test|-t) + -test|-t) test=true ;; - --integrationtest) + -integrationtest) integration_test=true ;; - --performancetest) + -performancetest) performance_test=true ;; - --sign) + -sign) sign=true ;; - --publish) + -publish) publish=true ;; - --preparemachine) + -preparemachine) prepare_machine=true ;; - --projects) + -projects) projects=$2 shift ;; - --ci) + -ci) ci=true ;; - --warnaserror) + -warnaserror) warn_as_error=$2 shift ;; - --nodereuse) + -nodereuse) node_reuse=$2 shift ;; - /p:*) + -p:*|/p:*) + properties="$properties $1" + ;; + -m:*|/m:*) properties="$properties $1" ;; - /m:*) + -bl:*|/bl:*) properties="$properties $1" ;; - /bl:*) + -dl:*|/dl:*) properties="$properties $1" ;; *) @@ -191,7 +200,6 @@ function Build { /p:PerformanceTest=$performance_test \ /p:Sign=$sign \ /p:Publish=$publish \ - /p:ContinuousIntegrationBuild=$ci \ $properties ExitWithExitCode 0 diff --git a/eng/common/cibuild.sh b/eng/common/cibuild.sh old mode 100755 new mode 100644 diff --git a/eng/common/cross/armel/tizen-build-rootfs.sh b/eng/common/cross/armel/tizen-build-rootfs.sh old mode 100755 new mode 100644 diff --git a/eng/common/cross/armel/tizen-fetch.sh b/eng/common/cross/armel/tizen-fetch.sh old mode 100755 new mode 100644 diff --git a/eng/common/cross/build-android-rootfs.sh b/eng/common/cross/build-android-rootfs.sh old mode 100755 new mode 100644 diff --git a/eng/common/cross/build-rootfs.sh b/eng/common/cross/build-rootfs.sh old mode 100755 new mode 100644 diff --git a/eng/common/darc-init.ps1 b/eng/common/darc-init.ps1 index 96cad844ba3b07791eef59f90c734bac13f49ea5..2467ebdd4225a7cdcaa1aa864d192e1ab373fcfe 100644 --- a/eng/common/darc-init.ps1 +++ b/eng/common/darc-init.ps1 @@ -19,7 +19,7 @@ function InstallDarcCli ($darcVersion) { # Until we can anonymously query the BAR API for the latest arcade-services # build applied to the PROD channel, this is hardcoded. if (-not $darcVersion) { - $darcVersion = '1.1.0-beta.19057.9' + $darcVersion = '1.1.0-beta.19151.3' } $arcadeServicesSource = 'https://dotnetfeed.blob.core.windows.net/dotnet-arcade/index.json' diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh old mode 100755 new mode 100644 index bad07c3ae618855db19f7e400033b80e6b9c750b..8d63dd711b2a828b5710ba8e1e3fb70623ad4bf3 --- a/eng/common/darc-init.sh +++ b/eng/common/darc-init.sh @@ -1,6 +1,24 @@ #!/usr/bin/env bash source="${BASH_SOURCE[0]}" +darcVersion="1.1.0-beta.19151.3" + +while [[ $# > 0 ]]; do + opt="$(echo "$1" | awk '{print tolower($0)}')" + case "$opt" in + --darcversion) + darcVersion=$2 + shift + ;; + *) + echo "Invalid argument: $1" + usage + exit 1 + ;; + esac + + shift +done # resolve $source until the file is no longer a symlink while [[ -h "$source" ]]; do @@ -27,12 +45,11 @@ function InstallDarcCli { echo $($dotnet_root/dotnet tool uninstall $darc_cli_package_name -g) fi - ReadGlobalVersion "Microsoft.DotNet.Arcade.Sdk" - local toolset_version=$_ReadGlobalVersion + local arcadeServicesSource="https://dotnetfeed.blob.core.windows.net/dotnet-arcade/index.json" echo "Installing Darc CLI version $toolset_version..." echo "You may need to restart your command shell if this is the first dotnet tool you have installed." - echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $toolset_version -v $verbosity -g) + echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g) } InstallDarcCli diff --git a/eng/common/generate-graph-files.ps1 b/eng/common/generate-graph-files.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..76f57076a3232af844e492c1a229390a22d66889 --- /dev/null +++ b/eng/common/generate-graph-files.ps1 @@ -0,0 +1,87 @@ +Param( + [Parameter(Mandatory=$true)][string] $barToken, # Token generated at https://maestro-prod.westus2.cloudapp.azure.com/Account/Tokens + [Parameter(Mandatory=$true)][string] $gitHubPat, # GitHub personal access token from https://github.com/settings/tokens (no auth scopes needed) + [Parameter(Mandatory=$true)][string] $azdoPat, # Azure Dev Ops tokens from https://dev.azure.com/dnceng/_details/security/tokens (code read scope needed) + [Parameter(Mandatory=$true)][string] $outputFolder, # Where the graphviz.txt file will be created + [string] $darcVersion = '1.1.0-beta.19169.5', # darc's version + [string] $graphvizVersion = '2.38', # GraphViz version + [switch] $includeToolset # Whether the graph should include toolset dependencies or not. i.e. arcade, optimization. For more about + # toolset dependencies see https://github.com/dotnet/arcade/blob/master/Documentation/Darc.md#toolset-vs-product-dependencies +) + +$ErrorActionPreference = "Stop" +. $PSScriptRoot\tools.ps1 + +Import-Module -Name (Join-Path $PSScriptRoot "native\CommonLibrary.psm1") + +function CheckExitCode ([string]$stage) +{ + $exitCode = $LASTEXITCODE + if ($exitCode -ne 0) { + Write-Host "Something failed in stage: '$stage'. Check for errors above. Exiting now..." + ExitWithExitCode $exitCode + } +} + +try { + Push-Location $PSScriptRoot + + Write-Host "Installing darc..." + . .\darc-init.ps1 -darcVersion $darcVersion + CheckExitCode "Running darc-init" + + $engCommonBaseDir = Join-Path $PSScriptRoot "native\" + $graphvizInstallDir = CommonLibrary\Get-NativeInstallDirectory + $nativeToolBaseUri = "https://netcorenativeassets.blob.core.windows.net/resource-packages/external" + $installBin = Join-Path $graphvizInstallDir "bin" + + Write-Host "Installing dot..." + .\native\install-tool.ps1 -ToolName graphviz -InstallPath $installBin -BaseUri $nativeToolBaseUri -CommonLibraryDirectory $engCommonBaseDir -Version $graphvizVersion -Verbose + + $darcExe = "$env:USERPROFILE\.dotnet\tools" + $darcExe = Resolve-Path "$darcExe\darc.exe" + + Create-Directory $outputFolder + + # Generate 3 graph descriptions: + # 1. Flat with coherency information + # 2. Graphviz (dot) file + # 3. Standard dependency graph + $graphVizFilePath = "$outputFolder\graphviz.txt" + $graphVizImageFilePath = "$outputFolder\graph.png" + $normalGraphFilePath = "$outputFolder\graph-full.txt" + $flatGraphFilePath = "$outputFolder\graph-flat.txt" + $baseOptions = "get-dependency-graph --github-pat $gitHubPat --azdev-pat $azdoPat --password $barToken" + + if ($includeToolset) { + Write-Host "Toolsets will be included in the graph..." + $baseOptions += " --include-toolset" + } + + Write-Host "Generating standard dependency graph..." + Invoke-Expression "& `"$darcExe`" $baseOptions --output-file $normalGraphFilePath" + CheckExitCode "Generating normal dependency graph" + + Write-Host "Generating flat dependency graph and graphviz file..." + Invoke-Expression "& `"$darcExe`" $baseOptions --flat --coherency --graphviz $graphVizFilePath --output-file $flatGraphFilePath" + CheckExitCode "Generating flat and graphviz dependency graph" + + Write-Host "Generating graph image $graphVizFilePath" + $dotFilePath = Join-Path $installBin "graphviz\$graphvizVersion\release\bin\dot.exe" + Invoke-Expression "& `"$dotFilePath`" -Tpng -o'$graphVizImageFilePath' `"$graphVizFilePath`"" + CheckExitCode "Generating graphviz image" + + Write-Host "'$graphVizFilePath', '$flatGraphFilePath', '$normalGraphFilePath' and '$graphVizImageFilePath' created!" +} +catch { + if (!$includeToolset) { + Write-Host "This might be a toolset repo which includes only toolset dependencies. " -NoNewline -ForegroundColor Yellow + Write-Host "Since -includeToolset is not set there is no graph to create. Include -includeToolset and try again..." -ForegroundColor Yellow + } + Write-Host $_ + Write-Host $_.Exception + Write-Host $_.ScriptStackTrace + ExitWithExitCode 1 +} finally { + Pop-Location +} \ No newline at end of file diff --git a/eng/common/init-tools-native.ps1 b/eng/common/init-tools-native.ps1 index e25c60fed423bd513e8e8dbd907e5ac6a068d061..495a563a758391689ab4153ae9fa788f409cdde0 100644 --- a/eng/common/init-tools-native.ps1 +++ b/eng/common/init-tools-native.ps1 @@ -98,10 +98,20 @@ try { Write-Verbose "Executing '$LocalInstallerCommand'" Invoke-Expression "$LocalInstallerCommand" if ($LASTEXITCODE -Ne "0") { - Write-Error "Execution failed" - exit 1 + $errMsg = "$ToolName installation failed" + if ((Get-Variable 'DoNotAbortNativeToolsInstallationOnFailure' -ErrorAction 'SilentlyContinue') -and $DoNotAbortNativeToolsInstallationOnFailure) { + Write-Warning $errMsg + $toolInstallationFailure = $true + } else { + Write-Error $errMsg + exit 1 + } } } + + if ((Get-Variable 'toolInstallationFailure' -ErrorAction 'SilentlyContinue') -and $toolInstallationFailure) { + exit 1 + } } else { Write-Host "No native tools defined in global.json" diff --git a/eng/common/init-tools-native.sh b/eng/common/init-tools-native.sh old mode 100755 new mode 100644 diff --git a/eng/common/internal/Directory.Build.props b/eng/common/internal/Directory.Build.props new file mode 100644 index 0000000000000000000000000000000000000000..e33179ef37344a904d608daf48f2165513b6d9a4 --- /dev/null +++ b/eng/common/internal/Directory.Build.props @@ -0,0 +1,4 @@ + + + + diff --git a/eng/common/internal/Tools.csproj b/eng/common/internal/Tools.csproj new file mode 100644 index 0000000000000000000000000000000000000000..1a81ff906f6ee880cd23981b38b1614ad076cfac --- /dev/null +++ b/eng/common/internal/Tools.csproj @@ -0,0 +1,23 @@ + + + + + net472 + false + + + + + + + + + + https://devdiv.pkgs.visualstudio.com/_packaging/8f470c7e-ac49-4afe-a6ee-cf784e438b93/nuget/v3/index.json; + https://devdiv.pkgs.visualstudio.com/_packaging/VS/nuget/v3/index.json; + + + + + + diff --git a/eng/common/msbuild.sh b/eng/common/msbuild.sh old mode 100755 new mode 100644 diff --git a/eng/common/native/common-library.sh b/eng/common/native/common-library.sh old mode 100755 new mode 100644 diff --git a/eng/common/native/install-cmake.sh b/eng/common/native/install-cmake.sh old mode 100755 new mode 100644 diff --git a/eng/common/sdk-task.ps1 b/eng/common/sdk-task.ps1 index 9ba7530122f6961d38a6f2adb02c14eef94214af..d0eec5163efe21259aa8a5ce20ab7f5ec6cb090a 100644 --- a/eng/common/sdk-task.ps1 +++ b/eng/common/sdk-task.ps1 @@ -1,48 +1,47 @@ [CmdletBinding(PositionalBinding=$false)] Param( - [string] $projects = "", - [string][Alias('v')]$verbosity = "minimal", + [string] $configuration = "Debug", + [string] $task, + [string] $verbosity = "minimal", [string] $msbuildEngine = $null, - [bool] $warnAsError = $true, - [switch][Alias('bl')]$binaryLog, - [switch][Alias('r')]$restore, - [switch] $ci, + [switch] $restore, [switch] $prepareMachine, [switch] $help, [Parameter(ValueFromRemainingArguments=$true)][String[]]$properties ) +$ci = $true +$binaryLog = $true +$warnAsError = $true + . $PSScriptRoot\tools.ps1 function Print-Usage() { - Write-Host "Common settings:" - Write-Host " -v[erbosity] Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]" - Write-Host " -[bl|binaryLog] Output binary log (short: -bl)" - Write-Host " -help Print help and exit" - Write-Host "" + Write-Host "Common settings:" + Write-Host " -task Name of Arcade task (name of a project in SdkTasks directory of the Arcade SDK package)" + Write-Host " -restore Restore dependencies" + Write-Host " -verbosity Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]" + Write-Host " -help Print help and exit" + Write-Host "" - Write-Host "Advanced settings:" - Write-Host " -restore Restore dependencies (short: -r)" - Write-Host " -projects Semi-colon delimited list of sln/proj's from the Arcade sdk to build. Globbing is supported (*.sln)" - Write-Host " -ci Set when running on CI server" - Write-Host " -prepareMachine Prepare machine for CI run" - Write-Host " -msbuildEngine Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)." - Write-Host "" - Write-Host "Command line arguments not listed above are passed thru to msbuild." - Write-Host "The above arguments can be shortened as much as to be unambiguous (e.g. -co for configuration, -t for test, etc.)." + Write-Host "Advanced settings:" + Write-Host " -prepareMachine Prepare machine for CI run" + Write-Host " -msbuildEngine Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)." + Write-Host "" + Write-Host "Command line arguments not listed above are passed thru to msbuild." } -function Build { - $toolsetBuildProj = InitializeToolset +function Build([string]$target) { + $logSuffix = if ($target -eq "Execute") { "" } else { ".$target" } + $log = Join-Path $LogDir "$task$logSuffix.binlog" + $outputPath = Join-Path $ToolsetDir "$task\\" - $toolsetBuildProj = Join-Path (Split-Path $toolsetBuildProj -Parent) "SdkTasks\SdkTask.proj" - $bl = if ($binaryLog) { "/bl:" + (Join-Path $LogDir "SdkTask.binlog") } else { "" } - MSBuild $toolsetBuildProj ` - $bl ` - /p:Projects=$projects ` - /p:Restore=$restore ` + MSBuild $taskProject ` + /bl:$log ` + /t:$target ` + /p:Configuration=$configuration ` /p:RepoRoot=$RepoRoot ` - /p:ContinuousIntegrationBuild=$ci ` + /p:BaseIntermediateOutputPath=$outputPath ` @properties } @@ -52,17 +51,23 @@ try { exit 0 } - if ($projects -eq "") { - Write-Error "Missing required parameter '-projects '" + if ($task -eq "") { + Write-Host "Missing required parameter '-task '" -ForegroundColor Red Print-Usage ExitWithExitCode 1 } - if ($ci) { - $binaryLog = $true + $taskProject = GetSdkTaskProject $task + if (!(Test-Path $taskProject)) { + Write-Host "Unknown task: $task" -ForegroundColor Red + ExitWithExitCode 1 + } + + if ($restore) { + Build "Restore" } - Build + Build "Execute" } catch { Write-Host $_ diff --git a/eng/common/templates/job/generate-graph-files.yml b/eng/common/templates/job/generate-graph-files.yml new file mode 100644 index 0000000000000000000000000000000000000000..e54ce956f9088e28bd87ec6a90774e3a1b2e9b47 --- /dev/null +++ b/eng/common/templates/job/generate-graph-files.yml @@ -0,0 +1,48 @@ +parameters: + # Optional: dependencies of the job + dependsOn: '' + + # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool + pool: {} + + # Optional: Include toolset dependencies in the generated graph files + includeToolset: false + +jobs: +- job: Generate_Graph_Files + + dependsOn: ${{ parameters.dependsOn }} + + displayName: Generate Graph Files + + pool: ${{ parameters.pool }} + + variables: + # Publish-Build-Assets provides: MaestroAccessToken, BotAccount-dotnet-maestro-bot-PAT + # DotNet-AllOrgs-Darc-Pats provides: dn-bot-devdiv-dnceng-rw-code-pat + - group: Publish-Build-Assets + - group: DotNet-AllOrgs-Darc-Pats + - name: _GraphArguments + value: -gitHubPat $(BotAccount-dotnet-maestro-bot-PAT) + -azdoPat $(dn-bot-devdiv-dnceng-rw-code-pat) + -barToken $(MaestroAccessToken) + -outputFolder '$(Build.StagingDirectory)/GraphFiles/' + - ${{ if ne(parameters.includeToolset, 'false') }}: + - name: _GraphArguments + value: ${{ variables._GraphArguments }} -includeToolset + + steps: + - task: PowerShell@2 + displayName: Generate Graph Files + inputs: + filePath: eng\common\generate-graph-files.ps1 + arguments: $(_GraphArguments) + continueOnError: true + - task: PublishBuildArtifacts@1 + displayName: Publish Graph to Artifacts + inputs: + PathtoPublish: '$(Build.StagingDirectory)/GraphFiles' + PublishLocation: Container + ArtifactName: GraphFiles + continueOnError: true + condition: always() diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml index 5e293db35d7efac7e08122defc489e8a16568b26..74dd81fdc0a356d50a913d7c1220cb1a832f96fc 100644 --- a/eng/common/templates/job/job.yml +++ b/eng/common/templates/job/job.yml @@ -41,18 +41,11 @@ parameters: enablePublishTestResults: false # Optional: enable sending telemetry - # if 'true', these "variables" must be specified in the variables object or as part of the queue matrix - # _HelixBuildConfig - differentiate between Debug, Release, other - # _HelixType - Example: build/product/ - # _HelixSource - Example: official/dotnet/arcade/$(Build.SourceBranch) enableTelemetry: false - # Optional: If specified, then automatically derive "_HelixSource" variable for telemetry + # Optional: define the helix repo for telemeetry (example: 'dotnet/arcade') helixRepo: '' - # Optional: Define the type for helix telemetry (must end in '/') - helixType: build/product/ - # Required: name of the job name: '' @@ -115,29 +108,24 @@ jobs: - name: ${{ pair.key }} value: ${{ pair.value }} - # Add additional variables - - ${{ if and(ne(parameters.helixRepo, ''), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}: - - name: _HelixSource - value: official/${{ parameters.helixRepo }}/$(Build.SourceBranch) - - ${{ if and(ne(parameters.helixRepo, ''), or(ne(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest'))) }}: - - name: _HelixSource - value: pr/${{ parameters.helixRepo }}/$(Build.SourceBranch) - - name: _HelixType - value: ${{ parameters.helixType }} - - name: _HelixBuildConfig - value: $(_BuildConfig) + # DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds + - ${{ if and(eq(parameters.enableTelemetry, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - group: DotNet-HelixApi-Access ${{ if ne(parameters.workspace, '') }}: workspace: ${{ parameters.workspace }} steps: - ${{ if eq(parameters.enableTelemetry, 'true') }}: - - template: /eng/common/templates/steps/telemetry-start.yml - parameters: - buildConfig: $(_HelixBuildConfig) - helixSource: $(_HelixSource) - helixType: $(_HelixType) + # Telemetry tasks are built from https://github.com/dotnet/arcade-extensions + - task: sendStartTelemetry@0 + displayName: 'Send Helix Start Telemetry' + inputs: + helixRepo: ${{ parameters.helixRepo }} + buildConfig: $(_BuildConfig) runAsPublic: ${{ parameters.runAsPublic }} + continueOnError: ${{ parameters.continueOnError }} + condition: always() - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: @@ -165,11 +153,15 @@ jobs: TeamName: $(_TeamName) - ${{ if eq(parameters.enableTelemetry, 'true') }}: - - template: /eng/common/templates/steps/telemetry-end.yml + # Telemetry tasks are built from https://github.com/dotnet/arcade-extensions + - task: sendEndTelemetry@0 + displayName: 'Send Helix End Telemetry' + continueOnError: ${{ parameters.continueOnError }} + condition: always() - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}: - task: PublishBuildArtifacts@1 - displayName: Publish Logs to VSTS + displayName: Publish Logs inputs: PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)' PublishLocation: Container @@ -187,7 +179,7 @@ jobs: continueOnError: true condition: always() - - ${{ if and(eq(parameters.enablePublishBuildAssets, true), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - ${{ if and(eq(parameters.enablePublishBuildAssets, true), ne(variables['_PublishUsingPipelines'], 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - task: CopyFiles@2 displayName: Gather Asset Manifests inputs: @@ -202,4 +194,4 @@ jobs: PublishLocation: Container ArtifactName: AssetManifests continueOnError: ${{ parameters.continueOnError }} - condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true')) \ No newline at end of file + condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true')) diff --git a/eng/common/templates/job/publish-build-assets.yml b/eng/common/templates/job/publish-build-assets.yml index c094658fefc73d88fe793d47a88e16c6c40af206..620bd3c62e78a395585b15e04c2b232a5845fe05 100644 --- a/eng/common/templates/job/publish-build-assets.yml +++ b/eng/common/templates/job/publish-build-assets.yml @@ -20,6 +20,9 @@ parameters: # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. runAsPublic: false + # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing + publishUsingPipelines: false + jobs: - job: Asset_Registry_Publish @@ -44,12 +47,16 @@ jobs: downloadPath: '$(Build.StagingDirectory)/Download' condition: ${{ parameters.condition }} continueOnError: ${{ parameters.continueOnError }} - - script: eng\common\publishbuildassets.cmd - /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' - /p:BuildAssetRegistryToken=$(MaestroAccessToken) - /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com - /p:Configuration=$(_BuildConfig) + - task: PowerShell@2 displayName: Publish Build Assets + inputs: + filePath: eng\common\sdk-task.ps1 + arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet + /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' + /p:BuildAssetRegistryToken=$(MaestroAccessToken) + /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com + /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} + /p:Configuration=$(_BuildConfig) condition: ${{ parameters.condition }} continueOnError: ${{ parameters.continueOnError }} - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}: diff --git a/eng/common/templates/jobs/jobs.yml b/eng/common/templates/jobs/jobs.yml index c7226b12ed28516df17e61a0b18dccdec5668b60..6a2f98c036f61541af4ed2b7dd96c5211fa4c6e9 100644 --- a/eng/common/templates/jobs/jobs.yml +++ b/eng/common/templates/jobs/jobs.yml @@ -14,25 +14,28 @@ parameters: # Optional: Enable publishing to the build asset registry enablePublishBuildAssets: false + # Optional: Enable publishing using release pipelines + enablePublishUsingPipelines: false + + graphFileGeneration: + # Optional: Enable generating the graph files at the end of the build + enabled: false + # Optional: Include toolset dependencies in the generated graph files + includeToolset: false + # Optional: Include PublishTestResults task enablePublishTestResults: false # Optional: enable sending telemetry - # if 'true', these "variables" must be specified in the variables object or as part of the queue matrix - # _HelixBuildConfig - differentiate between Debug, Release, other - # _HelixType - Example: build/product/ - # _HelixSource - Example: official/dotnet/arcade/$(Build.SourceBranch) + # if enabled then the 'helixRepo' parameter should also be specified enableTelemetry: false # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job jobs: [] - # Optional: If specified, then automatically derive "_HelixSource" variable for telemetry + # Optional: define the helix repo for telemetry (example: 'dotnet/arcade') helixRepo: '' - # Optional: Define the type for helix telemetry (must end in '/') - helixType: build/product/ - # Optional: Override automatically derived dependsOn value for "publish build assets" job publishBuildAssetsDependsOn: '' @@ -73,5 +76,15 @@ jobs: pool: vmImage: vs2017-win2016 runAsPublic: ${{ parameters.runAsPublic }} + publishUsingPipelines: ${{ parameters.enablePublishUsingPipelines }} enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }} - + +- ${{ if and(eq(parameters.graphFileGeneration.enabled, true), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - template: ../job/generate-graph-files.yml + parameters: + continueOnError: ${{ parameters.continueOnError }} + includeToolset: ${{ parameters.graphFileGeneration.includeToolset }} + dependsOn: + - Asset_Registry_Publish + pool: + vmImage: vs2017-win2016 diff --git a/eng/common/templates/phases/publish-build-assets.yml b/eng/common/templates/phases/publish-build-assets.yml index 0df6203b506fa06c291ae492f5325ae8fb32914a..211967debab51613e905a0f3f673e93ad1b7d359 100644 --- a/eng/common/templates/phases/publish-build-assets.yml +++ b/eng/common/templates/phases/publish-build-assets.yml @@ -28,12 +28,15 @@ phases: SecretsFilter: 'MaestroAccessToken' condition: ${{ parameters.condition }} continueOnError: ${{ parameters.continueOnError }} - - script: eng\common\publishbuildassets.cmd - -configuration $(_BuildConfig) - /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' - /p:BuildAssetRegistryToken=$(MaestroAccessToken) - /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com + - task: PowerShell@2 displayName: Publish Build Assets + inputs: + filePath: eng\common\sdk-task.ps1 + arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet + /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' + /p:BuildAssetRegistryToken=$(MaestroAccessToken) + /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com + /p:Configuration=$(_BuildConfig) condition: ${{ parameters.condition }} continueOnError: ${{ parameters.continueOnError }} - task: PublishBuildArtifacts@1 diff --git a/eng/common/templates/steps/send-to-helix.yml b/eng/common/templates/steps/send-to-helix.yml index a5835c0f4738026646352195be5e32d244f5a80f..0187597681e3e4d7eed85365a598f108a2168bda 100644 --- a/eng/common/templates/steps/send-to-helix.yml +++ b/eng/common/templates/steps/send-to-helix.yml @@ -1,32 +1,34 @@ parameters: - HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/ - HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/' - HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number - HelixTargetQueues: '' # required -- semicolon delimited list of Helix queues to test on; see https://helix.dot.net/api/2018-03-14/info/queues for a list of queues - HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group - HelixPreCommands: '' # optional -- commands to run before Helix work item execution - HelixPostCommands: '' # optional -- commands to run after Helix work item execution - WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects - WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects - WorkItemTimeout: '' # optional -- a timeout in seconds for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects - CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload - XUnitProjects: '' # optional -- semicolon delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true - XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects - XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner - XUnitRunnerVersion: '' # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects - IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion - DotNetCliPackageType: '' # optional -- either 'sdk' or 'runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/master/release-notes/releases.json - DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/master/release-notes/releases.json - EnableXUnitReporter: false # optional -- true enables XUnit result reporting to Mission Control - WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget." - IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set - Creator: '' # optional -- if the build is external, use this to specify who is sending the job - condition: succeeded() # optional -- condition for step to execute; defaults to succeeded() - continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false + HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/ + HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/' + HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number + HelixTargetQueues: '' # required -- semicolon delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues + HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group + HelixPreCommands: '' # optional -- commands to run before Helix work item execution + HelixPostCommands: '' # optional -- commands to run after Helix work item execution + WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects + WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects + WorkItemTimeout: '' # optional -- a timeout in seconds for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects + CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload + XUnitProjects: '' # optional -- semicolon delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true + XUnitWorkItemTimeout: '' # optional -- the workitem timeout in seconds for all workitems created from the xUnit projects specified by XUnitProjects + XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects + XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner + XUnitRunnerVersion: '' # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects + IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion + DotNetCliPackageType: '' # optional -- either 'sdk' or 'runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/master/release-notes/releases.json + DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/master/release-notes/releases.json + EnableXUnitReporter: false # optional -- true enables XUnit result reporting to Mission Control + WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget." + IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set + Creator: '' # optional -- if the build is external, use this to specify who is sending the job + DisplayNamePrefix: 'Send job to Helix' # optional -- rename the beginning of the displayName of the steps in AzDO + condition: succeeded() # optional -- condition for step to execute; defaults to succeeded() + continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false steps: - - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY\eng\common\helixpublish.proj /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' - displayName: Send job to Helix (Windows) + - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY\eng\common\helixpublish.proj /restore /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' + displayName: ${{ parameters.DisplayNamePrefix }} (Windows) env: BuildConfig: $(_BuildConfig) HelixSource: ${{ parameters.HelixSource }} @@ -41,6 +43,7 @@ steps: WorkItemTimeout: ${{ parameters.WorkItemTimeout }} CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} XUnitProjects: ${{ parameters.XUnitProjects }} + XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} @@ -50,10 +53,11 @@ steps: EnableXUnitReporter: ${{ parameters.EnableXUnitReporter }} WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} Creator: ${{ parameters.Creator }} + SYSTEM_ACCESSTOKEN: $(System.AccessToken) condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT')) continueOnError: ${{ parameters.continueOnError }} - - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/helixpublish.proj /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog - displayName: Send job to Helix (Unix) + - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/helixpublish.proj /restore /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog + displayName: ${{ parameters.DisplayNamePrefix }} (Unix) env: BuildConfig: $(_BuildConfig) HelixSource: ${{ parameters.HelixSource }} @@ -68,6 +72,7 @@ steps: WorkItemTimeout: ${{ parameters.WorkItemTimeout }} CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} XUnitProjects: ${{ parameters.XUnitProjects }} + XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} @@ -77,5 +82,6 @@ steps: EnableXUnitReporter: ${{ parameters.EnableXUnitReporter }} WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} Creator: ${{ parameters.Creator }} + SYSTEM_ACCESSTOKEN: $(System.AccessToken) condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} + continueOnError: ${{ parameters.continueOnError }} \ No newline at end of file diff --git a/eng/common/templates/steps/telemetry-end.yml b/eng/common/templates/steps/telemetry-end.yml index 9b61481e7e194b3ca068f867c7477fe8de3858f7..fadc04ca1b9a3e7126c13d8ed252d8834fbe862f 100644 --- a/eng/common/templates/steps/telemetry-end.yml +++ b/eng/common/templates/steps/telemetry-end.yml @@ -1,3 +1,7 @@ +parameters: + maxRetries: 5 + retryDelay: 10 # in seconds + steps: - bash: | if [ "$AGENT_JOBSTATUS" = "Succeeded" ] || [ "$AGENT_JOBSTATUS" = "PartiallySucceeded" ]; then @@ -7,27 +11,41 @@ steps: fi warningCount=0 - # create a temporary file for curl output - res=`mktemp` - - curlResult=` - curl --verbose --output $res --write-out "%{http_code}"\ - -H 'Content-Type: application/json' \ - -H "X-Helix-Job-Token: $Helix_JobToken" \ - -H 'Content-Length: 0' \ - -X POST -G "https://helix.dot.net/api/2018-03-14/telemetry/job/build/$Helix_WorkItemId/finish" \ - --data-urlencode "errorCount=$errorCount" \ - --data-urlencode "warningCount=$warningCount"` - curlStatus=$? - - if [ $curlStatus -eq 0 ]; then - if [ $curlResult -gt 299 ] || [ $curlResult -lt 200 ]; then - curlStatus=$curlResult + curlStatus=1 + retryCount=0 + # retry loop to harden against spotty telemetry connections + # we don't retry successes and 4xx client errors + until [[ $curlStatus -eq 0 || ( $curlStatus -ge 400 && $curlStatus -le 499 ) || $retryCount -ge $MaxRetries ]] + do + if [ $retryCount -gt 0 ]; then + echo "Failed to send telemetry to Helix; waiting $RetryDelay seconds before retrying..." + sleep $RetryDelay fi - fi + + # create a temporary file for curl output + res=`mktemp` + + curlResult=` + curl --verbose --output $res --write-out "%{http_code}"\ + -H 'Content-Type: application/json' \ + -H "X-Helix-Job-Token: $Helix_JobToken" \ + -H 'Content-Length: 0' \ + -X POST -G "https://helix.dot.net/api/2018-03-14/telemetry/job/build/$Helix_WorkItemId/finish" \ + --data-urlencode "errorCount=$errorCount" \ + --data-urlencode "warningCount=$warningCount"` + curlStatus=$? + + if [ $curlStatus -eq 0 ]; then + if [ $curlResult -gt 299 ] || [ $curlResult -lt 200 ]; then + curlStatus=$curlResult + fi + fi + + let retryCount++ + done if [ $curlStatus -ne 0 ]; then - echo "Failed to Send Build Finish information" + echo "Failed to Send Build Finish information after $retryCount retries" vstsLogOutput="vso[task.logissue type=error;sourcepath=templates/steps/telemetry-end.yml;code=1;]Failed to Send Build Finish information: $curlStatus" echo "##$vstsLogOutput" exit 1 @@ -37,6 +55,8 @@ steps: # defined via VSTS variables in start-job.sh Helix_JobToken: $(Helix_JobToken) Helix_WorkItemId: $(Helix_WorkItemId) + MaxRetries: ${{ parameters.maxRetries }} + RetryDelay: ${{ parameters.retryDelay }} condition: and(always(), ne(variables['Agent.Os'], 'Windows_NT')) - powershell: | if (($env:Agent_JobStatus -eq 'Succeeded') -or ($env:Agent_JobStatus -eq 'PartiallySucceeded')) { @@ -46,13 +66,30 @@ steps: } $WarningCount = 0 - try { - Invoke-RestMethod -Uri "https://helix.dot.net/api/2018-03-14/telemetry/job/build/$env:Helix_WorkItemId/finish?errorCount=$ErrorCount&warningCount=$WarningCount" -Method Post -ContentType "application/json" -Body "" ` - -Headers @{ 'X-Helix-Job-Token'=$env:Helix_JobToken } + # Basic retry loop to harden against server flakiness + $retryCount = 0 + while ($retryCount -lt $env:MaxRetries) { + try { + Invoke-RestMethod -Uri "https://helix.dot.net/api/2018-03-14/telemetry/job/build/$env:Helix_WorkItemId/finish?errorCount=$ErrorCount&warningCount=$WarningCount" -Method Post -ContentType "application/json" -Body "" ` + -Headers @{ 'X-Helix-Job-Token'=$env:Helix_JobToken } + break + } + catch { + $statusCode = $_.Exception.Response.StatusCode.value__ + if ($statusCode -ge 400 -and $statusCode -le 499) { + Write-Host "##vso[task.logissue]error Failed to send telemetry to Helix (status code $statusCode); not retrying (4xx client error)" + Write-Host "##vso[task.logissue]error ", $_.Exception.GetType().FullName, $_.Exception.Message + exit 1 + } + Write-Host "Failed to send telemetry to Helix (status code $statusCode); waiting $env:RetryDelay seconds before retrying..." + $retryCount++ + sleep $env:RetryDelay + continue + } } - catch { - Write-Error $_ - Write-Error $_.Exception + + if ($retryCount -ge $env:MaxRetries) { + Write-Host "##vso[task.logissue]error Failed to send telemetry to Helix after $retryCount retries." exit 1 } displayName: Send Windows Build End Telemetry @@ -60,4 +97,6 @@ steps: # defined via VSTS variables in start-job.ps1 Helix_JobToken: $(Helix_JobToken) Helix_WorkItemId: $(Helix_WorkItemId) + MaxRetries: ${{ parameters.maxRetries }} + RetryDelay: ${{ parameters.retryDelay }} condition: and(always(),eq(variables['Agent.Os'], 'Windows_NT')) diff --git a/eng/common/templates/steps/telemetry-start.yml b/eng/common/templates/steps/telemetry-start.yml index 79c128c5de8709fec7b8490d33945e4ecc5ce9ab..32c01ef0b553b44f545db2740aaef0ab2f67350c 100644 --- a/eng/common/templates/steps/telemetry-start.yml +++ b/eng/common/templates/steps/telemetry-start.yml @@ -3,6 +3,8 @@ parameters: helixType: 'undefined_defaulted_in_telemetry.yml' buildConfig: '' runAsPublic: false + maxRetries: 5 + retryDelay: 10 # in seconds steps: - ${{ if and(eq(parameters.runAsPublic, 'false'), not(eq(variables['System.TeamProject'], 'public'))) }}: @@ -30,7 +32,7 @@ steps: } } JobListStuff - + cat $jobInfo # create a temporary file for curl output @@ -38,30 +40,44 @@ steps: accessTokenParameter="?access_token=$HelixApiAccessToken" - curlResult=` - cat $jobInfo |\ - curl --trace - --verbose --output $res --write-out "%{http_code}" \ - -H 'Content-Type: application/json' \ - -X POST "https://helix.dot.net/api/2018-03-14/telemetry/job$accessTokenParameter" -d @-` - curlStatus=$? + curlStatus=1 + retryCount=0 + # retry loop to harden against spotty telemetry connections + # we don't retry successes and 4xx client errors + until [[ $curlStatus -eq 0 || ( $curlStatus -ge 400 && $curlStatus -le 499 ) || $retryCount -ge $MaxRetries ]] + do + if [ $retryCount -gt 0 ]; then + echo "Failed to send telemetry to Helix; waiting $RetryDelay seconds before retrying..." + sleep $RetryDelay + fi + + curlResult=` + cat $jobInfo |\ + curl --trace - --verbose --output $res --write-out "%{http_code}" \ + -H 'Content-Type: application/json' \ + -X POST "https://helix.dot.net/api/2018-03-14/telemetry/job$accessTokenParameter" -d @-` + curlStatus=$? - if [ $curlStatus -eq 0 ]; then - if [ $curlResult -gt 299 ] || [ $curlResult -lt 200 ]; then - curlStatus=$curlResult + if [ $curlStatus -eq 0 ]; then + if [ $curlResult -gt 299 ] || [ $curlResult -lt 200 ]; then + curlStatus=$curlResult + fi fi - fi + + let retryCount++ + done curlResult=`cat $res` - + # validate status of curl command if [ $curlStatus -ne 0 ]; then - echo "Failed To Send Job Start information" + echo "Failed To Send Job Start information after $retryCount retries" # We have to append the ## vso prefix or vso will pick up the command when it dumps the inline script into the shell vstsLogOutput="vso[task.logissue type=error;sourcepath=telemetry/start-job.sh;code=1;]Failed to Send Job Start information: $curlStatus" echo "##$vstsLogOutput" exit 1 fi - + # Set the Helix_JobToken variable export Helix_JobToken=`echo $curlResult | xargs echo` # Strip Quotes echo "##vso[task.setvariable variable=Helix_JobToken;issecret=true;]$Helix_JobToken" @@ -75,29 +91,44 @@ steps: Attempt: 1 OperatingSystem: $(Agent.Os) Configuration: ${{ parameters.buildConfig }} + MaxRetries: ${{ parameters.maxRetries }} + RetryDelay: ${{ parameters.retryDelay }} condition: and(always(), ne(variables['Agent.Os'], 'Windows_NT')) - bash: | - res=`mktemp` - curlResult=` - curl --verbose --output $res --write-out "%{http_code}"\ - -H 'Content-Type: application/json' \ - -H "X-Helix-Job-Token: $Helix_JobToken" \ - -H 'Content-Length: 0' \ - -X POST -G "https://helix.dot.net/api/2018-03-14/telemetry/job/build" \ - --data-urlencode "buildUri=$BuildUri"` - curlStatus=$? - - if [ $curlStatus -eq 0 ]; then - if [ $curlResult -gt 299 ] || [ $curlResult -lt 200 ]; then - curlStatus=$curlResult + curlStatus=1 + retryCount=0 + # retry loop to harden against spotty telemetry connections + # we don't retry successes and 4xx client errors + until [[ $curlStatus -eq 0 || ( $curlStatus -ge 400 && $curlStatus -le 499 ) || $retryCount -ge $MaxRetries ]] + do + if [ $retryCount -gt 0 ]; then + echo "Failed to send telemetry to Helix; waiting $RetryDelay seconds before retrying..." + sleep $RetryDelay fi - fi - curlResult=`cat $res` + res=`mktemp` + curlResult=` + curl --verbose --output $res --write-out "%{http_code}"\ + -H 'Content-Type: application/json' \ + -H "X-Helix-Job-Token: $Helix_JobToken" \ + -H 'Content-Length: 0' \ + -X POST -G "https://helix.dot.net/api/2018-03-14/telemetry/job/build" \ + --data-urlencode "buildUri=$BuildUri"` + curlStatus=$? + + if [ $curlStatus -eq 0 ]; then + if [ $curlResult -gt 299 ] || [ $curlResult -lt 200 ]; then + curlStatus=$curlResult + fi + fi + + curlResult=`cat $res` + let retryCount++ + done # validate status of curl command if [ $curlStatus -ne 0 ]; then - echo "Failed to Send Build Start information" + echo "Failed to Send Build Start information after $retryCount retries" vstsLogOutput="vso[task.logissue type=error;sourcepath=telemetry/build/start.sh;code=1;]Failed to Send Build Start information: $curlStatus" echo "##$vstsLogOutput" exit 1 @@ -109,8 +140,10 @@ steps: env: BuildUri: $(System.TaskDefinitionsUri)$(System.TeamProject)/_build/index?buildId=$(Build.BuildId)&_a=summary Helix_JobToken: $(Helix_JobToken) + MaxRetries: ${{ parameters.maxRetries }} + RetryDelay: ${{ parameters.retryDelay }} condition: and(always(), ne(variables['Agent.Os'], 'Windows_NT')) - + - powershell: | $jobInfo = [pscustomobject]@{ QueueId=$env:QueueId; @@ -120,17 +153,42 @@ steps: Attempt=$env:Attempt; Properties=[pscustomobject]@{ operatingSystem=$env:OperatingSystem; configuration=$env:Configuration }; } - + $jobInfoJson = $jobInfo | ConvertTo-Json if ($env:HelixApiAccessToken) { $accessTokenParameter="?access_token=$($env:HelixApiAccessToken)" } Write-Host "Job Info: $jobInfoJson" - $jobToken = Invoke-RestMethod -Uri "https://helix.dot.net/api/2018-03-14/telemetry/job$($accessTokenParameter)" -Method Post -ContentType "application/json" -Body $jobInfoJson + + # Basic retry loop to harden against server flakiness + $retryCount = 0 + while ($retryCount -lt $env:MaxRetries) { + try { + $jobToken = Invoke-RestMethod -Uri "https://helix.dot.net/api/2018-03-14/telemetry/job$($accessTokenParameter)" -Method Post -ContentType "application/json" -Body $jobInfoJson + break + } + catch { + $statusCode = $_.Exception.Response.StatusCode.value__ + if ($statusCode -ge 400 -and $statusCode -le 499) { + Write-Host "##vso[task.logissue]error Failed to send telemetry to Helix (status code $statusCode); not retrying (4xx client error)" + Write-Host "##vso[task.logissue]error ", $_.Exception.GetType().FullName, $_.Exception.Message + exit 1 + } + Write-Host "Failed to send telemetry to Helix (status code $statusCode); waiting $env:RetryDelay seconds before retrying..." + $retryCount++ + sleep $env:RetryDelay + continue + } + } + + if ($retryCount -ge $env:MaxRetries) { + Write-Host "##vso[task.logissue]error Failed to send telemetry to Helix after $retryCount retries." + exit 1 + } + $env:Helix_JobToken = $jobToken Write-Host "##vso[task.setvariable variable=Helix_JobToken;issecret=true;]$env:Helix_JobToken" - displayName: Send Windows Job Start Telemetry env: HelixApiAccessToken: $(HelixApiAccessToken) Source: ${{ parameters.helixSource }} @@ -140,15 +198,44 @@ steps: Attempt: 1 OperatingSystem: $(Agent.Os) Configuration: ${{ parameters.buildConfig }} + MaxRetries: ${{ parameters.maxRetries }} + RetryDelay: ${{ parameters.retryDelay }} condition: and(always(), eq(variables['Agent.Os'], 'Windows_NT')) + displayName: Send Windows Job Start Telemetry - powershell: | - $workItemId = Invoke-RestMethod -Uri "https://helix.dot.net/api/2018-03-14/telemetry/job/build?buildUri=$([Net.WebUtility]::UrlEncode($env:BuildUri))" -Method Post -ContentType "application/json" -Body "" ` - -Headers @{ 'X-Helix-Job-Token'=$env:Helix_JobToken } - + # Basic retry loop to harden against server flakiness + $retryCount = 0 + while ($retryCount -lt $env:MaxRetries) { + try { + $workItemId = Invoke-RestMethod -Uri "https://helix.dot.net/api/2018-03-14/telemetry/job/build?buildUri=$([Net.WebUtility]::UrlEncode($env:BuildUri))" -Method Post -ContentType "application/json" -Body "" ` + -Headers @{ 'X-Helix-Job-Token'=$env:Helix_JobToken } + break + } + catch { + $statusCode = $_.Exception.Response.StatusCode.value__ + if ($statusCode -ge 400 -and $statusCode -le 499) { + Write-Host "##vso[task.logissue]error Failed to send telemetry to Helix (status code $statusCode); not retrying (4xx client error)" + Write-Host "##vso[task.logissue]error ", $_.Exception.GetType().FullName, $_.Exception.Message + exit 1 + } + Write-Host "Failed to send telemetry to Helix (status code $statusCode); waiting $env:RetryDelay seconds before retrying..." + $retryCount++ + sleep $env:RetryDelay + continue + } + } + + if ($retryCount -ge $env:MaxRetries) { + Write-Host "##vso[task.logissue]error Failed to send telemetry to Helix after $retryCount retries." + exit 1 + } + $env:Helix_WorkItemId = $workItemId Write-Host "##vso[task.setvariable variable=Helix_WorkItemId]$env:Helix_WorkItemId" displayName: Send Windows Build Start Telemetry env: BuildUri: $(System.TaskDefinitionsUri)$(System.TeamProject)/_build/index?buildId=$(Build.BuildId)&_a=summary Helix_JobToken: $(Helix_JobToken) + MaxRetries: ${{ parameters.maxRetries }} + RetryDelay: ${{ parameters.retryDelay }} condition: and(always(), eq(variables['Agent.Os'], 'Windows_NT')) diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index 4204dc14f892c01a599d4ea131176bfc0a00532e..de7523cae5815b59686f8d64318ba521a36c309a 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -161,9 +161,10 @@ function GetDotNetInstallScript([string] $dotnetRoot) { return $installScript } -function InstallDotNetSdk([string] $dotnetRoot, [string] $version) { +function InstallDotNetSdk([string] $dotnetRoot, [string] $version, [string] $architecture = "") { $installScript = GetDotNetInstallScript $dotnetRoot - & $installScript -Version $version -InstallDir $dotnetRoot + $archArg = if ($architecture) { $architecture } else { "" } + & $installScript -Version $version -InstallDir $dotnetRoot -Architecture $archArg if ($lastExitCode -ne 0) { Write-Host "Failed to install dotnet cli (exit code '$lastExitCode')." -ForegroundColor Red ExitWithExitCode $lastExitCode @@ -210,7 +211,7 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = $vsMajorVersion = $vsInfo.installationVersion.Split('.')[0] InitializeVisualStudioEnvironmentVariables $vsInstallDir $vsMajorVersion - } elseif ($install) { + } else { if (Get-Member -InputObject $GlobalJson.tools -Name "xcopy-msbuild") { $xcopyMSBuildVersion = $GlobalJson.tools.'xcopy-msbuild' @@ -220,9 +221,10 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = $xcopyMSBuildVersion = "$vsMajorVersion.$($vsMinVersion.Minor).0-alpha" } - $vsInstallDir = InstallXCopyMSBuild $xcopyMSBuildVersion - } else { - throw "Unable to find Visual Studio that has required version and components installed" + $vsInstallDir = InitializeXCopyMSBuild $xcopyMSBuildVersion $install + if ($vsInstallDir -eq $null) { + throw "Unable to find Visual Studio that has required version and components installed" + } } $msbuildVersionDir = if ([int]$vsMajorVersion -lt 16) { "$vsMajorVersion.0" } else { "Current" } @@ -240,12 +242,20 @@ function InitializeVisualStudioEnvironmentVariables([string] $vsInstallDir, [str } } -function InstallXCopyMSBuild([string] $packageVersion) { +function InstallXCopyMSBuild([string]$packageVersion) { + return InitializeXCopyMSBuild $packageVersion -install $true +} + +function InitializeXCopyMSBuild([string]$packageVersion, [bool]$install) { $packageName = "RoslynTools.MSBuild" $packageDir = Join-Path $ToolsDir "msbuild\$packageVersion" $packagePath = Join-Path $packageDir "$packageName.$packageVersion.nupkg" if (!(Test-Path $packageDir)) { + if (!$install) { + return $null + } + Create-Directory $packageDir Write-Host "Downloading $packageName $packageVersion" Invoke-WebRequest "https://dotnet.myget.org/F/roslyn-tools/api/v2/package/$packageName/$packageVersion/" -OutFile $packagePath @@ -376,6 +386,11 @@ function GetNuGetPackageCachePath() { return $env:NUGET_PACKAGES } +# Returns a full path to an Arcade SDK task project file. +function GetSdkTaskProject([string]$taskName) { + return Join-Path (Split-Path (InitializeToolset) -Parent) "SdkTasks\$taskName.proj" +} + function InitializeToolset() { if (Test-Path variable:global:_ToolsetBuildProj) { return $global:_ToolsetBuildProj @@ -394,7 +409,7 @@ function InitializeToolset() { } if (-not $restore) { - Write-Host "Toolset version $toolsetVersion has not been restored." + Write-Host "Toolset version $toolsetVersion has not been restored." -ForegroundColor Red ExitWithExitCode 1 } @@ -402,15 +417,15 @@ function InitializeToolset() { $proj = Join-Path $ToolsetDir "restore.proj" $bl = if ($binaryLog) { "/bl:" + (Join-Path $LogDir "ToolsetRestore.binlog") } else { "" } - + '' | Set-Content $proj - MSBuild $proj $bl /t:__WriteToolsetLocation /noconsolelogger /p:__ToolsetLocationOutputFile=$toolsetLocationFile - + MSBuild $proj $bl /t:__WriteToolsetLocation /clp:ErrorsOnly`;NoSummary /p:__ToolsetLocationOutputFile=$toolsetLocationFile + $path = Get-Content $toolsetLocationFile -TotalCount 1 if (!(Test-Path $path)) { throw "Invalid toolset path: $path" } - + return $global:_ToolsetBuildProj = $path } @@ -446,7 +461,7 @@ function MSBuild() { $buildTool = InitializeBuildTool - $cmdArgs = "$($buildTool.Command) /m /nologo /clp:Summary /v:$verbosity /nr:$nodeReuse" + $cmdArgs = "$($buildTool.Command) /m /nologo /clp:Summary /v:$verbosity /nr:$nodeReuse /p:ContinuousIntegrationBuild=$ci" if ($warnAsError) { $cmdArgs += " /warnaserror /p:TreatWarningsAsErrors=true" diff --git a/eng/common/tools.sh b/eng/common/tools.sh old mode 100755 new mode 100644 index 8a253bef5131e7352eb8dba9692a43c7d6be377a..ecdece1f8552e18060bb17389784f46d23b534eb --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -153,7 +153,12 @@ function InstallDotNetSdk { GetDotNetInstallScript "$root" local install_script=$_GetDotNetInstallScript - bash "$install_script" --version $version --install-dir "$root" || { + local arch_arg="" + if [[ $# == 3 ]]; then + arch_arg="--architecture $3" + fi + + bash "$install_script" --version $version --install-dir "$root" $arch_arg || { local exit_code=$? echo "Failed to install dotnet SDK (exit code '$exit_code')." >&2 ExitWithExitCode $exit_code @@ -233,11 +238,15 @@ function InitializeToolset { ExitWithExitCode 2 fi - local toolset_restore_log="$log_dir/ToolsetRestore.binlog" local proj="$toolset_dir/restore.proj" + local bl="" + if [[ "$binary_log" == true ]]; then + bl="/bl:$log_dir/ToolsetRestore.binlog" + fi + echo '' > "$proj" - MSBuild "$proj" /t:__WriteToolsetLocation /noconsolelogger /bl:"$toolset_restore_log" /p:__ToolsetLocationOutputFile="$toolset_location_file" + MSBuild "$proj" $bl /t:__WriteToolsetLocation /clp:ErrorsOnly\;NoSummary /p:__ToolsetLocationOutputFile="$toolset_location_file" local toolset_build_proj=`cat "$toolset_location_file"` @@ -284,7 +293,7 @@ function MSBuild { warnaserror_switch="/warnaserror" fi - "$_InitializeBuildTool" "$_InitializeBuildToolCommand" /m /nologo /clp:Summary /v:$verbosity /nr:$node_reuse $warnaserror_switch /p:TreatWarningsAsErrors=$warn_as_error "$@" || { + "$_InitializeBuildTool" "$_InitializeBuildToolCommand" /m /nologo /clp:Summary /v:$verbosity /nr:$node_reuse $warnaserror_switch /p:TreatWarningsAsErrors=$warn_as_error /p:ContinuousIntegrationBuild=$ci "$@" || { local exit_code=$? echo "Build failed (exit code '$exit_code')." >&2 ExitWithExitCode $exit_code diff --git a/eng/targets/NuGet.targets b/eng/targets/NuGet.targets new file mode 100644 index 0000000000000000000000000000000000000000..c2db06b6c1af31cc1a5415af4f11d280a53560ec --- /dev/null +++ b/eng/targets/NuGet.targets @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + diff --git a/eng/targets/Settings.props b/eng/targets/Settings.props new file mode 100644 index 0000000000000000000000000000000000000000..0022b125e42ea0e3cc09edad3ed1245232b0442e --- /dev/null +++ b/eng/targets/Settings.props @@ -0,0 +1,11 @@ + + + + MIT + Microsoft and F# Software Foundation + Visual F# Compiler FSharp functional programming + $(CopyrightMicrosoft) + $(ArtifactsBinDir) + + + diff --git a/fcs/Directory.Build.props b/fcs/Directory.Build.props index 3478a48aa9a91e8921dd974103771fdbf52e9a44..3179fe221f960123d4b9b2a0cbb96a94190c98b7 100644 --- a/fcs/Directory.Build.props +++ b/fcs/Directory.Build.props @@ -1,4 +1,12 @@ + + + + $(RestoreSources); + https://api.nuget.org/v3/index.json; + + + $(UserProfile)\.nuget\packages\ $(HOME)/.nuget/packages/ diff --git a/fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj b/fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj index 9c3eb687c20b1b8b7fe3c125878c36f7dccdb365..edb85fcf64855a7d5b1b73a788b1dbf09956a367 100644 --- a/fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj +++ b/fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj @@ -82,6 +82,7 @@ + diff --git a/fcs/build.fsx b/fcs/build.fsx index 5a53371452427efbcb9d76bf25bbd4b3eb16f62e..50735795d881513b21df329384af1c75452b7d61 100644 --- a/fcs/build.fsx +++ b/fcs/build.fsx @@ -92,7 +92,9 @@ Target "BuildVersion" (fun _ -> Target "Build" (fun _ -> runDotnet __SOURCE_DIRECTORY__ "build ../src/buildtools/buildtools.proj -v n -c Proto" - runDotnet __SOURCE_DIRECTORY__ "build FSharp.Compiler.Service.sln -v n -c release" + let fslexPath = __SOURCE_DIRECTORY__ + "/../artifacts/bin/fslex/Proto/netcoreapp2.0/fslex.dll" + let fsyaccPath = __SOURCE_DIRECTORY__ + "/../artifacts/bin/fsyacc/Proto/netcoreapp2.0/fsyacc.dll" + runDotnet __SOURCE_DIRECTORY__ (sprintf "build FSharp.Compiler.Service.sln -v n -c Release /p:FsLexPath=%s /p:FsYaccPath=%s" fslexPath fsyaccPath) ) Target "Test" (fun _ -> @@ -100,11 +102,12 @@ Target "Test" (fun _ -> runDotnet __SOURCE_DIRECTORY__ "build ../tests/projects/Sample_NETCoreSDK_FSharp_Library_netstandard2_0/Sample_NETCoreSDK_FSharp_Library_netstandard2_0.fsproj -v n /restore /p:DisableCompilerRedirection=true" // Now run the tests - runDotnet __SOURCE_DIRECTORY__ "test FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj --no-restore --no-build -v n -c release" + let logFilePath = Path.Combine(__SOURCE_DIRECTORY__, "..", "artifacts", "TestResults", "Release", "FSharp.Compiler.Service.Test.xml") + runDotnet __SOURCE_DIRECTORY__ (sprintf "test FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj --no-restore --no-build -v n -c Release --test-adapter-path . --logger \"nunit;LogFilePath=%s\"" logFilePath) ) Target "NuGet" (fun _ -> - runDotnet __SOURCE_DIRECTORY__ "pack FSharp.Compiler.Service.sln -v n -c release" + runDotnet __SOURCE_DIRECTORY__ "pack FSharp.Compiler.Service.sln -v n -c Release" ) Target "GenerateDocsEn" (fun _ -> diff --git a/fsharp.proj b/fsharp.proj deleted file mode 100644 index a550b60eac02c5d88b28bf8e535daf0ec36aeda8..0000000000000000000000000000000000000000 --- a/fsharp.proj +++ /dev/null @@ -1,178 +0,0 @@ - - - - Debug - AssemblySearchPaths={HintPathFromItem};{TargetFrameworkDirectory};{RawFileName} - - - - - true - false - false - false - false - - false - false - false - false - false - - - - - true - true - true - true - true - true - - true - true - true - true - true - true - true - true - - - - - true - true - - - - - - - - TargetFramework=netstandard1.6 - TargetFramework=net45 - - - TargetFramework=netstandard2.0 - TargetFramework=net46 - - - TargetFramework=netstandard2.0 - TargetFramework=net46 - - - TargetFramework=net46 - - - TargetFramework=netstandard2.0 - TargetFramework=net46 - - - TargetFramework=netcoreapp2.1 - TargetFramework=net46 - - - TargetFramework=netcoreapp2.1 - TargetFramework=net46 - - - TargetFramework=net46 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_RunningRestore>true - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/global.json b/global.json index ac6900880b3320031acd733a6bcbd92f050c0b06..a6d9f0d3ca5c3a0033b3e0354c9ab835eebcfe9b 100644 --- a/global.json +++ b/global.json @@ -1,9 +1,16 @@ { - "tools": { - "dotnet": "2.1.500" - }, - "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.19069.2", - "Microsoft.DotNet.Helix.Sdk": "2.0.0-beta.19069.2" + "tools": { + "dotnet": "2.1.504", + "vs": { + "version": "15.9", + "components": [ + "Microsoft.Net.Core.Component.SDK.2.1", + "Microsoft.VisualStudio.Component.FSharp" + ] } + }, + "msbuild-sdks": { + "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.19170.12", + "Microsoft.DotNet.Helix.Sdk": "2.0.0-beta.19069.2" + } } diff --git a/packages.config b/packages.config deleted file mode 100644 index 709d225851df33319e37f745e4b51a726485a00a..0000000000000000000000000000000000000000 --- a/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/proto.proj b/proto.proj index 0974580af5ad4a27fbcde047872f1f319deab90c..c60f17d8426d0cbf9ffd8ee0f253fbbab76996ff 100644 --- a/proto.proj +++ b/proto.proj @@ -6,7 +6,6 @@ - TargetFramework=net46 TargetFramework=netcoreapp2.1 diff --git a/restore.sh b/restore.sh new file mode 100755 index 0000000000000000000000000000000000000000..58a2abb50f78d3473a48e54ee6d019e9cbceda66 --- /dev/null +++ b/restore.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +source="${BASH_SOURCE[0]}" + +# resolve $SOURCE until the file is no longer a symlink +while [[ -h $source ]]; do + scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + source="$(readlink "$source")" + + # if $source was a relative symlink, we need to resolve it relative to the path where the + # symlink file was located + [[ $source != /* ]] && source="$scriptroot/$source" +done + +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" +"$scriptroot/eng/build.sh" --restore $@ diff --git a/scripts/AssemblyVersionCheck.fsx b/scripts/AssemblyVersionCheck.fsx new file mode 100644 index 0000000000000000000000000000000000000000..0f3816a2e6c4ec856f139b43d8c219e9e4b91317 --- /dev/null +++ b/scripts/AssemblyVersionCheck.fsx @@ -0,0 +1,69 @@ +// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. + +open System +open System.Diagnostics +open System.IO +open System.Reflection +open System.Text.RegularExpressions + +module AssemblyVersionCheck = + + let private versionZero = Version(0, 0, 0, 0) + let private versionOne = Version(1, 0, 0, 0) + let private commitHashPattern = new Regex(@"Commit Hash: ()|([0-9a-fA-F]{40})", RegexOptions.Compiled) + let private devVersionPattern = new Regex(@"-(ci|dev)", RegexOptions.Compiled) + + let verifyAssemblyVersions (binariesPath:string) = + let excludedAssemblies = + [ "FSharp.Data.TypeProviders.dll" ] + |> Set.ofList + let fsharpAssemblies = + [ "FSharp*.dll" + "fsc.exe" + "fsc.dll" + "fsi*.exe" + "fsi*.dll" ] + |> List.map (fun p -> Directory.EnumerateFiles(binariesPath, p, SearchOption.AllDirectories)) + |> Seq.concat + |> List.ofSeq + |> List.filter (fun p -> (Set.contains (Path.GetFileName(p)) excludedAssemblies) |> not) + + // verify that all assemblies have a version number other than 0.0.0.0 or 1.0.0.0 + let failedVersionCheck = + fsharpAssemblies + |> List.filter (fun a -> + let assemblyVersion = AssemblyName.GetAssemblyName(a).Version + assemblyVersion = versionZero || assemblyVersion = versionOne) + if failedVersionCheck.Length > 0 then + printfn "The following assemblies had a version of %A or %A" versionZero versionOne + printfn "%s\r\n" <| String.Join("\r\n", failedVersionCheck) + else + printfn "All shipping assemblies had an appropriate version number." + + // verify that all assemblies have a commit hash + let failedCommitHash = + fsharpAssemblies + |> List.filter (fun a -> + let fileProductVersion = FileVersionInfo.GetVersionInfo(a).ProductVersion + not (commitHashPattern.IsMatch(fileProductVersion) || devVersionPattern.IsMatch(fileProductVersion))) + if failedCommitHash.Length > 0 then + printfn "The following assemblies don't have a commit hash set" + printfn "%s\r\n" <| String.Join("\r\n", failedCommitHash) + else + printfn "All shipping assemblies had an appropriate commit hash." + + // return code is the number of failures + failedVersionCheck.Length + failedCommitHash.Length + +let main (argv:string array) = + if argv.Length <> 1 then + printfn "Usage: fsi.exe AssemblyVersionCheck.fsx -- path/to/binaries" + 1 + else + AssemblyVersionCheck.verifyAssemblyVersions argv.[0] + +Environment.GetCommandLineArgs() +|> Seq.skipWhile ((<>) "--") +|> Seq.skip 1 +|> Array.ofSeq +|> main diff --git a/src/scripts/VerifyAllTranslations.fsx b/scripts/VerifyAllTranslations.fsx similarity index 100% rename from src/scripts/VerifyAllTranslations.fsx rename to scripts/VerifyAllTranslations.fsx diff --git a/init-tools.cmd b/scripts/init-tools.cmd similarity index 91% rename from init-tools.cmd rename to scripts/init-tools.cmd index cbdeb27afef9aa53baed9d5c972266d03f424233..3b17a835b9ef3fb1d141a18f59b7aa62b9944c45 100644 --- a/init-tools.cmd +++ b/scripts/init-tools.cmd @@ -1,8 +1,8 @@ @echo off setlocal enabledelayedexpansion -set /p DOTNET_TOOLS_VERSION=<"%~dp0DotnetCLIToolsVersion.txt" -set DOTNET_TOOLS_PATH=%~dp0artifacts\toolset\dotnet +set /p DOTNET_TOOLS_VERSION=<"%~dp0..\DotnetCLIToolsVersion.txt" +set DOTNET_TOOLS_PATH=%~dp0..\artifacts\toolset\dotnet set dotnetexe=%DOTNET_TOOLS_PATH%\dotnet.exe set sdksentinel=%DOTNET_TOOLS_PATH%\sdk-version.txt diff --git a/init-tools.sh b/scripts/init-tools.sh old mode 100755 new mode 100644 similarity index 98% rename from init-tools.sh rename to scripts/init-tools.sh index 9d5a2e2f8c6f8dea66959980f4c520a46c587f7c..67067dd4867aa3e78f5368e5e04d7de751b51bdc --- a/init-tools.sh +++ b/scripts/init-tools.sh @@ -7,10 +7,10 @@ __TOOLRUNTIME_DIR=$__scriptpath/Tools __DOTNET_PATH=$__TOOLRUNTIME_DIR/dotnetcli __DOTNET_CMD=$__DOTNET_PATH/dotnet -__DOTNET_VERSION=$(cat $__scriptpath/DotnetCLIVersion.txt) +__DOTNET_VERSION=$(cat $__scriptpath/../DotnetCLIVersion.txt) if [ -z "$__BUILDTOOLS_SOURCE" ]; then __BUILDTOOLS_SOURCE=https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json; fi -__BUILD_TOOLS_PACKAGE_VERSION=$(cat $__scriptpath/BuildToolsVersion.txt) +__BUILD_TOOLS_PACKAGE_VERSION=$(cat $__scriptpath/../BuildToolsVersion.txt) __BUILD_TOOLS_PATH=$__PACKAGES_DIR/microsoft.dotnet.buildtools/$__BUILD_TOOLS_PACKAGE_VERSION/lib diff --git a/scripts/verify-translations.cmd b/scripts/verify-translations.cmd new file mode 100644 index 0000000000000000000000000000000000000000..86094da755ec1cb9b34fe6e20a6e4e9bc290d2f3 --- /dev/null +++ b/scripts/verify-translations.cmd @@ -0,0 +1,3 @@ +@echo off + +%~dp0..\artifacts\bin\fsi\Release\net46\fsi.exe %~dp0VerifyAllTranslations.fsx -- %~dp0 diff --git a/setup/Directory.Build.props b/setup/Directory.Build.props index bd233e7578510b16c571c6834d75d222c401b6fc..53933526bc476eb238a0063de1ef203fd17ac9f9 100644 --- a/setup/Directory.Build.props +++ b/setup/Directory.Build.props @@ -1,6 +1,6 @@ - + @@ -13,9 +13,6 @@ $(ArtifactsDir)\VSSetup.obj\$(Configuration)\$(MSBuildProjectName) $(SetupRootFolder)..\artifacts\VSSetup\$(Configuration) $(SetupRootFolder)..\artifacts\VSSetup\$(Configuration)\Insertion - - - $(VSMajorVersion).$(VSMinorVersion).$(BUILD_BUILDNUMBER) diff --git a/setup/Directory.Build.targets b/setup/Directory.Build.targets deleted file mode 100644 index ccd47cc0a9aa21567cd1adbf7d7054bf309679f1..0000000000000000000000000000000000000000 --- a/setup/Directory.Build.targets +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/setup/Swix/Directory.Build.props b/setup/Swix/Directory.Build.props index f64df1d29de52571b7b3d817d38690ad9987ce57..772bd04080ace2ef48119635c8283cf60a2fd0fb 100644 --- a/setup/Swix/Directory.Build.props +++ b/setup/Swix/Directory.Build.props @@ -1,9 +1,9 @@ + - - Debug + Microsoft.FSharp neutral false vsix diff --git a/setup/Swix/Directory.Build.targets b/setup/Swix/Directory.Build.targets index 974c6da4f1b1a4761918f86ef30fc451775c59fa..ca0fe04d03aac6ef651309d3e751e073132ab0e7 100644 --- a/setup/Swix/Directory.Build.targets +++ b/setup/Swix/Directory.Build.targets @@ -1,10 +1,22 @@ + + $(ArtifactsDir)\VSSetup\$(Configuration)\Insertion\$(OutputName).vsix - - + + + false + + + + + + + + + diff --git a/setup/Swix/Microsoft.FSharp.Compiler.MSBuild/Microsoft.FSharp.Compiler.MSBuild.csproj b/setup/Swix/Microsoft.FSharp.Compiler.MSBuild/Microsoft.FSharp.Compiler.MSBuild.csproj new file mode 100644 index 0000000000000000000000000000000000000000..27625453ec9484d7f847b8de02097c7df172dcf6 --- /dev/null +++ b/setup/Swix/Microsoft.FSharp.Compiler.MSBuild/Microsoft.FSharp.Compiler.MSBuild.csproj @@ -0,0 +1,131 @@ + + + + net46 + net462 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_Line> + + + + + <_BuiltSwrLines Include="$(_Line)" /> + + + + + + <_SwrFilePath>$(IntermediateOutputPath)Microsoft.FSharp.Compiler.swr + + + + + + + <_Lines> + + + + + + + + + + + + + + diff --git a/setup/Swix/Microsoft.FSharp.Compiler.Resources/Empty.swr b/setup/Swix/Microsoft.FSharp.Compiler.Resources/Empty.swr deleted file mode 100644 index 32da88c9291ad03690dd67144888c18e548b7d4e..0000000000000000000000000000000000000000 --- a/setup/Swix/Microsoft.FSharp.Compiler.Resources/Empty.swr +++ /dev/null @@ -1,5 +0,0 @@ -use vs - -package name=Microsoft.FSharp.Compiler.Resources - version=$(FSharpPackageVersion) - vs.package.language=$(LocaleSpecificCulture) diff --git a/setup/Swix/Microsoft.FSharp.Compiler.Resources/Files.swr b/setup/Swix/Microsoft.FSharp.Compiler.Resources/Files.swr deleted file mode 100644 index f3f60d490b963bd0801d2e5e8c2437d0783c7f99..0000000000000000000000000000000000000000 --- a/setup/Swix/Microsoft.FSharp.Compiler.Resources/Files.swr +++ /dev/null @@ -1,11 +0,0 @@ -use vs - -package name=Microsoft.FSharp.Compiler.Resources - version=$(FSharpPackageVersion) - vs.package.language=$(LocaleSpecificCulture) - -folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharpCompiler\$(LocaleParentCulture)" - file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.Build.resources.dll" - file source="$(BinariesFolder)\FSharp.Compiler.Interactive.Settings\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.Compiler.Interactive.Settings.resources.dll" - file source="$(BinariesFolder)\FSharp.Compiler.Private\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.Compiler.Private.resources.dll" - file source="$(BinariesFolder)\FSharp.Core\$(Configuration)\net45\$(LocaleParentCulture)\FSharp.Core.resources.dll" diff --git a/setup/Swix/Microsoft.FSharp.Compiler.Resources/Microsoft.FSharp.Compiler.Resources.swixproj b/setup/Swix/Microsoft.FSharp.Compiler.Resources/Microsoft.FSharp.Compiler.Resources.swixproj deleted file mode 100644 index ac8e74d48544631596c5884630cdd572cdf5ec63..0000000000000000000000000000000000000000 --- a/setup/Swix/Microsoft.FSharp.Compiler.Resources/Microsoft.FSharp.Compiler.Resources.swixproj +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - Microsoft.FSharp.Compiler.Resources.$(LocaleCode) - - - - $(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder) - $(PackagePreprocessorDefinitions);Configuration=$(Configuration) - $(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion) - $(PackagePreprocessorDefinitions);LocaleParentCulture=$(LocaleParentCulture) - $(PackagePreprocessorDefinitions);LocaleSpecificCulture=$(LocaleSpecificCulture) - - - - - - - - - - - - - - - - - diff --git a/setup/Swix/Microsoft.FSharp.Compiler/Dependencies.swr b/setup/Swix/Microsoft.FSharp.Compiler/Dependencies.swr deleted file mode 100644 index c5dcc628603bcadefbc9e56a923d2f0d25469b80..0000000000000000000000000000000000000000 --- a/setup/Swix/Microsoft.FSharp.Compiler/Dependencies.swr +++ /dev/null @@ -1,9 +0,0 @@ -use vs - -package name=Microsoft.FSharp.Compiler - version=$(FSharpPackageVersion) - -vs.dependencies - vs.dependency id=Microsoft.FSharp.Dependencies - version=$(FSharpPackageVersion) - type=Required diff --git a/setup/Swix/Microsoft.FSharp.Compiler/Files.swr b/setup/Swix/Microsoft.FSharp.Compiler/Files.swr deleted file mode 100644 index b56667d2465c031f01495b2e3e77b20adc0a0699..0000000000000000000000000000000000000000 --- a/setup/Swix/Microsoft.FSharp.Compiler/Files.swr +++ /dev/null @@ -1,39 +0,0 @@ -use vs - -package name=Microsoft.FSharp.Compiler - version=$(FSharpPackageVersion) - -folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharp" - - file source=$(BinariesFolder)\fsc\$(Configuration)\net46\fsc.exe vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2 vs.file.ngenApplication="[installDir]\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsc.exe" - file source="$(BinariesFolder)\fsc\$(Configuration)\net46\fsc.exe.config" - - file source=$(BinariesFolder)\fsi\$(Configuration)\net46\fsi.exe vs.file.ngen=yes vs.file.ngenArchitecture=X86 vs.file.ngenPriority=2 vs.file.ngenApplication="[installDir]\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsi.exe" - file source="$(BinariesFolder)\fsi\$(Configuration)\net46\fsi.exe.config" - - file source="$(BinariesFolder)\fsiAnyCpu\$(Configuration)\net46\fsiAnyCpu.exe" vs.file.ngen=yes vs.file.ngenArchitecture=X64 vs.file.ngenPriority=2 vs.file.ngenApplication="[installDir]\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsiAnyCpu.exe" - file source="$(BinariesFolder)\fsiAnyCpu\$(Configuration)\net46\fsiAnyCpu.exe.config" - - file source="$(BinariesFolder)\FSharp.Compiler.Interactive.Settings\$(Configuration)\net46\FSharp.Compiler.Interactive.Settings.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2 - file source="$(BinariesFolder)\FSharp.Compiler.Private\$(Configuration)\net46\FSharp.Compiler.Private.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2 - file source="$(BinariesFolder)\FSharp.Compiler.Server.Shared\$(Configuration)\net46\FSharp.Compiler.Server.Shared.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2 - - file source="$(BinariesFolder)\FSharp.Core\$(Configuration)\net45\FSharp.Core.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2 - file source="$(BinariesFolder)\FSharp.Core\$(Configuration)\net45\FSharp.Core.optdata" - file source="$(BinariesFolder)\FSharp.Core\$(Configuration)\net45\FSharp.Core.sigdata" - - file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\FSharp.Build.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2 - - file source="$(PackagesFolder)\Microsoft.VisualFSharp.Type.Providers.Redist\$(MicrosoftVisualFSharpTypeProvidersRedistPackageVersion)\content\4.3.0.0\FSharp.Data.TypeProviders.dll" - file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.Build.dll" - file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.Build.Framework.dll" - file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.Build.Tasks.Core.dll" - file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.Build.Utilities.Core.dll" - file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.Portable.FSharp.Targets" - file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\System.Collections.Immutable.dll" - file source="$(BinariesFolder)\FSharp.Compiler.Private\$(Configuration)\net46\System.Reflection.Metadata.dll" - file source="$(BinariesFolder)\FSharp.Compiler.Private\$(Configuration)\net46\System.ValueTuple.dll" - file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.FSharp.NetSdk.props" - file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.FSharp.NetSdk.targets" - file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.FSharp.Overrides.NetSdk.targets" - file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.FSharp.Targets" diff --git a/setup/Swix/Microsoft.FSharp.Compiler/Microsoft.FSharp.Compiler.swixproj b/setup/Swix/Microsoft.FSharp.Compiler/Microsoft.FSharp.Compiler.swixproj deleted file mode 100644 index f256dd46779d2a48c0259300c880b58d7aaef2ad..0000000000000000000000000000000000000000 --- a/setup/Swix/Microsoft.FSharp.Compiler/Microsoft.FSharp.Compiler.swixproj +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - Microsoft.FSharp.Compiler - - - - $(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder) - $(PackagePreprocessorDefinitions);Configuration=$(Configuration) - $(PackagePreprocessorDefinitions);PackagesFolder=$(NuGetPackageRoot) - $(PackagePreprocessorDefinitions);FSharpTreeRoot=$(FSharpTreeRoot) - $(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion) - $(PackagePreprocessorDefinitions);MicrosoftVisualFSharpTypeProvidersRedistPackageVersion=$(MicrosoftVisualFSharpTypeProvidersRedistPackageVersion) - - - - - - - - - - - - - - diff --git a/setup/Swix/Microsoft.FSharp.Dependencies/Dependencies.swr b/setup/Swix/Microsoft.FSharp.Dependencies/Dependencies.swr index 97fadaec5829e5ebd429e3bc6a8e9d7eeee99f8a..82f9caaec1f35b42f424b4de5a0bea16386e6d42 100644 --- a/setup/Swix/Microsoft.FSharp.Dependencies/Dependencies.swr +++ b/setup/Swix/Microsoft.FSharp.Dependencies/Dependencies.swr @@ -1,9 +1,9 @@ use vs package name=Microsoft.FSharp.Dependencies - version=$(FSharpPackageVersion) + version=$(VsixVersion) vs.dependencies vs.dependency id=Microsoft.FSharp.SDK - version=$(FSharpPackageVersion) + version=$(VsixVersion) type=Required diff --git a/setup/Swix/Microsoft.FSharp.Dependencies/Files.swr b/setup/Swix/Microsoft.FSharp.Dependencies/Files.swr index f927497e1934a299b6a9178072213c0c4a1358f8..9b2836fd19024d64be4537f5918688840537a8b6 100644 --- a/setup/Swix/Microsoft.FSharp.Dependencies/Files.swr +++ b/setup/Swix/Microsoft.FSharp.Dependencies/Files.swr @@ -1,7 +1,7 @@ use vs package name=Microsoft.FSharp.Dependencies - version=$(FSharpPackageVersion) + version=$(VsixVersion) folder "InstallDir:MSBuild\Microsoft\VisualStudio\v$(VSGeneralVersion)\FSharp" file "Microsoft.FSharp.targets" source="$(SetupShimsDir)\Microsoft.FSharp.Shim.targets" @@ -11,4 +11,4 @@ folder "InstallDir:MSBuild\Microsoft\VisualStudio\v$(VSGeneralVersion)\FSharp" file "Microsoft.FSharp.NetSdk.props" source="$(SetupShimsDir)\Microsoft.FSharp.NetSdk.Shim.props" folder "InstallDir:Common7\Tools\VsDevCmd\Ext" - file source="fsharp.bat" + file source="$(ProjectDir)\fsharp.bat" diff --git a/setup/Swix/Microsoft.FSharp.Dependencies/Microsoft.FSharp.Dependencies.csproj b/setup/Swix/Microsoft.FSharp.Dependencies/Microsoft.FSharp.Dependencies.csproj new file mode 100644 index 0000000000000000000000000000000000000000..657be2a1f483e4d3137495dafa6ad185fee115be --- /dev/null +++ b/setup/Swix/Microsoft.FSharp.Dependencies/Microsoft.FSharp.Dependencies.csproj @@ -0,0 +1,19 @@ + + + + net46 + + + + + + + + + + + + + + + diff --git a/setup/Swix/Microsoft.FSharp.Dependencies/Microsoft.FSharp.Dependencies.swixproj b/setup/Swix/Microsoft.FSharp.Dependencies/Microsoft.FSharp.Dependencies.swixproj deleted file mode 100644 index e30eaaf0fe183ba8ad4502acfd61da53e844f8e4..0000000000000000000000000000000000000000 --- a/setup/Swix/Microsoft.FSharp.Dependencies/Microsoft.FSharp.Dependencies.swixproj +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - Microsoft.FSharp.Dependencies - - - - $(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder) - $(PackagePreprocessorDefinitions);Configuration=$(Configuration) - $(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion) - $(PackagePreprocessorDefinitions);SetupShimsDir=$(MSBuildThisFileDirectory)..\..\shims - $(PackagePreprocessorDefinitions);TargetFramework=$(TargetFramework) - $(PackagePreprocessorDefinitions);VSGeneralVersion=$(VSGeneralVersion) - - - - - - - - - - - - - - - - diff --git a/setup/Swix/Microsoft.FSharp.IDE/Dependencies.swr b/setup/Swix/Microsoft.FSharp.IDE/Dependencies.swr index 875b8af13f6e55e3c95b9a1af0434b6f973d2403..9ed63a9ff0c77dbce0785cbfb77c62feca30d4c3 100644 --- a/setup/Swix/Microsoft.FSharp.IDE/Dependencies.swr +++ b/setup/Swix/Microsoft.FSharp.IDE/Dependencies.swr @@ -1,19 +1,19 @@ use vs package name=Microsoft.FSharp.IDE - version=$(FSharpPackageVersion) + version=$(VsixVersion) vs.dependencies vs.dependency id=Microsoft.FSharp.Dependencies - version=$(FSharpPackageVersion) + version=$(VsixVersion) type=Required vs.dependency id=Microsoft.FSharp.VSIX.Full.Core - version=$(FSharpPackageVersion) + version=$(VsixVersion) type=Required when=Microsoft.VisualStudio.Product.Enterprise,Microsoft.VisualStudio.Product.Professional,Microsoft.VisualStudio.Product.Community vs.dependency id=Microsoft.FSharp.VSIX.Full.Resources - version=$(FSharpPackageVersion) + version=$(VsixVersion) type=Required when=Microsoft.VisualStudio.Product.Enterprise,Microsoft.VisualStudio.Product.Professional,Microsoft.VisualStudio.Product.Community diff --git a/setup/Swix/Microsoft.FSharp.IDE/Files.swr b/setup/Swix/Microsoft.FSharp.IDE/Files.swr index 2e0ee2bcf3b50151193791fc8edef61519421c4c..79257b1939506b915ca42da60c8416eb047da786 100644 --- a/setup/Swix/Microsoft.FSharp.IDE/Files.swr +++ b/setup/Swix/Microsoft.FSharp.IDE/Files.swr @@ -1,7 +1,7 @@ use vs package name=Microsoft.FSharp.IDE - version=$(FSharpPackageVersion) + version=$(VsixVersion) folder "InstallDir:Common7\IDE\NewScriptItems" file source="$(SetupResourcesDir)\NewFileDialog\Script\NewFSharpScriptItems.vsdir" diff --git a/setup/Swix/Microsoft.FSharp.IDE/Microsoft.FSharp.IDE.csproj b/setup/Swix/Microsoft.FSharp.IDE/Microsoft.FSharp.IDE.csproj new file mode 100644 index 0000000000000000000000000000000000000000..c86f94ec07a30664c71471d156708811b441d98d --- /dev/null +++ b/setup/Swix/Microsoft.FSharp.IDE/Microsoft.FSharp.IDE.csproj @@ -0,0 +1,17 @@ + + + + net46 + + + + + + + + + + + + + diff --git a/setup/Swix/Microsoft.FSharp.IDE/Microsoft.FSharp.IDE.swixproj b/setup/Swix/Microsoft.FSharp.IDE/Microsoft.FSharp.IDE.swixproj deleted file mode 100644 index 223a7262fcbde0e459da4c9cdbd4c25351148e5f..0000000000000000000000000000000000000000 --- a/setup/Swix/Microsoft.FSharp.IDE/Microsoft.FSharp.IDE.swixproj +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - Microsoft.FSharp.IDE - - - - $(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion) - $(PackagePreprocessorDefinitions);SetupResourcesDir=$(MSBuildThisFileDirectory)..\..\resources - $(PackagePreprocessorDefinitions);TargetFramework=$(TargetFramework) - - - - - - - - - - - - - - - diff --git a/setup/Swix/Microsoft.FSharp.SDK/Files.swr b/setup/Swix/Microsoft.FSharp.SDK/Files.swr index cffd90ed3668972801370dffecaf1825ea5043ed..38ac95d4ec8a9e40eba655becbcd390aab8f6d03 100644 --- a/setup/Swix/Microsoft.FSharp.SDK/Files.swr +++ b/setup/Swix/Microsoft.FSharp.SDK/Files.swr @@ -1,7 +1,7 @@ use vs package name=Microsoft.FSharp.SDK - version=$(FSharpPackageVersion) + version=$(VsixVersion) folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharpSdk" diff --git a/setup/Swix/Microsoft.FSharp.SDK/Microsoft.FSharp.SDK.csproj b/setup/Swix/Microsoft.FSharp.SDK/Microsoft.FSharp.SDK.csproj new file mode 100644 index 0000000000000000000000000000000000000000..d736e5c5c5568617a1625737cfbd92ec5c6a2552 --- /dev/null +++ b/setup/Swix/Microsoft.FSharp.SDK/Microsoft.FSharp.SDK.csproj @@ -0,0 +1,23 @@ + + + + net46 + + + + + + + + + + + + + + + + + + + diff --git a/setup/Swix/Microsoft.FSharp.SDK/Microsoft.FSharp.SDK.swixproj b/setup/Swix/Microsoft.FSharp.SDK/Microsoft.FSharp.SDK.swixproj deleted file mode 100644 index aac26eaaa0dae46d1f1f655884cfdcade73b7f47..0000000000000000000000000000000000000000 --- a/setup/Swix/Microsoft.FSharp.SDK/Microsoft.FSharp.SDK.swixproj +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - Microsoft.FSharp.SDK - - - - $(PackagePreprocessorDefinitions);PackagesFolder=$(NuGetPackageRoot) - $(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion) - - - - - - - - - - - - - diff --git a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Empty.swr b/setup/Swix/Microsoft.FSharp.Vsix.Resources/Empty.swr deleted file mode 100644 index dd1ca136daceea209021cdf2ce8bdee1ab24115e..0000000000000000000000000000000000000000 --- a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Empty.swr +++ /dev/null @@ -1,6 +0,0 @@ -use vs - -package name=Microsoft.FSharp.VSIX.Full.Resources - version=$(FSharpPackageVersion) - vs.package.language=$(LocaleSpecificCulture) - vs.package.installSize=1 diff --git a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Files.swr b/setup/Swix/Microsoft.FSharp.Vsix.Resources/Files.swr deleted file mode 100644 index f3b95d49900128a46a6682bbc3e541a7bb728edd..0000000000000000000000000000000000000000 --- a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Files.swr +++ /dev/null @@ -1,20 +0,0 @@ -use vs - -package name=Microsoft.FSharp.VSIX.Full.Resources - version=$(FSharpPackageVersion) - vs.package.language=$(LocaleSpecificCulture) - -folder "InstallDir:Common7\IDE\PublicAssemblies\$(LocaleParentCulture)" - file source="$(BinariesFolder)\FSharp.Core\$(Configuration)\net45\$(LocaleParentCulture)\FSharp.Core.resources.dll" vs.file.ngen=yes - -folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharp\$(LocaleParentCulture)" - file source="$(BinariesFolder)\FSharp.Compiler.Private\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.Compiler.Private.resources.dll" vs.file.ngen=yes - file source="$(BinariesFolder)\FSharp.Core\$(Configuration)\net45\$(LocaleParentCulture)\FSharp.Core.resources.dll" vs.file.ngen=yes - file source="$(BinariesFolder)\FSharp.Editor\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.Editor.resources.dll" vs.file.ngen=yes - file source="$(BinariesFolder)\FSharp.LanguageService.Base\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.LanguageService.Base.resources.dll" vs.file.ngen=yes - file source="$(BinariesFolder)\FSharp.LanguageService\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.LanguageService.resources.dll" vs.file.ngen=yes - file source="$(BinariesFolder)\ProjectSystem.Base\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.ProjectSystem.Base.resources.dll" vs.file.ngen=yes - file source="$(BinariesFolder)\ProjectSystem\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.ProjectSystem.FSharp.resources.dll" vs.file.ngen=yes - file source="$(BinariesFolder)\FSharp.PropertiesPages\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.ProjectSystem.PropertyPages.resources.dll" vs.file.ngen=yes - file source="$(BinariesFolder)\FSharp.UIResources\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.UIResources.resources.dll" vs.file.ngen=yes - file source="$(BinariesFolder)\FSharp.VS.FSI\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.VS.FSI.resources.dll" vs.file.ngen=yes diff --git a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Microsoft.FSharp.Vsix.Resources.swixproj b/setup/Swix/Microsoft.FSharp.Vsix.Resources/Microsoft.FSharp.Vsix.Resources.swixproj deleted file mode 100644 index d8952b40fe719a2519425421ed84be677dad829a..0000000000000000000000000000000000000000 --- a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Microsoft.FSharp.Vsix.Resources.swixproj +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - Microsoft.FSharp.VSIX.Full.Resources.$(LocaleCode) - - - - $(PackagePreprocessorDefinitions);Configuration=$(Configuration) - $(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder) - $(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion) - $(PackagePreprocessorDefinitions);LocaleCode=$(LocaleCode) - $(PackagePreprocessorDefinitions);LocaleId=$(LocaleId) - $(PackagePreprocessorDefinitions);LocaleParentId=$(LocaleParentId) - $(PackagePreprocessorDefinitions);LocaleParentCulture=$(LocaleParentCulture) - $(PackagePreprocessorDefinitions);LocaleSpecificCulture=$(LocaleSpecificCulture) - $(PackagePreprocessorDefinitions);IsLangPack=$(IsLangPack) - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Templates.swr b/setup/Swix/Microsoft.FSharp.Vsix.Resources/Templates.swr deleted file mode 100644 index 5de89f0cadddc8bfedb1ad8675e3301017a6b823..0000000000000000000000000000000000000000 --- a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Templates.swr +++ /dev/null @@ -1,13 +0,0 @@ -use vs - -package name=Microsoft.FSharp.VSIX.Full.Resources - version=$(FSharpPackageVersion) - vs.package.language=$(LocaleSpecificCulture) - -folder "InstallDir:Common7\IDE\ProjectTemplates\FSharp\$(LocaleId)" - folder "ConsoleApplication" - file source="$(BinariesFolder)\ConsoleProject\$(Configuration)\$(LocaleParentId)\ConsoleApplication.zip" - folder "Library" - file source="$(BinariesFolder)\LibraryProject\$(Configuration)\$(LocaleParentId)\Library.zip" - folder "Tutorial" - file source="$(BinariesFolder)\TutorialProject\$(Configuration)\$(LocaleParentId)\Tutorial.zip" diff --git a/setup/Swix/Microsoft.FSharp.vsmanproj b/setup/Swix/Microsoft.FSharp.vsmanproj deleted file mode 100644 index a09ca5442f5c3c862ff62814aa5c59c23f55dfcd..0000000000000000000000000000000000000000 --- a/setup/Swix/Microsoft.FSharp.vsmanproj +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - true - true - $(ArtifactsDir)\VSSetup\$(Configuration)\Insertion - $(OutputPath) - $(FSharpPackageVersion) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/setup/build-insertion.proj b/setup/build-insertion.proj deleted file mode 100644 index b132d3edfeaded3d520b4dfc2dc070ac4e711d63..0000000000000000000000000000000000000000 --- a/setup/build-insertion.proj +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - . - Debug - - - - - - Swix\Microsoft.FSharp.SDK\Microsoft.FSharp.SDK.swixproj - - - Swix\Microsoft.FSharp.Compiler\Microsoft.FSharp.Compiler.swixproj - - - - - - - - - - - AssemblySearchPaths={HintPathFromItem};{TargetFrameworkDirectory};{RawFileName} - - - - - - - - - - - - - - - diff --git a/setup/fsharp-setup-build.csproj b/setup/fsharp-setup-build.csproj deleted file mode 100644 index 074879dc20efc8f6ed7b5aa10ae03b8abe551747..0000000000000000000000000000000000000000 --- a/setup/fsharp-setup-build.csproj +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - net46 - - - - - - - - - - - - - - - - - - - - - - - Swix\Microsoft.FSharp.Dependencies\Microsoft.FSharp.Dependencies.swixproj - - - Swix\Microsoft.FSharp.IDE\Microsoft.FSharp.IDE.swixproj - - - - - - - - - - - - - - - AssemblySearchPaths={HintPathFromItem};{TargetFrameworkDirectory};{RawFileName} - - - - - diff --git a/src/Directory.Build.props b/src/Directory.Build.props deleted file mode 100644 index bb8eac309b1ad0dfc3418caf301e1f06803c82ae..0000000000000000000000000000000000000000 --- a/src/Directory.Build.props +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets deleted file mode 100644 index ccd47cc0a9aa21567cd1adbf7d7054bf309679f1..0000000000000000000000000000000000000000 --- a/src/Directory.Build.targets +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/buildtools/buildtools.targets b/src/buildtools/buildtools.targets index 9b00e18cf72d17843a9b2483d839c1b853e6fc96..303ab00825dd544355ae676a983eabb517438d24 100644 --- a/src/buildtools/buildtools.targets +++ b/src/buildtools/buildtools.targets @@ -1,10 +1,15 @@ - dotnet - dotnet.exe - + + dotnet + dotnet.exe + + $(DOTNET_HOST_PATH) $(DotNetExe) + + + $(DotNetExePath) @@ -15,14 +20,14 @@ BeforeTargets="CoreCompile"> - $(ArtifactsBinDir)\fslex\Proto\netcoreapp2.0\fslex.dll + $(ArtifactsDir)\Bootstrap\fslex.dll - + @@ -38,14 +43,14 @@ BeforeTargets="CoreCompile"> - $(ArtifactsBinDir)\fsyacc\Proto\netcoreapp2.0\fsyacc.dll + $(ArtifactsDir)\Bootstrap\fsyacc.dll - + diff --git a/src/fsharp/Directory.Nuget.props b/src/fsharp/Directory.Nuget.props deleted file mode 100644 index 6521936cfe343adcea8b38222011fd58b342e3a0..0000000000000000000000000000000000000000 --- a/src/fsharp/Directory.Nuget.props +++ /dev/null @@ -1,27 +0,0 @@ - - - - https://github.com/Microsoft/visualfsharp/blob/master/License.txt - https://github.com/Microsoft/visualfsharp - Microsoft and F# Software Foundation - Microsoft and F# Software Foundation - Visual F# Compiler FSharp functional programming - (C) Microsoft Corporation. All rights reserved. - - $(GitHeadSha) - [developer build] - - - licenseUrl=$(PackageLicenceUrl); - authors=$(PackageAuthors); - owners=$(PackageOwners); - projectUrl=$(PackageProjectUrl); - copyright=$(PackageCopyright); - tags=$(PackageTags); - githeadsha=$(NormalizedGitHeadSha); - configuration=$(Configuration); - artifactsbindir=$(ArtifactsBinDir); - - - - diff --git a/src/fsharp/Directory.Nuget.targets b/src/fsharp/Directory.Nuget.targets deleted file mode 100644 index e30b155faadb20ab46bf1edbf3108c2453354365..0000000000000000000000000000000000000000 --- a/src/fsharp/Directory.Nuget.targets +++ /dev/null @@ -1,11 +0,0 @@ - - - - - $(NuspecProperties); - packageId=$(PackageId); - version=$(PackageVersion); - - - - diff --git a/src/fsharp/FSharp.Build/Directory.Build.props b/src/fsharp/FSharp.Build/Directory.Build.props new file mode 100644 index 0000000000000000000000000000000000000000..7cd41381b5df865bd221aeb3799e59b35946c720 --- /dev/null +++ b/src/fsharp/FSharp.Build/Directory.Build.props @@ -0,0 +1,9 @@ + + + + true + + + + + diff --git a/src/fsharp/FSharp.Build/FSharp.Build.fsproj b/src/fsharp/FSharp.Build/FSharp.Build.fsproj index 162c6bf3d312c7dca587b57af113e73afcc48407..4bf0eb97289b4bb74f60fa19d35dd99147307f8a 100644 --- a/src/fsharp/FSharp.Build/FSharp.Build.fsproj +++ b/src/fsharp/FSharp.Build/FSharp.Build.fsproj @@ -5,11 +5,11 @@ Library net46;netstandard2.0 + netstandard2.0 FSharp.Build $(NoWarn);45;55;62;75;1204 true $(OtherFlags) --maxerrors:20 --extraoptimizationloops:1 - true diff --git a/src/fsharp/FSharp.Compiler.Interactive.Settings/Directory.Build.props b/src/fsharp/FSharp.Compiler.Interactive.Settings/Directory.Build.props new file mode 100644 index 0000000000000000000000000000000000000000..7cd41381b5df865bd221aeb3799e59b35946c720 --- /dev/null +++ b/src/fsharp/FSharp.Compiler.Interactive.Settings/Directory.Build.props @@ -0,0 +1,9 @@ + + + + true + + + + + diff --git a/src/fsharp/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj b/src/fsharp/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj index 06a4c43055f2dd3baef1210774b20698cbc0c866..3569093c47faab6959efc8b5489ee97f630bba7c 100644 --- a/src/fsharp/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj +++ b/src/fsharp/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj @@ -5,11 +5,11 @@ Library net46;netstandard2.0 + netstandard2.0 FSharp.Compiler.Interactive.Settings $(NoWarn);45;55;62;75;1182;1204 true $(OtherFlags) --maxerrors:20 --extraoptimizationloops:1 - true diff --git a/src/fsharp/FSharp.Compiler.Private/Directory.Build.props b/src/fsharp/FSharp.Compiler.Private/Directory.Build.props new file mode 100644 index 0000000000000000000000000000000000000000..7cd41381b5df865bd221aeb3799e59b35946c720 --- /dev/null +++ b/src/fsharp/FSharp.Compiler.Private/Directory.Build.props @@ -0,0 +1,9 @@ + + + + true + + + + + diff --git a/src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj b/src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj index 7f4546da3a6ada0225de2e72dfc171fb722b8de7..ce3e578f7ae8af075b58d8e631e29fc1e8b00162 100644 --- a/src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj +++ b/src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj @@ -5,21 +5,27 @@ Library net46;netstandard2.0 + netstandard2.0 FSharp.Compiler.Private $(NoWarn);45;55;62;75;1204 true $(DefineConstants);COMPILER $(DefineConstants);MSBUILD_AT_LEAST_15 $(OtherFlags) --warnon:1182 --maxerrors:20 --extraoptimizationloops:1 - true true true true - + full + false + + + + + false diff --git a/src/fsharp/FSharp.Compiler.Server.Shared/Directory.Build.props b/src/fsharp/FSharp.Compiler.Server.Shared/Directory.Build.props new file mode 100644 index 0000000000000000000000000000000000000000..7cd41381b5df865bd221aeb3799e59b35946c720 --- /dev/null +++ b/src/fsharp/FSharp.Compiler.Server.Shared/Directory.Build.props @@ -0,0 +1,9 @@ + + + + true + + + + + diff --git a/src/fsharp/FSharp.Compiler.Server.Shared/FSharp.Compiler.Server.Shared.fsproj b/src/fsharp/FSharp.Compiler.Server.Shared/FSharp.Compiler.Server.Shared.fsproj index 4feaf0da4e1005dcd52284af4defdd24a05e9dce..2940172c7e6d42fd9fd48e6faa4c132786f0d2e7 100644 --- a/src/fsharp/FSharp.Compiler.Server.Shared/FSharp.Compiler.Server.Shared.fsproj +++ b/src/fsharp/FSharp.Compiler.Server.Shared/FSharp.Compiler.Server.Shared.fsproj @@ -4,8 +4,6 @@ net46 - FSharp.Compiler.Server.Shared - true diff --git a/src/fsharp/FSharp.Compiler.nuget/Directory.Build.props b/src/fsharp/FSharp.Compiler.nuget/Directory.Build.props index 8093275dba0b30f2754aa5fd0a422f327281a310..7cd41381b5df865bd221aeb3799e59b35946c720 100644 --- a/src/fsharp/FSharp.Compiler.nuget/Directory.Build.props +++ b/src/fsharp/FSharp.Compiler.nuget/Directory.Build.props @@ -1,11 +1,9 @@ - - - - + - netcoreapp2.1 - Microsoft.FSharp.Compiler.nuspec + true + + diff --git a/src/fsharp/FSharp.Compiler.nuget/Directory.Build.targets b/src/fsharp/FSharp.Compiler.nuget/Directory.Build.targets deleted file mode 100644 index 2721c93a9067f3290ef3376b4049269d9636e959..0000000000000000000000000000000000000000 --- a/src/fsharp/FSharp.Compiler.nuget/Directory.Build.targets +++ /dev/null @@ -1,18 +0,0 @@ - - - - -rtm-$(NuGetPackageVersionSuffix) - $(FSPackageVersion)$(PreReleaseSuffix) - - - - - - - - - - - - - diff --git a/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.Prerelease.csproj b/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.Prerelease.csproj deleted file mode 100644 index 692e5aba1b2c0baa053b0f817c81ca21931f55dc..0000000000000000000000000000000000000000 --- a/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.Prerelease.csproj +++ /dev/null @@ -1,8 +0,0 @@ - - - - Microsoft.FSharp.Compiler - true - - - diff --git a/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.csproj b/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.csproj index 692e5aba1b2c0baa053b0f817c81ca21931f55dc..d6306806993d8df5ecfccc3c0cb6629398e00dc8 100644 --- a/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.csproj +++ b/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.csproj @@ -1,8 +1,28 @@ - + - Microsoft.FSharp.Compiler true + netcoreapp2.1 + Microsoft.FSharp.Compiler.nuspec + true + .NET Core compatible version of the F# compiler fsc.exe. + + + TargetFramework=netcoreapp2.1 + + + TargetFramework=netcoreapp2.1 + + + TargetFramework=netstandard2.0 + + + TargetFramework=netstandard2.0 + + + + + diff --git a/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.nuspec b/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.nuspec index 1082f9b47b387c67a1cfd80bac914260693002bf..e73c9e2452b257d4deec02a83933a7ccf22eb571 100644 --- a/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.nuspec +++ b/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.nuspec @@ -1,19 +1,8 @@ - $packageId$ - - .NET Core compatible version of the F# compiler fsc.exe. - Supported Platforms: - .NET Core (.netstandard2.0). - Commit hash: $githeadsha$. - + $CommonMetadataElements$ en-US - true - $version$ - $authors$ - $licenseUrl$ - $projectUrl$ - $tags$ @@ -54,35 +43,35 @@ this approach gives a very small deployment. Which is kind of necessary. --> - - - - - - + + + + + - - - - - - + + + + + - - - - - - + + + + + + - - + - - + diff --git a/src/fsharp/FSharp.Compiler.nuget/Testing.FSharp.Compiler.csproj b/src/fsharp/FSharp.Compiler.nuget/Testing.FSharp.Compiler.csproj deleted file mode 100644 index aaee9c7394244fca39b36b7f6f7051a086cec576..0000000000000000000000000000000000000000 --- a/src/fsharp/FSharp.Compiler.nuget/Testing.FSharp.Compiler.csproj +++ /dev/null @@ -1,8 +0,0 @@ - - - - Testing.FSharp.Compiler - true - - - diff --git a/src/fsharp/FSharp.Compiler.nuget/_._ b/src/fsharp/FSharp.Compiler.nuget/_._ deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/src/fsharp/FSharp.Core/Directory.Build.props b/src/fsharp/FSharp.Core/Directory.Build.props deleted file mode 100644 index cee6fa763d9f22f46d2844405a72951d9db8d96f..0000000000000000000000000000000000000000 --- a/src/fsharp/FSharp.Core/Directory.Build.props +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - $(NuspecProperties); - fsCoreMajorVersion=$(FSCoreMajorVersion); - fsPackageMajorVersion=$(FSPackageMajorVersion); - - - - diff --git a/src/fsharp/FSharp.Core/Directory.Build.targets b/src/fsharp/FSharp.Core/Directory.Build.targets deleted file mode 100644 index 8bf68e8bc7bc911af5eb1c8c07670a8b1828a1c6..0000000000000000000000000000000000000000 --- a/src/fsharp/FSharp.Core/Directory.Build.targets +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/fsharp/FSharp.Core/FSharp.Core.fsproj b/src/fsharp/FSharp.Core/FSharp.Core.fsproj index 6ddda3f2e7e7c5cbc76603602b768b21fbd839d8..de0fca82aa60561f4a85d7957a25dc75612c57a5 100644 --- a/src/fsharp/FSharp.Core/FSharp.Core.fsproj +++ b/src/fsharp/FSharp.Core/FSharp.Core.fsproj @@ -5,9 +5,9 @@ Library net45;netstandard1.6 - FSharp.Core - FSharp.Core - $(FSCorePackageVersion) + netstandard1.6 + true + FSharp.Core redistributables from Visual F# Tools version $(FSPackageMajorVersion) For F# $(FSCoreMajorVersion) FSharp.Core.nuspec $(NoWarn);45;55;62;75;1204 true diff --git a/src/fsharp/FSharp.Core/FSharp.Core.nuspec b/src/fsharp/FSharp.Core/FSharp.Core.nuspec index 0fa30ba781fd07dfd0ef8b9a1234f44cc15c268d..b11df35fca0807cef4151aaefaaeb95a0ffa053c 100644 --- a/src/fsharp/FSharp.Core/FSharp.Core.nuspec +++ b/src/fsharp/FSharp.Core/FSharp.Core.nuspec @@ -1,27 +1,8 @@ - FSharp.Core - FSharp.Core for F# $fsCoreMajorVersion$ - FSharp.Core for F# $fsCoreMajorVersion$ - - FSharp.Core redistributables from Visual F# Tools version $fsPackageMajorVersion$ For F# $fsCoreMajorVersion$ - Supported Platforms: - .NET Framework 4.5+ (net45) - netstandard1.6 (netstandard1.6) - netstandard2.0 (netstandard2.0) - - Commit hash: $githeadsha$ - - $owners$ - $version$ - $authors$ - $copyright$ - $licenseUrl$ - $projectUrl$ + $CommonMetadataElements$ http://fsharp.org/img/logo.png - $tags$ - true en-US @@ -56,18 +37,18 @@ - - - - + + + + - - - - + + + + - - + + diff --git a/src/fsharp/fsc/Directory.Build.props b/src/fsharp/fsc/Directory.Build.props new file mode 100644 index 0000000000000000000000000000000000000000..7cd41381b5df865bd221aeb3799e59b35946c720 --- /dev/null +++ b/src/fsharp/fsc/Directory.Build.props @@ -0,0 +1,9 @@ + + + + true + + + + + diff --git a/src/fsharp/fsc/fsc.fsproj b/src/fsharp/fsc/fsc.fsproj index a2e5127b61a941e245a2883a230dbe1bdce45130..581b4a11797a40d771420023ceb01396b1605e98 100644 --- a/src/fsharp/fsc/fsc.fsproj +++ b/src/fsharp/fsc/fsc.fsproj @@ -5,12 +5,11 @@ Exe net46;netcoreapp2.1 + netcoreapp2.1 .exe - fsc $(NoWarn);45;55;62;75;1204 true $(OtherFlags) --maxerrors:20 --extraoptimizationloops:1 - true true true diff --git a/src/fsharp/fsi/Directory.Build.props b/src/fsharp/fsi/Directory.Build.props new file mode 100644 index 0000000000000000000000000000000000000000..7cd41381b5df865bd221aeb3799e59b35946c720 --- /dev/null +++ b/src/fsharp/fsi/Directory.Build.props @@ -0,0 +1,9 @@ + + + + true + + + + + diff --git a/src/fsharp/fsi/fsi.fsproj b/src/fsharp/fsi/fsi.fsproj index b8b6a9a020fcfe1738832cc521f821ffaa7c96dc..77a9274a1e655f89a6f9978551e1805d1c652283 100644 --- a/src/fsharp/fsi/fsi.fsproj +++ b/src/fsharp/fsi/fsi.fsproj @@ -5,13 +5,12 @@ Exe net46;netcoreapp2.1 + netcoreapp2.1 .exe - fsi $(NoWarn);45;55;62;75;1204 true $(OtherFlags) --warnon:1182 --maxerrors:20 --extraoptimizationloops:1 fsi.res - true true true diff --git a/src/fsharp/fsiAnyCpu/Directory.Build.props b/src/fsharp/fsiAnyCpu/Directory.Build.props new file mode 100644 index 0000000000000000000000000000000000000000..7cd41381b5df865bd221aeb3799e59b35946c720 --- /dev/null +++ b/src/fsharp/fsiAnyCpu/Directory.Build.props @@ -0,0 +1,9 @@ + + + + true + + + + + diff --git a/src/fsharp/fsiAnyCpu/fsiAnyCpu.fsproj b/src/fsharp/fsiAnyCpu/fsiAnyCpu.fsproj index 200bd6d40a3a92f45778f2725075dc9cbd518279..868b379f23435c4d0f9a2581b4332c412694f81d 100644 --- a/src/fsharp/fsiAnyCpu/fsiAnyCpu.fsproj +++ b/src/fsharp/fsiAnyCpu/fsiAnyCpu.fsproj @@ -7,12 +7,10 @@ net46 AnyCPU .exe - fsiAnyCpu $(NoWarn);45;55;62;75;1204 true $(OtherFlags) --warnon:1182 --maxerrors:20 --extraoptimizationloops:1 ..\fsi\fsi.res - true true diff --git a/test.sh b/test.sh new file mode 100755 index 0000000000000000000000000000000000000000..ea8631bd2301f3c0bcce37060abfb384d0979f96 --- /dev/null +++ b/test.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +source="${BASH_SOURCE[0]}" + +# resolve $SOURCE until the file is no longer a symlink +while [[ -h $source ]]; do + scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + source="$(readlink "$source")" + + # if $source was a relative symlink, we need to resolve it relative to the path where the + # symlink file was located + [[ $source != /* ]] && source="$scriptroot/$source" +done + +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" +"$scriptroot/eng/build.sh" --test $@ diff --git a/tests/Directory.Build.targets b/tests/Directory.Build.targets new file mode 100644 index 0000000000000000000000000000000000000000..4bf59eb4aa6171b3aa68a31dd8af5aef76deaff0 --- /dev/null +++ b/tests/Directory.Build.targets @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/FSharp.Build.UnitTests/Directory.Build.props b/tests/FSharp.Build.UnitTests/Directory.Build.props index bb8eac309b1ad0dfc3418caf301e1f06803c82ae..7cd41381b5df865bd221aeb3799e59b35946c720 100644 --- a/tests/FSharp.Build.UnitTests/Directory.Build.props +++ b/tests/FSharp.Build.UnitTests/Directory.Build.props @@ -1,3 +1,9 @@ - + + + true + + + + diff --git a/tests/FSharp.Build.UnitTests/Directory.Build.targets b/tests/FSharp.Build.UnitTests/Directory.Build.targets deleted file mode 100644 index ccd47cc0a9aa21567cd1adbf7d7054bf309679f1..0000000000000000000000000000000000000000 --- a/tests/FSharp.Build.UnitTests/Directory.Build.targets +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/tests/FSharp.Build.UnitTests/FSharp.Build.UnitTests.fsproj b/tests/FSharp.Build.UnitTests/FSharp.Build.UnitTests.fsproj index 9e04e6e5845fd292a49391c7c572ef1872b6feb3..fa9b74422c48eaa72aad97dfb60d403a0f4c2374 100644 --- a/tests/FSharp.Build.UnitTests/FSharp.Build.UnitTests.fsproj +++ b/tests/FSharp.Build.UnitTests/FSharp.Build.UnitTests.fsproj @@ -4,6 +4,7 @@ net46;netcoreapp2.0 + netcoreapp2.0 Library true nunit diff --git a/tests/FSharp.Compiler.UnitTests/Directory.Build.props b/tests/FSharp.Compiler.UnitTests/Directory.Build.props index bb8eac309b1ad0dfc3418caf301e1f06803c82ae..7cd41381b5df865bd221aeb3799e59b35946c720 100644 --- a/tests/FSharp.Compiler.UnitTests/Directory.Build.props +++ b/tests/FSharp.Compiler.UnitTests/Directory.Build.props @@ -1,3 +1,9 @@ - + + + true + + + + diff --git a/tests/FSharp.Compiler.UnitTests/Directory.Build.targets b/tests/FSharp.Compiler.UnitTests/Directory.Build.targets deleted file mode 100644 index ccd47cc0a9aa21567cd1adbf7d7054bf309679f1..0000000000000000000000000000000000000000 --- a/tests/FSharp.Compiler.UnitTests/Directory.Build.targets +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/tests/FSharp.Compiler.UnitTests/FSharp.Compiler.UnitTests.fsproj b/tests/FSharp.Compiler.UnitTests/FSharp.Compiler.UnitTests.fsproj index 4b9f4d21a308101958f497c99f56173b68210eec..a1acb6f9fdada002b918df6cfbc6343c16f8cd78 100644 --- a/tests/FSharp.Compiler.UnitTests/FSharp.Compiler.UnitTests.fsproj +++ b/tests/FSharp.Compiler.UnitTests/FSharp.Compiler.UnitTests.fsproj @@ -4,6 +4,7 @@ net46;netcoreapp2.0 + netcoreapp2.0 Library true nunit diff --git a/tests/FSharp.Compiler.UnitTests/Language/StringConcat.fs b/tests/FSharp.Compiler.UnitTests/Language/StringConcat.fs index fa18e7bb4279cfbb56a89342d3340190654b87ee..4069052a033e19c747ce793870c99c64f49bc625 100644 --- a/tests/FSharp.Compiler.UnitTests/Language/StringConcat.fs +++ b/tests/FSharp.Compiler.UnitTests/Language/StringConcat.fs @@ -8,7 +8,10 @@ open NUnit.Framework [] module StringConcat = +// helper methods in this test only run on the full framework +#if !NETCOREAPP [] +#endif let Optimizations () = let baseSource = """ module Test diff --git a/tests/FSharp.Core.UnitTests/Directory.Build.props b/tests/FSharp.Core.UnitTests/Directory.Build.props deleted file mode 100644 index bb8eac309b1ad0dfc3418caf301e1f06803c82ae..0000000000000000000000000000000000000000 --- a/tests/FSharp.Core.UnitTests/Directory.Build.props +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/tests/FSharp.Core.UnitTests/Directory.Build.targets b/tests/FSharp.Core.UnitTests/Directory.Build.targets deleted file mode 100644 index ccd47cc0a9aa21567cd1adbf7d7054bf309679f1..0000000000000000000000000000000000000000 --- a/tests/FSharp.Core.UnitTests/Directory.Build.targets +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/tests/FSharp.Core.UnitTests/FSharp.Core.UnitTests.fsproj b/tests/FSharp.Core.UnitTests/FSharp.Core.UnitTests.fsproj index 54b955b2c1e71c0fd587cc1580c62a67fb03501b..31351eca6b29bde07a0b9071da0343dc2ad47615 100644 --- a/tests/FSharp.Core.UnitTests/FSharp.Core.UnitTests.fsproj +++ b/tests/FSharp.Core.UnitTests/FSharp.Core.UnitTests.fsproj @@ -4,6 +4,7 @@ net46;netcoreapp2.0 + netcoreapp2.0 Library FSharp.Core.UnitTests @@ -12,9 +13,11 @@ true true - xunit + nunit true true + MIT + false @@ -93,7 +96,6 @@ - @@ -101,9 +103,4 @@ - - - - - diff --git a/tests/FSharp.Core.UnitTests/FSharp.Core/Microsoft.FSharp.Control/App.config b/tests/FSharp.Core.UnitTests/FSharp.Core/Microsoft.FSharp.Control/App.config deleted file mode 100644 index 47c31e4eac0fdd8a3aa2ba357f788018257c615f..0000000000000000000000000000000000000000 --- a/tests/FSharp.Core.UnitTests/FSharp.Core/Microsoft.FSharp.Control/App.config +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/FSharp.Directory.Build.props b/tests/FSharp.Directory.Build.props deleted file mode 100644 index f073b7b0858d167d835248a7a4d6a50dc82f710c..0000000000000000000000000000000000000000 --- a/tests/FSharp.Directory.Build.props +++ /dev/null @@ -1,36 +0,0 @@ - - - - - $(ArtifactsPackagesDir)\$(Configuration) - - - - $(DefineConstants);FX_VERIFY_SURFACEAREA - - - - https://github.com/Microsoft/visualfsharp/blob/master/License.txt - https://github.com/Microsoft/visualfsharp - Microsoft and F# Software Foundation - Microsoft and F# Software Foundation - Visual F# Compiler FSharp functional programming - (C) Microsoft Corporation. All rights reserved. - - $(GitHeadSha) - [developer build] - - - licenseUrl=$(PackageLicenceUrl); - authors=$(PackageAuthors); - owners=$(PackageOwners); - projectUrl=$(PackageProjectUrl); - copyright=$(PackageCopyright); - tags=$(PackageTags); - githeadsha=$(NormalizedGitHeadSha); - configuration=$(Configuration); - artifactsbindir=$(ArtifactsBinDir); - - - - diff --git a/tests/FSharp.Directory.Build.targets b/tests/FSharp.Directory.Build.targets deleted file mode 100644 index 590214e9b00d3b9deb77c7a3ef5f17aaed522d5c..0000000000000000000000000000000000000000 --- a/tests/FSharp.Directory.Build.targets +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/tests/Resources/Directory.Build.props b/tests/Resources/Directory.Build.props new file mode 100644 index 0000000000000000000000000000000000000000..08b24f2800351d243be5cb4db8545d8e4fd9a21a --- /dev/null +++ b/tests/Resources/Directory.Build.props @@ -0,0 +1,3 @@ + + + diff --git a/tests/Resources/Directory.Build.targets b/tests/Resources/Directory.Build.targets new file mode 100644 index 0000000000000000000000000000000000000000..08b24f2800351d243be5cb4db8545d8e4fd9a21a --- /dev/null +++ b/tests/Resources/Directory.Build.targets @@ -0,0 +1,3 @@ + + + diff --git a/tests/fsharp/Directory.Build.props b/tests/fsharp/Directory.Build.props index bb8eac309b1ad0dfc3418caf301e1f06803c82ae..7cd41381b5df865bd221aeb3799e59b35946c720 100644 --- a/tests/fsharp/Directory.Build.props +++ b/tests/fsharp/Directory.Build.props @@ -1,3 +1,9 @@ - + + + true + + + + diff --git a/tests/fsharp/Directory.Build.targets b/tests/fsharp/Directory.Build.targets deleted file mode 100644 index ccd47cc0a9aa21567cd1adbf7d7054bf309679f1..0000000000000000000000000000000000000000 --- a/tests/fsharp/Directory.Build.targets +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/tests/fsharp/FSharp.Tests.FSharpSuite.fsproj b/tests/fsharp/FSharpSuite.Tests.fsproj similarity index 96% rename from tests/fsharp/FSharp.Tests.FSharpSuite.fsproj rename to tests/fsharp/FSharpSuite.Tests.fsproj index 97aa63d88fb0a6104d4ea9c51359c78422501843..057ff6af08f09683be4c31f439227139b9369d96 100644 --- a/tests/fsharp/FSharp.Tests.FSharpSuite.fsproj +++ b/tests/fsharp/FSharpSuite.Tests.fsproj @@ -3,6 +3,7 @@ net46;netcoreapp2.0 + netcoreapp2.0 win-x86;win-x64 $(AssetTargetFallback);portable-net45+win8+wp8+wpa81 true diff --git a/tests/fsharp/single-test.fs b/tests/fsharp/single-test.fs index 557ee021ed9df2439796ed42af5e4e3419f477e7..b0a24ccb8e939531f2897237f740d2ffdc8b6996 100644 --- a/tests/fsharp/single-test.fs +++ b/tests/fsharp/single-test.fs @@ -68,7 +68,7 @@ let generateProps testCompilerVersion = Release $(TESTCOMPILERVERSION) - + " template |> replaceTokens "$(PROJECTDIRECTORY)" (Path.GetFullPath(__SOURCE_DIRECTORY__)) @@ -76,7 +76,7 @@ let generateProps testCompilerVersion = let generateTargets = let template = @" - + " template diff --git a/tests/fsharp/test-framework.fs b/tests/fsharp/test-framework.fs index 7c535ae549e6c4a9ba5af04318795ab7066e0175..1e40e0bd3ea311bf4c589dd5a5f17887ea9e0c15 100644 --- a/tests/fsharp/test-framework.fs +++ b/tests/fsharp/test-framework.fs @@ -184,7 +184,11 @@ let config configurationName envVars = let FSI_FOR_SCRIPTS = artifactsBinPath ++ "fsi" ++ configurationName ++ fsiArchitecture ++ "fsi.exe" let FSharpBuild = requireFile (artifactsBinPath ++ "FSharp.Build" ++ configurationName ++ fsharpBuildArchitecture ++ "FSharp.Build.dll") let FSharpCompilerInteractiveSettings = requireFile (artifactsBinPath ++ "FSharp.Compiler.Interactive.Settings" ++ configurationName ++ fsharpCompilerInteractiveSettingsArchitecture ++ "FSharp.Compiler.Interactive.Settings.dll") - let dotNetExe = artifactsPath ++ "toolset" ++ "dotnet" ++ "dotnet.exe" + let dotNetExe = + // first look for {repoRoot}\.dotnet\dotnet.exe, otherwise fallback to %PATH% + let repoLocalDotnetPath = repoRoot ++ ".dotnet" ++ "dotnet.exe" + if File.Exists(repoLocalDotnetPath) then repoLocalDotnetPath + else "dotnet.exe" // ildasm requires coreclr.dll to run which has already been restored to the packages directory File.Copy(coreclrdll, Path.GetDirectoryName(ILDASM) ++ "coreclr.dll", overwrite=true) diff --git a/tests/fsharp/tests.fs b/tests/fsharp/tests.fs index dbd5dbc0170fb5ce29244ae9a21f93f4cb93a2a7..b109b9a8956715d003438cd0e56c292590774595 100644 --- a/tests/fsharp/tests.fs +++ b/tests/fsharp/tests.fs @@ -75,7 +75,7 @@ module CoreTests = let namespaceAttributes () = singleTestBuildAndRun "core/namespaces" FSC_BASIC [] - let unicode2 () = singleTestBuildAndRun "core/unicode" FSC_BASIC + let unicode2 () = singleTestBuildAndRun "core/unicode" FSC_BASIC // TODO: fails on coreclr [] let ``unicode2-FSI_BASIC`` () = singleTestBuildAndRun "core/unicode" FSI_BASIC @@ -164,7 +164,7 @@ module CoreTests = #if !FSHARP_SUITE_DRIVES_CORECLR_TESTS [] - let ``quotes-FSC-BASIC`` () = singleTestBuildAndRun "core/quotes" FSC_BASIC + let ``quotes-FSC-BASIC`` () = singleTestBuildAndRun "core/quotes" FSC_BASIC // TODO: fails on coreclr [] let ``attributes-FSC_BASIC`` () = singleTestBuildAndRun "core/attributes" FSC_BASIC diff --git a/tests/fsharpqa/Source/CodeGen/StringEncoding/.gitignore b/tests/fsharpqa/Source/CodeGen/StringEncoding/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..2bc99dcf85ef396d7d8bdab06f2b1fb5c3e7949f --- /dev/null +++ b/tests/fsharpqa/Source/CodeGen/StringEncoding/.gitignore @@ -0,0 +1,3 @@ +# generated as part of the test +oracle.cs +testcase.fs diff --git a/tests/fsharpqa/Source/CodeGen/StringEncoding/env.lst b/tests/fsharpqa/Source/CodeGen/StringEncoding/env.lst index ec112a51d2ef87a19bced400fa129d0261fc01cc..6dba35a3cb9db87621cce2bad714ea3eda363426 100644 --- a/tests/fsharpqa/Source/CodeGen/StringEncoding/env.lst +++ b/tests/fsharpqa/Source/CodeGen/StringEncoding/env.lst @@ -1,5 +1,5 @@ - SOURCE="dummy.fs testcase.fs" PRECMD="\$FSI_PIPE --exec NormalizationFormKC.fsx > oracle.cs && csc oracle.cs && oracle.exe>testcase.fs" # FormKC - SOURCE="dummy.fs testcase.fs" PRECMD="\$FSI_PIPE --exec NormalizationFormKD.fsx > oracle.cs && csc oracle.cs && oracle.exe>testcase.fs" # FormKD - SOURCE="dummy.fs testcase.fs" PRECMD="\$FSI_PIPE --exec NormalizationFormC.fsx > oracle.cs && csc oracle.cs && oracle.exe>testcase.fs" # FormC - SOURCE="dummy.fs testcase.fs" PRECMD="\$FSI_PIPE --exec NormalizationFormD.fsx > oracle.cs && csc oracle.cs && oracle.exe>testcase.fs" # FormD + SOURCE="dummy.fs testcase.fs" PRECMD="\$FSI_PIPE --exec NormalizationFormKC.fsx > oracle.cs && \$CSC_PIPE oracle.cs && oracle.exe>testcase.fs" # FormKC + SOURCE="dummy.fs testcase.fs" PRECMD="\$FSI_PIPE --exec NormalizationFormKD.fsx > oracle.cs && \$CSC_PIPE oracle.cs && oracle.exe>testcase.fs" # FormKD + SOURCE="dummy.fs testcase.fs" PRECMD="\$FSI_PIPE --exec NormalizationFormC.fsx > oracle.cs && \$CSC_PIPE oracle.cs && oracle.exe>testcase.fs" # FormC + SOURCE="dummy.fs testcase.fs" PRECMD="\$FSI_PIPE --exec NormalizationFormD.fsx > oracle.cs && \$CSC_PIPE oracle.cs && oracle.exe>testcase.fs" # FormD diff --git a/tests/fsharpqa/Source/CompilerOptions/fsc/gccerrors/.gitignore b/tests/fsharpqa/Source/CompilerOptions/fsc/gccerrors/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..af1ac38976baf4699978a116e53a5f8810f86a78 --- /dev/null +++ b/tests/fsharpqa/Source/CompilerOptions/fsc/gccerrors/.gitignore @@ -0,0 +1,2 @@ +# generated as part of the test +gccerrors01.txt diff --git a/tests/fsharpqa/Source/CompilerOptions/fsc/help/.gitignore b/tests/fsharpqa/Source/CompilerOptions/fsc/help/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..5641b0f57a45149dcfb59f5625bb86a02dd2b28f --- /dev/null +++ b/tests/fsharpqa/Source/CompilerOptions/fsc/help/.gitignore @@ -0,0 +1,2 @@ +# generated as part of the test +help40.txt diff --git a/tests/fsharpqa/Source/CompilerOptions/fsc/nologo/.gitignore b/tests/fsharpqa/Source/CompilerOptions/fsc/nologo/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..b852d34929d69405c69f77e2fc5c7f6bec70d90e --- /dev/null +++ b/tests/fsharpqa/Source/CompilerOptions/fsc/nologo/.gitignore @@ -0,0 +1,3 @@ +# generated as part of the test +logo.txt +nologo.txt diff --git a/tests/fsharpqa/Source/CompilerOptions/fsi/exename/.gitignore b/tests/fsharpqa/Source/CompilerOptions/fsi/exename/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..5107f2d354bad9cd6aa501727e9e932dead574c3 --- /dev/null +++ b/tests/fsharpqa/Source/CompilerOptions/fsi/exename/.gitignore @@ -0,0 +1,2 @@ +# generated as part of the test +help.txt diff --git a/tests/fsharpqa/Source/CompilerOptions/fsi/help/.gitignore b/tests/fsharpqa/Source/CompilerOptions/fsi/help/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..5107f2d354bad9cd6aa501727e9e932dead574c3 --- /dev/null +++ b/tests/fsharpqa/Source/CompilerOptions/fsi/help/.gitignore @@ -0,0 +1,2 @@ +# generated as part of the test +help.txt diff --git a/tests/fsharpqa/Source/Conformance/LexicalAnalysis/IdentifiersAndKeywords/.gitignore b/tests/fsharpqa/Source/Conformance/LexicalAnalysis/IdentifiersAndKeywords/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..87df167d754effa92bb22b9d203b080a1b834d98 --- /dev/null +++ b/tests/fsharpqa/Source/Conformance/LexicalAnalysis/IdentifiersAndKeywords/.gitignore @@ -0,0 +1,2 @@ +# generated as part of the test +test.ok diff --git a/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/.gitignore b/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae2245951c1b2b0a50dd9c730742faaea08a0d51 --- /dev/null +++ b/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/.gitignore @@ -0,0 +1,2 @@ +# generated as part of the test +InternalAccessibility02.fsi diff --git a/tests/fsharpqa/Source/Conformance/StructFieldEqualityComparison/.gitignore b/tests/fsharpqa/Source/Conformance/StructFieldEqualityComparison/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..d11891080159659497c4ac13125cee1977bfb597 --- /dev/null +++ b/tests/fsharpqa/Source/Conformance/StructFieldEqualityComparison/.gitignore @@ -0,0 +1,2 @@ +# generated as part of the test +floatsanddoubles.exe.out diff --git a/tests/fsharpqa/Source/EntryPoint/.gitignore b/tests/fsharpqa/Source/EntryPoint/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..8f0ecc58b196a0a0b90300d77900515731576e94 --- /dev/null +++ b/tests/fsharpqa/Source/EntryPoint/.gitignore @@ -0,0 +1,2 @@ +# generated as part of the test +E_CompilingToAModule01.netmodule diff --git a/tests/fsharpqa/Source/ErrorMessages/ConfusingTypeName/env.lst b/tests/fsharpqa/Source/ErrorMessages/ConfusingTypeName/env.lst index a78d70a69ec4a2c071478ea636796497d714f027..8189ed0b1f847beb82e00613e1399f01381b4c61 100644 --- a/tests/fsharpqa/Source/ErrorMessages/ConfusingTypeName/env.lst +++ b/tests/fsharpqa/Source/ErrorMessages/ConfusingTypeName/env.lst @@ -1,3 +1,3 @@ # see compile.bat for clearer steps, aim is to get message highlighting fix for https://github.com/Microsoft/visualfsharp/issues/2561 - SOURCE="app.fs" SCFLAGS="-r:liba.dll -r:libb.dll -r:libc.dll -r:libd.dll" PRECMD="csc -t:library -out:liba.dll liba-and-b.cs && csc -t:library -out:libb.dll liba-and-b.cs && fsc --target:library -r:liba.dll --out:libc.dll libc.fs && fsc --target:library -r:libb.dll --out:libd.dll libd.fs" + SOURCE="app.fs" SCFLAGS="-r:liba.dll -r:libb.dll -r:libc.dll -r:libd.dll" PRECMD="\$CSC_PIPE -t:library -out:liba.dll liba-and-b.cs && \$CSC_PIPE -t:library -out:libb.dll liba-and-b.cs && fsc --target:library -r:liba.dll --out:libc.dll libc.fs && fsc --target:library -r:libb.dll --out:libd.dll libd.fs" \ No newline at end of file diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/.gitignore b/tests/fsharpqa/Source/InteractiveSession/Misc/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..f0a93261615afd5b8645baa622caeaaa1557bcbf --- /dev/null +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/.gitignore @@ -0,0 +1,4 @@ +# generated as part of the test +LoadOrderOfExecution3a.fs +LoadOrderOfExecution4.fs +ReferencesFullPath.fsx diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/GenericConstraintWoes/issue2411/env.lst b/tests/fsharpqa/Source/InteractiveSession/Misc/GenericConstraintWoes/issue2411/env.lst index 822c79ae7defd98b4967c556bfaa2d6163dedb7c..6ec14cc9a8fe7ac931ada97928a0963c282f0c5b 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/GenericConstraintWoes/issue2411/env.lst +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/GenericConstraintWoes/issue2411/env.lst @@ -1 +1 @@ - SOURCE=app.fsx COMPILE_ONLY=1 FSIMODE=EXEC SCFLAGS="--nologo" PRECMD="csc -t:library lib.cs" # mode exec: used to produce internal error \ No newline at end of file + SOURCE=app.fsx COMPILE_ONLY=1 FSIMODE=EXEC SCFLAGS="--nologo" PRECMD="\$CSC_PIPE -t:library lib.cs" # mode exec: used to produce internal error \ No newline at end of file diff --git a/tests/fsharpqa/Source/Stress/.gitignore b/tests/fsharpqa/Source/Stress/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..09214bda72c9d3eb9792154a984018445211480d --- /dev/null +++ b/tests/fsharpqa/Source/Stress/.gitignore @@ -0,0 +1,3 @@ +# generated as part of the test +2766.fs +SeqExprCapacity.fs diff --git a/tests/fsharpqa/Source/XmlDoc/.gitignore b/tests/fsharpqa/Source/XmlDoc/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..abfcd8dcc29b0e97f13d1c51a743464dab89609c --- /dev/null +++ b/tests/fsharpqa/Source/XmlDoc/.gitignore @@ -0,0 +1,2 @@ +# generated as part of the test +*.xml diff --git a/tests/fsharpqa/Source/run.pl b/tests/fsharpqa/Source/run.pl index e9363e6aea68879dcfce8d7cd7d3c58c0b5a0975..751bcdd89350fc498f0efc5c799f055f811c1794 100644 --- a/tests/fsharpqa/Source/run.pl +++ b/tests/fsharpqa/Source/run.pl @@ -159,13 +159,13 @@ if (exists($ENV{PRECMD})) { # SOURCE=foo.fs PRECMD="\$FSC_PIPE bar.fs" # and it will expanded into $FSC_PIPE before invoking it $_ = $ENV{PRECMD}; - s/^\$FSC_PIPE/$FSC_PIPE/; + s/\$FSC_PIPE/$FSC_PIPE/g; s/\$FSI_PIPE/$FSI_PIPE/g; - s/^\$FSI32_PIPE/$FSI32_PIPE/; - s/\$ISCFLAGS/$ISCFLAGS/; - s/^\$CSC_PIPE/$CSC_PIPE/; - s/^\$VBC_PIPE/$VBC_PIPE/; - RunExit(TEST_FAIL, "Fail to execute the PRECMD" . @CommandOutput . "\n") if RunCommand("PRECMD",$_ ,1); + s/\$FSI32_PIPE/$FSI32_PIPE/g; + s/\$ISCFLAGS/$ISCFLAGS/g; + s/\$CSC_PIPE/$CSC_PIPE/g; + s/\$VBC_PIPE/$VBC_PIPE/g; + RunExit(TEST_FAIL, "Fail to execute the PRECMD:\n" . join("\n", @CommandOutput) . "\n") if RunCommand("PRECMD",$_ ,1); } # Normal testing begins @@ -265,12 +265,13 @@ if($ENV{REDUCED_RUNTIME} ne "1"){ my $PEVERIFY = $ENV{PEVERIFY}; unless(defined($PEVERIFY)) { my $scriptPath = dirname(__FILE__); - $PEVERIFY = "$scriptPath\\..\\..\\..\\artifacts\\bin\\PEVerify\\Release\\net46\\PEVerify.exe"; - if (-e $PEVERIFY) { - $ENV{PEVERIFY} = $PEVERIFY; - } - else { - $ENV{PEVERIFY} = "$scriptPath\\..\\..\\..\\artifacts\\bin\\PEVerify\\Debug\\net46\\PEVerify.exe"; + my @configurations = ("Debug", "Release"); + foreach my $config (@configurations) { + $PEVERIFY = "$scriptPath\\..\\..\\..\\artifacts\\bin\\PEVerify\\$config\\net46\\PEVerify.exe"; + if (-e $PEVERIFY) { + $ENV{PEVERIFY} = $PEVERIFY; + last; + } } } @@ -468,9 +469,10 @@ sub RunCommand { open(COMMAND,"$cmd 2>&1 |") or RunExit(TEST_FAIL, "Command Process Couldn't Be Created: $! Returned $? \n"); @CommandOutput = ; close COMMAND; + my $result = $?; # close STDERR; open STDERR, ">&SAVEERR"; #resore stderr - print @CommandOutput if ($dumpOutput == 1); + print(join("\n", @CommandOutput)) if ($dumpOutput == 1); # Test for an assertion failure if (-e ASSERT_FILE) { @@ -482,7 +484,8 @@ sub RunCommand { close ASSERT; RunExit(TEST_FAIL, "Command Unexpectedly Failed with ASSERT \n"); } - return $?; + + return $result; } ############################################################# @@ -770,11 +773,11 @@ sub RunExit { # SOURCE=foo.fs POSTCMD="\$FSC_PIPE bar.fs" # and it will expanded into $FSC_PIPE before invoking it $_ = $ENV{POSTCMD}; - s/^\$FSC_PIPE/$FSC_PIPE/; - s/^\$FSI_PIPE/$FSI_PIPE/; - s/^\$FSI32_PIPE/$FSI32_PIPE/; - s/^\$CSC_PIPE/$CSC_PIPE/; - s/^\$VBC_PIPE/$VBC_PIPE/; + s/\$FSC_PIPE/$FSC_PIPE/g; + s/\$FSI_PIPE/$FSI_PIPE/g; + s/\$FSI32_PIPE/$FSI32_PIPE/g; + s/\$CSC_PIPE/$CSC_PIPE/g; + s/\$VBC_PIPE/$VBC_PIPE/g; if (RunCommand("POSTCMD",$_,1)){ $exitVal = TEST_FAIL; diff --git a/tests/fsharpqa/testenv/src/AssemblyVersionCheck/.gitignore b/tests/fsharpqa/testenv/src/AssemblyVersionCheck/.gitignore deleted file mode 100644 index c0e717b21def06f65df3b6d4267f75dce60f4921..0000000000000000000000000000000000000000 --- a/tests/fsharpqa/testenv/src/AssemblyVersionCheck/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# this file has to be dynamically written at build time -assemblies.fsx diff --git a/tests/fsharpqa/testenv/src/AssemblyVersionCheck/AssemblyVersionCheck.fsx b/tests/fsharpqa/testenv/src/AssemblyVersionCheck/AssemblyVersionCheck.fsx deleted file mode 100644 index 727916d498655fb3a55eec1f276b8bf644fb7724..0000000000000000000000000000000000000000 --- a/tests/fsharpqa/testenv/src/AssemblyVersionCheck/AssemblyVersionCheck.fsx +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. - -// this points to assemblies that were restored by packages.config in the root -#load "assemblies.fsx" - -open System -open System.Diagnostics -open System.IO -open System.Reflection -open System.Text.RegularExpressions -open Newtonsoft.Json.Linq - -module AssemblyVersionCheck = - - let private versionZero = Version(0, 0, 0, 0) - let private commitHashPattern = new Regex(@"Commit Hash: ()|([0-9a-fA-F]{40})", RegexOptions.Compiled) - - let verifyAssemblyVersions (signToolData:string) (binariesPath:string) = - let json = File.ReadAllText(signToolData) - let jobject = JObject.Parse(json) - - // could either contain things like 'net40\bin\FSharp.Core.dll' or patterns like 'net40\bin\*\FSharp.Core.resources.dll' - let assemblyPatterns = - (jobject.["sign"] :?> JArray) - |> Seq.map (fun a -> (a :?> JObject).["values"] :?> JArray) - |> Seq.map (fun a -> a :> seq) - |> Seq.collect (fun t -> t) - |> Seq.map (fun t -> t.ToString()) - |> Seq.filter (fun p -> p.EndsWith(".dll") || p.EndsWith(".exe")) // only check assemblies - - // map the assembly patterns to actual files on disk - let actualAssemblies = - assemblyPatterns - |> Seq.map (fun a -> - if not (a.Contains("*")) then - [a] // just a raw file name - else - let parts = a.Split([|'\\'|]) - let mutable candidatePaths = [binariesPath] - for p in parts do - match p with - | "*" -> - // expand all candidates into multiples - let expansions = - candidatePaths - |> List.filter Directory.Exists - |> List.map (Directory.EnumerateDirectories >> Seq.toList) - |> List.collect (fun x -> x) - candidatePaths <- expansions - | _ -> - // regular path part, just append it to all candidates - candidatePaths <- List.map (fun d -> Path.Combine(d, p)) candidatePaths - candidatePaths) - |> Seq.collect (fun a -> a) - |> Seq.map (fun a -> Path.Combine(binariesPath, a)) - |> Seq.filter (fun p -> File.Exists(p)) // not all test runs produce all files - |> Seq.toList - - // verify that all assemblies have a version number other than 0.0.0.0 - let failedVersionCheck = - actualAssemblies - |> List.filter (fun a -> - let assemblyVersion = AssemblyName.GetAssemblyName(a).Version - printfn "Checking version: %s (%A)" a assemblyVersion - assemblyVersion = versionZero) - if failedVersionCheck.Length > 0 then - printfn "The following assemblies had a version of %A" versionZero - printfn "%s\r\n" <| String.Join("\r\n", failedVersionCheck) - - // verify that all assemblies have a commit hash - let failedCommitHash = - actualAssemblies - |> List.filter (fun a -> - let fileProductVersion = FileVersionInfo.GetVersionInfo(a).ProductVersion - printfn "Checking commit hash: %s (%s)" a fileProductVersion - not <| commitHashPattern.IsMatch(fileProductVersion)) - if failedCommitHash.Length > 0 then - printfn "The following assemblies don't have a commit hash set" - printfn "%s\r\n" <| String.Join("\r\n", failedCommitHash) - - // return code is the number of failures - failedVersionCheck.Length + failedCommitHash.Length - -let main (argv:string array) = - if argv.Length <> 2 then - printfn "Usage: fsi.exe AssemblyVersionCheck.fsx -- SignToolData.json path/to/binaries" - 1 - else - AssemblyVersionCheck.verifyAssemblyVersions argv.[0] argv.[1] - -Environment.GetCommandLineArgs() -|> Seq.skipWhile ((<>) "--") -|> Seq.skip 1 -|> Array.ofSeq -|> main diff --git a/tests/fsharpqa/testenv/src/Directory.Build.props b/tests/fsharpqa/testenv/src/Directory.Build.props deleted file mode 100644 index bb8eac309b1ad0dfc3418caf301e1f06803c82ae..0000000000000000000000000000000000000000 --- a/tests/fsharpqa/testenv/src/Directory.Build.props +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/tests/fsharpqa/testenv/src/Directory.Build.targets b/tests/fsharpqa/testenv/src/Directory.Build.targets deleted file mode 100644 index ccd47cc0a9aa21567cd1adbf7d7054bf309679f1..0000000000000000000000000000000000000000 --- a/tests/fsharpqa/testenv/src/Directory.Build.targets +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/tests/projects/Sample_NETCoreSDK_FSharp_Library_netstandard2_0/Directory.Build.props b/tests/projects/Sample_NETCoreSDK_FSharp_Library_netstandard2_0/Directory.Build.props index bb8eac309b1ad0dfc3418caf301e1f06803c82ae..aa744e6acad9a3c459ab0e50f34a460981af410b 100644 --- a/tests/projects/Sample_NETCoreSDK_FSharp_Library_netstandard2_0/Directory.Build.props +++ b/tests/projects/Sample_NETCoreSDK_FSharp_Library_netstandard2_0/Directory.Build.props @@ -1,3 +1,4 @@ - + + diff --git a/tests/projects/Sample_NETCoreSDK_FSharp_Library_netstandard2_0/Directory.Build.targets b/tests/projects/Sample_NETCoreSDK_FSharp_Library_netstandard2_0/Directory.Build.targets index ccd47cc0a9aa21567cd1adbf7d7054bf309679f1..4d469fc9359deb6d5eeeab22fd79f92cf612b6de 100644 --- a/tests/projects/Sample_NETCoreSDK_FSharp_Library_netstandard2_0/Directory.Build.targets +++ b/tests/projects/Sample_NETCoreSDK_FSharp_Library_netstandard2_0/Directory.Build.targets @@ -1,3 +1,4 @@ - + + diff --git a/tests/service/data/Directory.Build.props b/tests/service/data/Directory.Build.props deleted file mode 100644 index bb8eac309b1ad0dfc3418caf301e1f06803c82ae..0000000000000000000000000000000000000000 --- a/tests/service/data/Directory.Build.props +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/tests/service/data/Directory.Build.targets b/tests/service/data/Directory.Build.targets deleted file mode 100644 index ccd47cc0a9aa21567cd1adbf7d7054bf309679f1..0000000000000000000000000000000000000000 --- a/tests/service/data/Directory.Build.targets +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/verify-translations.cmd b/verify-translations.cmd deleted file mode 100644 index 2580890c6fbe7392e3a0865ad6a9379ac16ffa35..0000000000000000000000000000000000000000 --- a/verify-translations.cmd +++ /dev/null @@ -1,3 +0,0 @@ -@echo off - -%~dp0artifacts\bin\fsi\Release\net46\fsi.exe %~dp0src\scripts\VerifyAllTranslations.fsx -- %~dp0 diff --git a/vsintegration/Directory.Build.props b/vsintegration/Directory.Build.props index 5a7b0782ce169a1e6a9fff5ca0a5d453df71e4c2..45173358d8948d600653e237916494c23ef3f8f5 100644 --- a/vsintegration/Directory.Build.props +++ b/vsintegration/Directory.Build.props @@ -1,11 +1,11 @@ - - net46 v4.6 true + + diff --git a/vsintegration/Directory.Build.targets b/vsintegration/Directory.Build.targets index 0a555189d7e5b6ab1291b799a8b010ddacf3c1f4..af547ce3c0cfaa4bfa3eae06b1fc426f22e29775 100644 --- a/vsintegration/Directory.Build.targets +++ b/vsintegration/Directory.Build.targets @@ -1,19 +1,11 @@ - + true - $(NuGetPackageRoot)Microsoft.VSSDK.BuildTools\$(MicrosoftVSSDKBuildToolsPackageVersion) - - - - - - - diff --git a/vsintegration/DisableVsixManifestTargets.targets b/vsintegration/DisableVsixManifestTargets.targets deleted file mode 100644 index 86c5ada70cb4826a600d4a9af2398d4ef30146c8..0000000000000000000000000000000000000000 --- a/vsintegration/DisableVsixManifestTargets.targets +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/vsintegration/ItemTemplates/AppConfig/AppConfig.csproj b/vsintegration/ItemTemplates/AppConfig/AppConfig.csproj index 48500b15a86e7a813bcbca16b3ea99ca538b625f..4fd83ab1811fe1061cb8a5840619b21194432279 100644 --- a/vsintegration/ItemTemplates/AppConfig/AppConfig.csproj +++ b/vsintegration/ItemTemplates/AppConfig/AppConfig.csproj @@ -2,10 +2,6 @@ - - AppConfig - - diff --git a/vsintegration/ItemTemplates/AppConfig/source.extension.vsixmanifest b/vsintegration/ItemTemplates/AppConfig/source.extension.vsixmanifest new file mode 100644 index 0000000000000000000000000000000000000000..05eedbb1f39733479c55a221a6718936834f09c2 --- /dev/null +++ b/vsintegration/ItemTemplates/AppConfig/source.extension.vsixmanifest @@ -0,0 +1,25 @@ + + + + + F# .NETCore Project Templates + F# project templates for .NETCore. + + + + + + + + + + + + + + + + + + + diff --git a/vsintegration/ItemTemplates/CodeFile/CodeFile.csproj b/vsintegration/ItemTemplates/CodeFile/CodeFile.csproj index cf6a5e3e4f6784568f251056940da2b96b6e08b7..85c251a657137a1f9f247b412915ee7e215f2857 100644 --- a/vsintegration/ItemTemplates/CodeFile/CodeFile.csproj +++ b/vsintegration/ItemTemplates/CodeFile/CodeFile.csproj @@ -2,10 +2,6 @@ - - CodeFile - - diff --git a/vsintegration/ItemTemplates/CodeFile/source.extension.vsixmanifest b/vsintegration/ItemTemplates/CodeFile/source.extension.vsixmanifest new file mode 100644 index 0000000000000000000000000000000000000000..77860d0c1cec8834dc739d7efbe32faaa8cc3f19 --- /dev/null +++ b/vsintegration/ItemTemplates/CodeFile/source.extension.vsixmanifest @@ -0,0 +1,25 @@ + + + + + F# .NETCore Project Templates + F# project templates for .NETCore. + + + + + + + + + + + + + + + + + + + diff --git a/vsintegration/ItemTemplates/ResourceFile/ResourceFile.csproj b/vsintegration/ItemTemplates/ResourceFile/ResourceFile.csproj index 17760a303bf7bc58844856621058c81afc054b70..e3b839ca84e5106b74d7de7ee57aa65b5a5c41f4 100644 --- a/vsintegration/ItemTemplates/ResourceFile/ResourceFile.csproj +++ b/vsintegration/ItemTemplates/ResourceFile/ResourceFile.csproj @@ -2,10 +2,6 @@ - - ResourceFile - - diff --git a/vsintegration/ItemTemplates/ResourceFile/source.extension.vsixmanifest b/vsintegration/ItemTemplates/ResourceFile/source.extension.vsixmanifest new file mode 100644 index 0000000000000000000000000000000000000000..080d4b6e73a1fa5d193859bcc7892eab34ec6fad --- /dev/null +++ b/vsintegration/ItemTemplates/ResourceFile/source.extension.vsixmanifest @@ -0,0 +1,25 @@ + + + + + F# .NETCore Project Templates + F# project templates for .NETCore. + + + + + + + + + + + + + + + + + + + diff --git a/vsintegration/ItemTemplates/ScriptFile/ScriptFile.csproj b/vsintegration/ItemTemplates/ScriptFile/ScriptFile.csproj index d8affe836051dfa829e3a6c81b3104126d11f25c..2ebcd32a52aa4675eb797a0218f22a3d2852e740 100644 --- a/vsintegration/ItemTemplates/ScriptFile/ScriptFile.csproj +++ b/vsintegration/ItemTemplates/ScriptFile/ScriptFile.csproj @@ -2,10 +2,6 @@ - - ScriptFile - - diff --git a/vsintegration/ItemTemplates/ScriptFile/source.extension.vsixmanifest b/vsintegration/ItemTemplates/ScriptFile/source.extension.vsixmanifest new file mode 100644 index 0000000000000000000000000000000000000000..926e18fb0412e94b003848fda47028e9e8da6218 --- /dev/null +++ b/vsintegration/ItemTemplates/ScriptFile/source.extension.vsixmanifest @@ -0,0 +1,25 @@ + + + + + F# .NETCore Project Templates + F# project templates for .NETCore. + + + + + + + + + + + + + + + + + + + diff --git a/vsintegration/ItemTemplates/SignatureFile/SignatureFile.csproj b/vsintegration/ItemTemplates/SignatureFile/SignatureFile.csproj index 89a34c354b79df71675fe8d22843815c1991df29..8afaaa6536bd7c7717687e0b10a2e2b9b4b0b62c 100644 --- a/vsintegration/ItemTemplates/SignatureFile/SignatureFile.csproj +++ b/vsintegration/ItemTemplates/SignatureFile/SignatureFile.csproj @@ -2,10 +2,6 @@ - - SignatureFile - - diff --git a/vsintegration/ItemTemplates/SignatureFile/source.extension.vsixmanifest b/vsintegration/ItemTemplates/SignatureFile/source.extension.vsixmanifest new file mode 100644 index 0000000000000000000000000000000000000000..f58462b5bfecc6a0592e46e369ae97327a3eb669 --- /dev/null +++ b/vsintegration/ItemTemplates/SignatureFile/source.extension.vsixmanifest @@ -0,0 +1,25 @@ + + + + + F# .NETCore Project Templates + F# project templates for .NETCore. + + + + + + + + + + + + + + + + + + + diff --git a/vsintegration/ItemTemplates/TextFile/TextFile.csproj b/vsintegration/ItemTemplates/TextFile/TextFile.csproj index 880085abaaac890168fbdc944c27a80ad3755584..0d4fe964bb4f9608bfbe1f3693ca41f60869dd85 100644 --- a/vsintegration/ItemTemplates/TextFile/TextFile.csproj +++ b/vsintegration/ItemTemplates/TextFile/TextFile.csproj @@ -2,10 +2,6 @@ - - TextFile - - diff --git a/vsintegration/ItemTemplates/TextFile/source.extension.vsixmanifest b/vsintegration/ItemTemplates/TextFile/source.extension.vsixmanifest new file mode 100644 index 0000000000000000000000000000000000000000..c27fecaff60b26b29eb68bd36a0496c4bed53583 --- /dev/null +++ b/vsintegration/ItemTemplates/TextFile/source.extension.vsixmanifest @@ -0,0 +1,25 @@ + + + + + F# .NETCore Project Templates + F# project templates for .NETCore. + + + + + + + + + + + + + + + + + + + diff --git a/vsintegration/ItemTemplates/XMLFile/XMLFile.csproj b/vsintegration/ItemTemplates/XMLFile/XMLFile.csproj index bef2612dc20386156c51f09a5210b08fd18fb9ea..2c345a1dfaef861e04d4d5527c2c5d394edab605 100644 --- a/vsintegration/ItemTemplates/XMLFile/XMLFile.csproj +++ b/vsintegration/ItemTemplates/XMLFile/XMLFile.csproj @@ -2,10 +2,6 @@ - - XMLFile - - diff --git a/vsintegration/ItemTemplates/XMLFile/source.extension.vsixmanifest b/vsintegration/ItemTemplates/XMLFile/source.extension.vsixmanifest new file mode 100644 index 0000000000000000000000000000000000000000..405769509e53e19fef6bfeab60d1af82b928d6da --- /dev/null +++ b/vsintegration/ItemTemplates/XMLFile/source.extension.vsixmanifest @@ -0,0 +1,25 @@ + + + + + F# .NETCore Project Templates + F# project templates for .NETCore. + + + + + + + + + + + + + + + + + + + diff --git a/vsintegration/ProjectTemplates/ConsoleProject/source.extension.vsixmanifest b/vsintegration/ProjectTemplates/ConsoleProject/source.extension.vsixmanifest new file mode 100644 index 0000000000000000000000000000000000000000..5f28d2c06edd356faeaf7b9663d9562b54fe66d8 --- /dev/null +++ b/vsintegration/ProjectTemplates/ConsoleProject/source.extension.vsixmanifest @@ -0,0 +1,24 @@ + + + + + F# .NETCore Project Templates + F# project templates for .NETCore. + + + + + + + + + + + + + + + + + + diff --git a/vsintegration/ProjectTemplates/Directory.Build.props b/vsintegration/ProjectTemplates/Directory.Build.props index a67b0e382ed408517bac2895c62fed5c264fbe83..49fb4e2d1fcba5e9501298fc8d5f9e0a8f39c731 100644 --- a/vsintegration/ProjectTemplates/Directory.Build.props +++ b/vsintegration/ProjectTemplates/Directory.Build.props @@ -2,6 +2,7 @@ ProjectTemplates + Microsoft.FSharp diff --git a/vsintegration/ProjectTemplates/LibraryProject/source.extension.vsixmanifest b/vsintegration/ProjectTemplates/LibraryProject/source.extension.vsixmanifest new file mode 100644 index 0000000000000000000000000000000000000000..f5157eaa6b0fbad950c42107a1bf23aef5076e12 --- /dev/null +++ b/vsintegration/ProjectTemplates/LibraryProject/source.extension.vsixmanifest @@ -0,0 +1,25 @@ + + + + + F# .NETCore Project Templates + F# project templates for .NETCore. + + + + + + + + + + + + + + + + + + + diff --git a/vsintegration/ProjectTemplates/TutorialProject/source.extension.vsixmanifest b/vsintegration/ProjectTemplates/TutorialProject/source.extension.vsixmanifest new file mode 100644 index 0000000000000000000000000000000000000000..39bac985bc178582b5edcc78c53582eec938ae99 --- /dev/null +++ b/vsintegration/ProjectTemplates/TutorialProject/source.extension.vsixmanifest @@ -0,0 +1,25 @@ + + + + + F# .NETCore Project Templates + F# project templates for .NETCore. + + + + + + + + + + + + + + + + + + + diff --git a/vsintegration/Templates.Directory.Build.props b/vsintegration/Templates.Directory.Build.props index c6a5cea2009558059cc7f3a6a9e973f4085800e7..df7e87a2cdd302524c4be5ec0ef0b7c65f0661fe 100644 --- a/vsintegration/Templates.Directory.Build.props +++ b/vsintegration/Templates.Directory.Build.props @@ -6,18 +6,24 @@ + + + false + true + true + false + false + false + false net46 v4.6 - true true - false - false + false false false - false false false false diff --git a/vsintegration/Vsix/Directory.Build.props b/vsintegration/Vsix/Directory.Build.props index 2a730726842b902f09bcf1369454e760345e0039..e2386bf5eff3b9b1b775597c9a4f806fbd314cf4 100644 --- a/vsintegration/Vsix/Directory.Build.props +++ b/vsintegration/Vsix/Directory.Build.props @@ -3,20 +3,13 @@ + Microsoft.FSharp RoslynDev - false - true $(VSRootSuffix) true publish\ true Disk - false - Foreground - 7 - Days - true - false true false false @@ -31,7 +24,6 @@ CommonExtensions None true - true diff --git a/vsintegration/Vsix/Directory.Build.targets b/vsintegration/Vsix/Directory.Build.targets deleted file mode 100644 index 677cf0afc9d96cb0cf4e2b1fbb4f779ec0d51e64..0000000000000000000000000000000000000000 --- a/vsintegration/Vsix/Directory.Build.targets +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - $(ArtifactsDir)\VSSetup\$(Configuration) - $(ArtifactsDir)\VSSetup.obj\$(Configuration)\Microsoft.FSharp\ - - - - - False - Microsoft .NET Framework 4.6 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - false - - - - diff --git a/vsintegration/Vsix/VisualFSharpFull/Source.extension.vsixmanifest b/vsintegration/Vsix/VisualFSharpFull/Source.extension.vsixmanifest index 264367550872969f871399ceae77c401cad3cbea..4d0683266757a335069e06e4e5da7703bf5f2092 100644 --- a/vsintegration/Vsix/VisualFSharpFull/Source.extension.vsixmanifest +++ b/vsintegration/Vsix/VisualFSharpFull/Source.extension.vsixmanifest @@ -2,7 +2,7 @@ - + Visual F# Tools Deploy Visual F# Tools Binaries to Visual Studio Microsoft.FSharp.VSIX.Full.Core diff --git a/vsintegration/Vsix/VisualFSharpFull/VisualFSharpFull.csproj b/vsintegration/Vsix/VisualFSharpFull/VisualFSharpFull.csproj index 95a623bfa12e1ab2a300c741e658cbedbc9163aa..90baf6d789c08453091c8565c064e9b47811f1eb 100644 --- a/vsintegration/Vsix/VisualFSharpFull/VisualFSharpFull.csproj +++ b/vsintegration/Vsix/VisualFSharpFull/VisualFSharpFull.csproj @@ -6,6 +6,7 @@ Library Microsoft\FSharp netcoreapp1.0 + true @@ -66,7 +67,7 @@ {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3} FSharp.Compiler.Private - BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3b + BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bSatelliteDllsProjectOutputGroup%3b DebugSymbolsProjectOutputGroup%3b true All @@ -77,7 +78,7 @@ {DED3BBD7-53F4-428A-8C9F-27968E768605} FSharp.Core - BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3b + BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bSatelliteDllsProjectOutputGroup%3b DebugSymbolsProjectOutputGroup%3b true All @@ -85,9 +86,9 @@ True TargetFramework=net45 - + {8B3E283D-B5FE-4055-9D80-7E3A32F3967B} - FsiAnyCPU + FsiAnyCpu BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3b DebugSymbolsProjectOutputGroup%3b true @@ -124,7 +125,7 @@ {65e0e82a-eace-4787-8994-888674c2fe87} FSharp.Editor - BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bPkgDefProjectOutputGroup%3b + BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bPkgDefProjectOutputGroup%3bSatelliteDllsProjectOutputGroup%3b DebugSymbolsProjectOutputGroup%3b true All @@ -134,14 +135,14 @@ {c4586a06-1402-48bc-8e35-a1b8642f895b} FSharp.UIResources - BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3b + BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bSatelliteDllsProjectOutputGroup%3b DebugSymbolsProjectOutputGroup%3b True {1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF} FSharp.LanguageService.Base - BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bPkgDefProjectOutputGroup%3b + BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bPkgDefProjectOutputGroup%3bSatelliteDllsProjectOutputGroup%3b DebugSymbolsProjectOutputGroup%3b true All @@ -151,7 +152,7 @@ {EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F} FSharp.LanguageService - BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bPkgDefProjectOutputGroup%3b + BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bPkgDefProjectOutputGroup%3bSatelliteDllsProjectOutputGroup%3b DebugSymbolsProjectOutputGroup%3b true All @@ -161,7 +162,7 @@ {B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7} ProjectSystem.Base - BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bPkgDefProjectOutputGroup%3b + BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bPkgDefProjectOutputGroup%3bSatelliteDllsProjectOutputGroup%3b DebugSymbolsProjectOutputGroup%3b true All @@ -171,7 +172,7 @@ {6196B0F8-CAEA-4CF1-AF82-1B520F77FE44} ProjectSystem - BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bPkgDefProjectOutputGroup%3b + BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bPkgDefProjectOutputGroup%3bSatelliteDllsProjectOutputGroup%3b DebugSymbolsProjectOutputGroup%3b true All @@ -181,7 +182,7 @@ {FCFB214C-462E-42B3-91CA-FC557EFEE74F} FSharp.PropertiesPages - BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bPkgDefProjectOutputGroup%3b + BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bPkgDefProjectOutputGroup%3bSatelliteDllsProjectOutputGroup%3b DebugSymbolsProjectOutputGroup%3b true All @@ -191,7 +192,7 @@ {991DCF75-C2EB-42B6-9A0D-AA1D2409D519} FSharp.VS.FSI - BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bPkgDefProjectOutputGroup%3b + BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bPkgDefProjectOutputGroup%3bSatelliteDllsProjectOutputGroup%3b DebugSymbolsProjectOutputGroup%3b true All diff --git a/vsintegration/Vsix/VisualFSharpTemplates/Source.extension.vsixmanifest b/vsintegration/Vsix/VisualFSharpTemplates/Source.extension.vsixmanifest index 3d17751f813a6b744cba1ddacb802a4e2f303809..628e678cdcddf514e94f57c5840f8f784a718b1d 100644 --- a/vsintegration/Vsix/VisualFSharpTemplates/Source.extension.vsixmanifest +++ b/vsintegration/Vsix/VisualFSharpTemplates/Source.extension.vsixmanifest @@ -3,7 +3,7 @@ - + Visual F# Templates Deploy Visual F# Tools Desktop Project Templates to Visual Studio Microsoft.FSharp.VSIX.Templates diff --git a/vsintegration/Vsix/VisualFSharpTemplates/VisualFSharpTemplates.csproj b/vsintegration/Vsix/VisualFSharpTemplates/VisualFSharpTemplates.csproj index fefaecb661499c28bda7d3774ae1824950694cd2..36034d0509a18eb225425b784e948d4a609fe6bf 100644 --- a/vsintegration/Vsix/VisualFSharpTemplates/VisualFSharpTemplates.csproj +++ b/vsintegration/Vsix/VisualFSharpTemplates/VisualFSharpTemplates.csproj @@ -3,17 +3,13 @@ - VisualFSharpTemplate Library Microsoft\FSharpTemplates + net46 + true - - PreserveNewest - packages\FSharp.Core.$(FSCorePackageVersion).nupkg - true - PreserveNewest packages\System.ValueTuple.4.4.0.nupkg @@ -24,6 +20,14 @@ + + + packages + PackOutputGroup%3b + false + + + {604f0daa-2d33-48dd-b162-edf0b672803d} diff --git a/vsintegration/fsharp-vsintegration-item-templates-build.proj b/vsintegration/fsharp-vsintegration-item-templates-build.proj deleted file mode 100644 index 0a1fd670f914287b06a29740b1a8ee0a54f9ee26..0000000000000000000000000000000000000000 --- a/vsintegration/fsharp-vsintegration-item-templates-build.proj +++ /dev/null @@ -1,23 +0,0 @@ - - - - net40 - - - - - - - - - - - - - - - - - - - diff --git a/vsintegration/fsharp-vsintegration-project-templates-build.proj b/vsintegration/fsharp-vsintegration-project-templates-build.proj deleted file mode 100644 index da89b3a5d2345bc97550b945ec54e70d9ce62c75..0000000000000000000000000000000000000000 --- a/vsintegration/fsharp-vsintegration-project-templates-build.proj +++ /dev/null @@ -1,20 +0,0 @@ - - - - net40 - - - - - - - - - - - - - - - - diff --git a/vsintegration/fsharp-vsintegration-src-build.proj b/vsintegration/fsharp-vsintegration-src-build.proj deleted file mode 100644 index 93a8fbfd27375ee9070598b46a0a48d680c8e2c1..0000000000000000000000000000000000000000 --- a/vsintegration/fsharp-vsintegration-src-build.proj +++ /dev/null @@ -1,26 +0,0 @@ - - - - - net40 - - - - - - - - - - - - - - - - - - - - - diff --git a/vsintegration/fsharp-vsintegration-unittests-build.proj b/vsintegration/fsharp-vsintegration-unittests-build.proj deleted file mode 100644 index 489e91ad2e99a33c8205fc436df1c244136b1b64..0000000000000000000000000000000000000000 --- a/vsintegration/fsharp-vsintegration-unittests-build.proj +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vsintegration/fsharp-vsintegration-vsix-build.proj b/vsintegration/fsharp-vsintegration-vsix-build.proj deleted file mode 100644 index c208129ec4448268cb5a6b12c0ee849108fe21a7..0000000000000000000000000000000000000000 --- a/vsintegration/fsharp-vsintegration-vsix-build.proj +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/vsintegration/src/Directory.Build.props b/vsintegration/src/Directory.Build.props index 1ad6fb80ecd87e79e8a08e06922dda7642c47866..df989b6c15c2947eb21b9528bf7d457adadcfd62 100644 --- a/vsintegration/src/Directory.Build.props +++ b/vsintegration/src/Directory.Build.props @@ -4,6 +4,8 @@ false + false + true diff --git a/vsintegration/src/FSharp.Editor/Completion/SignatureHelp.fs b/vsintegration/src/FSharp.Editor/Completion/SignatureHelp.fs index 8dd6b4c5a0214f9db779032bf330975b6b5d0041..6ffc30c88cca72173f6c937979defc295d8b1d09 100644 --- a/vsintegration/src/FSharp.Editor/Completion/SignatureHelp.fs +++ b/vsintegration/src/FSharp.Editor/Completion/SignatureHelp.fs @@ -168,7 +168,7 @@ type internal FSharpSignatureHelpProvider XmlDocumentation.BuildMethodParamText(documentationBuilder, RoslynHelpers.CollectTaggedText doc, method.XmlDoc, p.ParameterName) let parts = List() renderL (taggedTextListR (RoslynHelpers.CollectTaggedText parts)) p.StructuredDisplay |> ignore - yield (p.ParameterName, p.IsOptional, doc, parts) + yield (p.ParameterName, p.IsOptional, p.CanonicalTypeTextForSorting, doc, parts) |] let prefixParts = @@ -210,7 +210,7 @@ type internal FSharpSignatureHelpProvider results |> Array.map (fun (hasParamArrayArg, doc, prefixParts, separatorParts, suffixParts, parameters, descriptionParts) -> let parameters = parameters - |> Array.map (fun (paramName, isOptional, paramDoc, displayParts) -> + |> Array.map (fun (paramName, isOptional, _typeText, paramDoc, displayParts) -> SignatureHelpParameter(paramName,isOptional,documentationFactory=(fun _ -> paramDoc :> seq<_>),displayParts=displayParts)) SignatureHelpItem(isVariadic=hasParamArrayArg, documentationFactory=(fun _ -> doc :> seq<_>),prefixParts=prefixParts,separatorParts=separatorParts,suffixParts=suffixParts,parameters=parameters,descriptionParts=descriptionParts)) diff --git a/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj b/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj index 98d8e28f771948d1f1974173ccd89a3ea91d21fa..6a95fa56b625bf3a5b063690d3a29ba1d759ef75 100644 --- a/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj +++ b/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj @@ -4,8 +4,6 @@ Library - true - false $(NoWarn);75 true true @@ -13,6 +11,7 @@ $(OtherFlags) --warnon:1182 --subsystemversion:6.00 true false + true @@ -155,7 +154,6 @@ - diff --git a/vsintegration/src/FSharp.Editor/QuickInfo/QuickInfoProvider.fs b/vsintegration/src/FSharp.Editor/QuickInfo/QuickInfoProvider.fs index 5712af54fb8673568ac47a076b0ac80cdd544fdc..9f8bf73fddbd45bdfae81901ec7add224d7b9571 100644 --- a/vsintegration/src/FSharp.Editor/QuickInfo/QuickInfoProvider.fs +++ b/vsintegration/src/FSharp.Editor/QuickInfo/QuickInfoProvider.fs @@ -23,13 +23,13 @@ open FSharp.Compiler open Internal.Utilities.StructuredFormat -type private QuickInfo = +type internal QuickInfo = { StructuredText: FSharpStructuredToolTipText Span: TextSpan Symbol: FSharpSymbol SymbolKind: LexerSymbolKind } -module private FSharpQuickInfo = +module internal FSharpQuickInfo = let userOpName = "QuickInfo" @@ -166,6 +166,12 @@ type internal FSharpAsyncQuickInfoSource textBuffer:ITextBuffer ) = + static let joinWithLineBreaks segments = + let lineBreak = TaggedTextOps.Literals.lineBreak + match segments |> List.filter (Seq.isEmpty >> not) with + | [] -> Seq.empty + | xs -> xs |> List.reduce (fun acc elem -> seq { yield! acc; yield lineBreak; yield! elem }) + // test helper static member ProvideQuickInfo(checker:FSharpChecker, documentId:DocumentId, sourceText:SourceText, filePath:string, position:int, parsingOptions:FSharpParsingOptions, options:FSharpProjectOptions, textVersionHash:int, languageServicePerformanceOptions: LanguageServicePerformanceOptions) = asyncMaybe { @@ -181,9 +187,18 @@ type internal FSharpAsyncQuickInfoSource | _ -> let! symbolUse = checkFileResults.GetSymbolUseAtLocation (textLineNumber, symbol.Ident.idRange.EndColumn, textLine.ToString(), symbol.FullIsland, userOpName=FSharpQuickInfo.userOpName) let! symbolSpan = RoslynHelpers.TryFSharpRangeToTextSpan (sourceText, symbol.Range) - return res, symbolSpan, symbolUse.Symbol, symbol.Kind + return { StructuredText = res + Span = symbolSpan + Symbol = symbolUse.Symbol + SymbolKind = symbol.Kind } } + static member BuildSingleQuickInfoItem (documentationBuilder:IDocumentationBuilder) (quickInfo:QuickInfo) = + let mainDescription, documentation, typeParameterMap, usage, exceptions = ResizeArray(), ResizeArray(), ResizeArray(), ResizeArray(), ResizeArray() + XmlDocumentation.BuildDataTipText(documentationBuilder, mainDescription.Add, documentation.Add, typeParameterMap.Add, usage.Add, exceptions.Add, quickInfo.StructuredText) + let docs = joinWithLineBreaks [documentation; typeParameterMap; usage; exceptions] + (mainDescription, docs) + interface IAsyncQuickInfoSource with override __.Dispose() = () // no cleanup necessary @@ -201,21 +216,14 @@ type internal FSharpAsyncQuickInfoSource let! symbolUse, sigQuickInfo, targetQuickInfo = FSharpQuickInfo.getQuickInfo(checkerProvider.Checker, projectInfoManager, document, triggerPoint.Position, cancellationToken) let getTrackingSpan (span:TextSpan) = textBuffer.CurrentSnapshot.CreateTrackingSpan(span.Start, span.Length, SpanTrackingMode.EdgeInclusive) - let lineBreak = TaggedTextOps.Literals.lineBreak - let joinWithLineBreaks segments = - match segments |> List.filter (Seq.isEmpty >> not) with - | [] -> Seq.empty - | xs -> xs |> List.reduce (fun acc elem -> seq { yield! acc; yield lineBreak; yield! elem }) match sigQuickInfo, targetQuickInfo with | None, None -> return null | Some quickInfo, None | None, Some quickInfo-> - let mainDescription, documentation, typeParameterMap, usage, exceptions = ResizeArray(), ResizeArray(), ResizeArray(), ResizeArray(), ResizeArray() - XmlDocumentation.BuildDataTipText(documentationBuilder, mainDescription.Add, documentation.Add, typeParameterMap.Add, usage.Add, exceptions.Add, quickInfo.StructuredText) + let mainDescription, docs = FSharpAsyncQuickInfoSource.BuildSingleQuickInfoItem documentationBuilder quickInfo let imageId = Tokenizer.GetImageIdForSymbol(quickInfo.Symbol, quickInfo.SymbolKind) let navigation = QuickInfoNavigation(statusBar, checkerProvider.Checker, projectInfoManager, document, symbolUse.RangeAlternate) - let docs = joinWithLineBreaks [documentation; typeParameterMap; usage; exceptions] let content = QuickInfoViewProvider.provideContent(imageId, mainDescription, docs, navigation) let span = getTrackingSpan quickInfo.Span return QuickInfoItem(span, content) diff --git a/vsintegration/src/FSharp.LanguageService.Base/DocumentTask.cs b/vsintegration/src/FSharp.LanguageService.Base/DocumentTask.cs index d6664bb6a5f81ed4d0416ee58e03c597c9e449c8..58855165b7cfb4bce9e9cb5b2dba816ef28b5c3f 100644 --- a/vsintegration/src/FSharp.LanguageService.Base/DocumentTask.cs +++ b/vsintegration/src/FSharp.LanguageService.Base/DocumentTask.cs @@ -89,7 +89,9 @@ internal static class UIThread { #if DEBUG StackTrace stackTrace = new StackTrace(true); #endif - ctxt.Post(delegate(object ignore) +#pragma warning disable VSTHRD001 // Avoid legacy thread switching APIs + ctxt.Post(delegate(object ignore) +#pragma warning restore VSTHRD001 // Avoid legacy thread switching APIs { UIThread.MustBeCalledFromUIThread(); ourUIQueue.Enqueue(action); @@ -142,8 +144,10 @@ public static void RunSync(Action a) Exception exn = null; Debug.Assert(ctxt != null, "The SynchronizationContext must be captured before calling this method"); // Send on UI thread will execute immediately. +#pragma warning disable VSTHRD001 // Avoid legacy thread switching APIs ctxt.Send(ignore => - { +#pragma warning restore VSTHRD001 // Avoid legacy thread switching APIs + { try { UIThread.MustBeCalledFromUIThread(); @@ -167,28 +171,7 @@ public static void RunSync(Action a) /// Local JoinableTaskContext /// ensuring non-reentrancy. /// - private static JoinableTaskContext jtc = null; - private static JoinableTaskFactory JTF - { - get - { - if (jtc == null) - { - JoinableTaskContext j = null; - if (VsTaskLibraryHelper.ServiceInstance == null) - { - j = new JoinableTaskContext(); - } - else - { - j = ThreadHelper.JoinableTaskContext; - } - Interlocked.CompareExchange(ref jtc, j, null); - } - - return jtc.Factory; - } - } + private static JoinableTaskFactory JTF => ThreadHelper.JoinableTaskContext.Factory; /// /// Performs a callback on the UI thread and blocks until it is done, using the VS mechanism for diff --git a/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj b/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj index ce5cfed08aad89537129e64b83c626d9b3a20829..336ba963f5acacaf042df71b50441205d50401be 100644 --- a/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj +++ b/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj @@ -4,9 +4,8 @@ Library - true - false $(NoWarn);1570;1574;1587;1591;3001,3002,3003 + $(NoWarn);VSTHRD010 true true false diff --git a/vsintegration/src/FSharp.LanguageService.Base/GlobalSuppressions.cs b/vsintegration/src/FSharp.LanguageService.Base/GlobalSuppressions.cs new file mode 100644 index 0000000000000000000000000000000000000000..cf5e76c97c53e15038146c87aee4fc83697e75c7 --- /dev/null +++ b/vsintegration/src/FSharp.LanguageService.Base/GlobalSuppressions.cs @@ -0,0 +1,7 @@ + +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Reliability", "VSSDK006:Check services exist")] diff --git a/vsintegration/src/FSharp.LanguageService.Base/Source.cs b/vsintegration/src/FSharp.LanguageService.Base/Source.cs index 0d23026239283689a8ed2d63974d245f6dfaded2..f46dc2f7eab64f5d80faa46cf55459b8ba8f5705 100644 --- a/vsintegration/src/FSharp.LanguageService.Base/Source.cs +++ b/vsintegration/src/FSharp.LanguageService.Base/Source.cs @@ -2141,7 +2141,9 @@ public int GetBestMatch(string textSoFar, int length, out int index, out uint fl #endif if (textSoFar != this.filterText) { +#pragma warning disable VSTHRD001 // Avoid legacy thread switching APIs System.Threading.SynchronizationContext.Current.Post((object state) => +#pragma warning restore VSTHRD001 // Avoid legacy thread switching APIs { this.filterText = textSoFar; if (this.textView != null) diff --git a/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj b/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj index ccd97fff422c68e39040a6529bb07fd93009cb4e..29eee6ad1915ad93ca5b3e80c0630cebea1a1bca 100644 --- a/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj +++ b/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj @@ -5,8 +5,6 @@ net46 Library - true - false $(NoWarn);75 true true @@ -71,6 +69,8 @@ + + @@ -79,6 +79,7 @@ + diff --git a/vsintegration/src/FSharp.PatternMatcher/FSharp.PatternMatcher.csproj b/vsintegration/src/FSharp.PatternMatcher/FSharp.PatternMatcher.csproj index 0ae980c70495bf064aea64ba28a293d8fe2279df..5005944c7fab5dd2196973a730a72b92dd24609b 100644 --- a/vsintegration/src/FSharp.PatternMatcher/FSharp.PatternMatcher.csproj +++ b/vsintegration/src/FSharp.PatternMatcher/FSharp.PatternMatcher.csproj @@ -5,6 +5,7 @@ Library true + false diff --git a/vsintegration/src/FSharp.ProjectSystem.Base/Project/FileNode.cs b/vsintegration/src/FSharp.ProjectSystem.Base/Project/FileNode.cs index 97f9616ee88b2c0961948391d16472b3c385e6a9..ae4e1084d87797f337246ee930650a0e24f1a63f 100644 --- a/vsintegration/src/FSharp.ProjectSystem.Base/Project/FileNode.cs +++ b/vsintegration/src/FSharp.ProjectSystem.Base/Project/FileNode.cs @@ -348,7 +348,9 @@ private static bool PromptYesNoWithYesSelected(string message, string title, OLE { Guid emptyGuid = Guid.Empty; int result = 0; +#pragma warning disable VSTHRD001 // Avoid legacy thread switching APIs ThreadHelper.Generic.Invoke(() => +#pragma warning restore VSTHRD001 // Avoid legacy thread switching APIs { ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox(0u, ref emptyGuid, title, message, null, 0u, OLEMSGBUTTON.OLEMSGBUTTON_YESNO, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, icon, 0, out result)); }); diff --git a/vsintegration/src/FSharp.ProjectSystem.Base/Project/GlobalSuppressions.cs b/vsintegration/src/FSharp.ProjectSystem.Base/Project/GlobalSuppressions.cs index 2c77ef92ef4aec186476eaf94fa9bc485a3fc295..487279fd76776b386fb71752e183a26508b2588f 100644 --- a/vsintegration/src/FSharp.ProjectSystem.Base/Project/GlobalSuppressions.cs +++ b/vsintegration/src/FSharp.ProjectSystem.Base/Project/GlobalSuppressions.cs @@ -306,3 +306,5 @@ [assembly: SuppressMessage("Microsoft.Globalization", "CA1307:SpecifyStringComparison", Scope = "member", Target = "Microsoft.VisualStudio.Package.Web.WAUtilities.#MakeRelativePath(System.String,System.String)", MessageId = "System.String.StartsWith(System.String)")] [assembly: SuppressMessage("Microsoft.Naming", "CA1701:ResourceStringCompoundWordsShouldBeCasedCorrectly", Scope = "resource", Target = "Microsoft.VisualStudio.Package.Project.resources", MessageId = "dataset")] [assembly: SuppressMessage("Microsoft.Naming", "CA1703:ResourceStringsShouldBeSpelledCorrectly", Scope = "resource", Target = "Microsoft.VisualStudio.Package.Project.resources", MessageId = "msbuild")] + +[assembly: SuppressMessage("Reliability", "VSSDK006:Check services exist")] diff --git a/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectConfig.cs b/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectConfig.cs index 41832e24b27dbefd242d73ffa0356f03ec871c6d..1bc6706dd2bff6fa81665f7a96e54037f7e28264 100644 --- a/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectConfig.cs +++ b/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectConfig.cs @@ -1935,7 +1935,7 @@ public void Build(uint options, IVsOutputWindowPane output, string target) if (!NotifyBuildBegin()) return; try { - config.ProjectMgr.BuildAsync(options, this.config.ConfigCanonicalName, output, target, (result, projectInstance) => + config.ProjectMgr.Build(options, this.config.ConfigCanonicalName, output, target, (result, projectInstance) => { this.BuildCoda(new BuildResult(result, projectInstance), output, shouldRepaintReferences); }); diff --git a/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectNode.cs b/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectNode.cs index 79091e1fe6a5c72f6f7b79b08e8d517ae55d8bce..37f6af8e8e2fc658f19a6ada721b669c6382d2a0 100644 --- a/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectNode.cs +++ b/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectNode.cs @@ -2156,7 +2156,7 @@ private void BuildCoda(IVsOutputWindowPane output, bool engineLogOnlyCritical) BuildEngine.OnlyLogCriticalEvents = engineLogOnlyCritical; } } - internal virtual void BuildAsync(uint vsopts, ConfigCanonicalName configCanonicalName, IVsOutputWindowPane output, string target, MSBuildCoda coda) + internal virtual void Build(uint vsopts, ConfigCanonicalName configCanonicalName, IVsOutputWindowPane output, string target, MSBuildCoda coda) { bool engineLogOnlyCritical = BuildPrelude(output); MSBuildCoda fullCoda = (res,instance) => diff --git a/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectSystem.Base.csproj b/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectSystem.Base.csproj index 462541e5ddee237e7cdf3d231a463f46d8a5858f..17a5023ae7c071ea53e5ebdb327562732ca73712 100644 --- a/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectSystem.Base.csproj +++ b/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectSystem.Base.csproj @@ -5,9 +5,8 @@ Library FSharp.ProjectSystem.Base - true - false $(NoWarn),1570,1572,1573,1574,1591,3001,3002,3003,3005,3008,3009,3021,3024 + $(NoWarn);VSTHRD010 $(DefineConstants);CODE_ANALYSIS Microsoft.VisualStudio.FSharp.ProjectSystem true diff --git a/vsintegration/src/FSharp.ProjectSystem.Base/Project/UIThread.cs b/vsintegration/src/FSharp.ProjectSystem.Base/Project/UIThread.cs index e35eccd131834e626cada67fc3ae4a60d9a93ca4..9692b409ba7132a4ea3c038e7f42563caedd08fc 100644 --- a/vsintegration/src/FSharp.ProjectSystem.Base/Project/UIThread.cs +++ b/vsintegration/src/FSharp.ProjectSystem.Base/Project/UIThread.cs @@ -100,7 +100,9 @@ public static void Run(Action action) #if DEBUG StackTrace stackTrace = new StackTrace(true); #endif +#pragma warning disable VSTHRD001 // Avoid legacy thread switching APIs ctxt.Post(delegate (object ignore) +#pragma warning restore VSTHRD001 // Avoid legacy thread switching APIs { UIThread.MustBeCalledFromUIThread(); ourUIQueue.Enqueue(action); @@ -153,7 +155,9 @@ public static void RunSync(Action a) Exception exn = null; Debug.Assert(ctxt != null, "The SynchronizationContext must be captured before calling this method"); // Send on UI thread will execute immediately. +#pragma warning disable VSTHRD001 // Avoid legacy thread switching APIs ctxt.Send(ignore => +#pragma warning restore VSTHRD001 // Avoid legacy thread switching APIs { try { @@ -178,28 +182,7 @@ public static void RunSync(Action a) /// Local JoinableTaskContext /// ensuring non-reentrancy. /// - private static JoinableTaskContext jtc = null; - private static JoinableTaskFactory JTF - { - get - { - if (jtc == null) - { - JoinableTaskContext j = null; - if (VsTaskLibraryHelper.ServiceInstance == null) - { - j = new JoinableTaskContext(); - } - else - { - j = ThreadHelper.JoinableTaskContext; - } - Interlocked.CompareExchange(ref jtc, j, null); - } - - return jtc.Factory; - } - } + private static JoinableTaskFactory JTF => ThreadHelper.JoinableTaskContext.Factory; /// /// Performs a callback on the UI thread and blocks until it is done, using the VS mechanism for diff --git a/vsintegration/src/FSharp.ProjectSystem.FSharp/.gitignore b/vsintegration/src/FSharp.ProjectSystem.FSharp/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..dca31eb19ac3b680811d1da5910526c39d3f32f5 --- /dev/null +++ b/vsintegration/src/FSharp.ProjectSystem.FSharp/.gitignore @@ -0,0 +1 @@ +ctofiles/ diff --git a/vsintegration/src/FSharp.ProjectSystem.FSharp/ProjectSystem.fsproj b/vsintegration/src/FSharp.ProjectSystem.FSharp/ProjectSystem.fsproj index 264584077efb007dfb2ffb0b632b5cec8a847c5c..548c5344550628aaab487021fe4161ba3bdd70ed 100644 --- a/vsintegration/src/FSharp.ProjectSystem.FSharp/ProjectSystem.fsproj +++ b/vsintegration/src/FSharp.ProjectSystem.FSharp/ProjectSystem.fsproj @@ -5,8 +5,6 @@ Library FSharp.ProjectSystem.FSharp - true - false $(NoWarn);52;62;75 true true @@ -24,13 +22,15 @@ - false Menus.ctmenu + Designer true Microsoft.VisualStudio.FSharp.ProjectSystem.FSharpSR true + VSPackage + Designer @@ -91,7 +91,7 @@ - + @@ -108,4 +108,12 @@ + + + <_GeneratedCTOFilesWithCulture Update="%(Identity)"> + %(ResourceName).%(Culture) + + + + diff --git a/vsintegration/src/FSharp.ProjectSystem.FSharp/source.extension.vsixmanifest b/vsintegration/src/FSharp.ProjectSystem.FSharp/source.extension.vsixmanifest new file mode 100644 index 0000000000000000000000000000000000000000..c07a10b91263fd2893b81f72c47bef5e4435a3e6 --- /dev/null +++ b/vsintegration/src/FSharp.ProjectSystem.FSharp/source.extension.vsixmanifest @@ -0,0 +1,2 @@ + + diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.PropertiesPages.vbproj b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.PropertiesPages.vbproj index a04064212fd69af1be14ffc9d3f29c3ac5dd7a98..7e105171e1a647c2a8fa78113d05d8950b054316 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.PropertiesPages.vbproj +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.PropertiesPages.vbproj @@ -1,46 +1,31 @@  - - + - Debug - $(ArtifactsBinDir)\$(MSBuildProjectName)\$(Configuration)\$(TargetFramework) - AnyCPU - 9.0.21022 - 2.0 - {FCFB214C-462E-42B3-91CA-FC557EFEE74F} Library + + true FSharp.ProjectSystem.PropertyPages true - 512 - Windows - On - Binary - On - Off _MYFORMS=True false 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 40026;42105;42107;42353 win - v4.6 - - - true - false - false true - true - true true - true false + false + true + v4.6 + + + + + 2.0 + {FCFB214C-462E-42B3-91CA-FC557EFEE74F} - - - - @@ -51,15 +36,13 @@ - - + - @@ -70,16 +53,18 @@ + - - + + {B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7} + ProjectSystem.Base + - @@ -274,11 +259,4 @@ - - - $(SuiteBinPath)\FSharp - - - - - + \ No newline at end of file diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/My Project/Application.Designer.vb b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/My Project/Application.Designer.vb index a6ad1d45105ccf60ca9bdce8a4e274b7e2563d06..88dd01c78a618d0cc7dbd9432b8267ed2ada0a6f 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/My Project/Application.Designer.vb +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/My Project/Application.Designer.vb @@ -1,4 +1,12 @@ -' Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ Option Strict On Option Explicit On diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/My Project/Settings.Designer.vb b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/My Project/Settings.Designer.vb index 88c922cb98c06515dd56031b40e4d0f4462a8139..3085cb235d097c5046e59ed84e09a681a4df313a 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/My Project/Settings.Designer.vb +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/My Project/Settings.Designer.vb @@ -1,4 +1,12 @@ -' Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ Option Strict On Option Explicit On @@ -7,12 +15,12 @@ Option Explicit On Namespace My _ Partial Friend NotInheritable Class MySettings Inherits Global.System.Configuration.ApplicationSettingsBase - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings),MySettings) + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) #Region "My.Settings Auto-Save Functionality" #If _MyType = "WindowsForms" Then @@ -21,7 +29,7 @@ Namespace My Private Shared addedHandlerLockObject As New Object _ - Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) + Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) If My.Application.SaveMySettingsOnExit Then My.Settings.Save() End If diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/PropertyPages/ApplicationPropPage.vb b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/PropertyPages/ApplicationPropPage.vb index 692619c912bc153d25239c6acaf0d7c5ed54f554..4ada44f4e11c938636e1fe9337c6549ee835f9fc 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/PropertyPages/ApplicationPropPage.vb +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/PropertyPages/ApplicationPropPage.vb @@ -569,8 +569,6 @@ Namespace Microsoft.VisualStudio.Editors.PropertyPages ''' Fill up the allowed values in the target framework listbox ''' ''' - - 'REVIEW: Are the periods in my version strings culture-safe? Private Function ValidateTargetFrameworkMoniker(ByVal moniker As String) As Boolean If moniker = "" Or moniker = Nothing Then Return False diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/PropertyPages/BuildPropPage.vb b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/PropertyPages/BuildPropPage.vb index 5df1d15135315b25093f90a4074ce7974f341467..160a550abe2ff146b7d9db05a5859e918a208f4b 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/PropertyPages/BuildPropPage.vb +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/PropertyPages/BuildPropPage.vb @@ -93,7 +93,7 @@ Namespace Microsoft.VisualStudio.Editors.PropertyPages Private components As System.ComponentModel.IContainer 'PERF: A note about the labels used as lines. The 3D label is being set to 1 px high, - ' so you’re really only using the grey part of it. Using BorderStyle.Fixed3D seems + ' so you�re really only using the grey part of it. Using BorderStyle.Fixed3D seems ' to fire an extra resize OnHandleCreated. The simple solution is to use BorderStyle.None ' and BackColor = SystemColors.ControlDark. @@ -645,7 +645,7 @@ Namespace Microsoft.VisualStudio.Editors.PropertyPages End If ' Remove the project directory path - If String.Compare(BasePath, Microsoft.VisualBasic.Strings.Left(DirectoryPath, Len(BasePath)), StringComparison.OrdinalIgnoreCase) = 0 Then + If String.Compare(BasePath, VisualBasic.Left(DirectoryPath, Len(BasePath)), StringComparison.OrdinalIgnoreCase) = 0 Then Dim ch As Char = CChar(Mid(DirectoryPath, Len(BasePath), 1)) If ch = System.IO.Path.DirectorySeparatorChar OrElse ch = System.IO.Path.AltDirectorySeparatorChar Then RelativePath = Mid(DirectoryPath, Len(BasePath) + 1) diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/PropertyPages/PropPageUserControlBase.vb b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/PropertyPages/PropPageUserControlBase.vb index 486024fff2dd0f88a23e507dfccc483cd8d1735d..bbe32c6fde2c3774ed991f57ca7543e8c2708e4e 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/PropertyPages/PropPageUserControlBase.vb +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/PropertyPages/PropPageUserControlBase.vb @@ -3378,7 +3378,7 @@ NextControl: End If ' Remove the project directory path - If String.Compare(BasePath, Microsoft.VisualBasic.Strings.Left(DirectoryPath, Len(BasePath)), StringComparison.OrdinalIgnoreCase) = 0 Then + If String.Compare(BasePath, VisualBasic.Left(DirectoryPath, Len(BasePath)), StringComparison.OrdinalIgnoreCase) = 0 Then Dim ch As Char = CChar(Mid(DirectoryPath, Len(BasePath), 1)) If ch = System.IO.Path.DirectorySeparatorChar OrElse ch = System.IO.Path.AltDirectorySeparatorChar Then RelativePath = Mid(DirectoryPath, Len(BasePath) + 1) diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/PropertyPages/ReferencePathsPropPage.vb b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/PropertyPages/ReferencePathsPropPage.vb index f1c0e62b298652fabc6f992e0b00186c14676491..5b630c65720dec1f659776c85c04ed8098a03f08 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/PropertyPages/ReferencePathsPropPage.vb +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/PropertyPages/ReferencePathsPropPage.vb @@ -523,7 +523,7 @@ Namespace Microsoft.VisualStudio.Editors.PropertyPages End If ' Remove the project directory path - If String.Compare(BasePath, Microsoft.VisualBasic.Strings.Left(DirectoryPath, Len(BasePath)), StringComparison.OrdinalIgnoreCase) = 0 Then + If String.Compare(BasePath, VisualBasic.Left(DirectoryPath, Len(BasePath)), StringComparison.OrdinalIgnoreCase) = 0 Then Dim ch As Char = CChar(Mid(DirectoryPath, Len(BasePath), 1)) If ch = System.IO.Path.DirectorySeparatorChar OrElse ch = System.IO.Path.AltDirectorySeparatorChar Then RelativePath = Mid(DirectoryPath, Len(BasePath) + 1) diff --git a/vsintegration/src/FSharp.UIResources/FSharp.UIResources.csproj b/vsintegration/src/FSharp.UIResources/FSharp.UIResources.csproj index dd0c543cb5436beaf26254c9c91ad56ec8dbbe2a..f5ad99e17963008a208e1387f7ff8e3921d7e45d 100644 --- a/vsintegration/src/FSharp.UIResources/FSharp.UIResources.csproj +++ b/vsintegration/src/FSharp.UIResources/FSharp.UIResources.csproj @@ -6,7 +6,7 @@ Library $(NoWarn);1591 Microsoft.VisualStudio.FSharp.UIResources - $(NoWarn);1591 + false @@ -31,6 +31,9 @@ True Strings.resx + + FormattingOptionsControl.xaml + @@ -48,19 +51,6 @@ - - - True - True - Strings.resx - - - - - PublicResXFileCodeGenerator - Strings.Designer.cs - - $(VS150COMNTOOLS)\..\..\MSBuild\$(VisualStudioVersion)\Bin diff --git a/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj b/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj index ff45634d03218d6f1c2cf6d6a192c89b27b9de50..24c46b5b96f70f85c1f06bd84359c500c1dda2fb 100644 --- a/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj +++ b/vsintegration/src/FSharp.VS.FSI/FSharp.VS.FSI.fsproj @@ -4,8 +4,6 @@ Library - true - false $(NoWarn);47;75 true true diff --git a/vsintegration/tests/GetTypesVSUnitTests/GetTypesVSUnitTests.fs b/vsintegration/tests/GetTypesVS.UnitTests/GetTypesVS.UnitTests.fs similarity index 100% rename from vsintegration/tests/GetTypesVSUnitTests/GetTypesVSUnitTests.fs rename to vsintegration/tests/GetTypesVS.UnitTests/GetTypesVS.UnitTests.fs diff --git a/vsintegration/tests/GetTypesVSUnitTests/GetTypesVSUnitTests.fsproj b/vsintegration/tests/GetTypesVS.UnitTests/GetTypesVS.UnitTests.fsproj similarity index 92% rename from vsintegration/tests/GetTypesVSUnitTests/GetTypesVSUnitTests.fsproj rename to vsintegration/tests/GetTypesVS.UnitTests/GetTypesVS.UnitTests.fsproj index 68470cf046d7e650853bd3626cc554c64b2eaefe..76980662ccd942977e0d49683062d6886cb41221 100644 --- a/vsintegration/tests/GetTypesVSUnitTests/GetTypesVSUnitTests.fsproj +++ b/vsintegration/tests/GetTypesVS.UnitTests/GetTypesVS.UnitTests.fsproj @@ -4,7 +4,9 @@ net46 + x86 Library + $(NoWarn);3005 true true false @@ -15,8 +17,7 @@ - - + diff --git a/vsintegration/tests/GetTypesVSUnitTests/App.config b/vsintegration/tests/GetTypesVSUnitTests/App.config deleted file mode 100644 index 274bc3450a363d3a0bfb6070c7ecffa43488ba51..0000000000000000000000000000000000000000 --- a/vsintegration/tests/GetTypesVSUnitTests/App.config +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/vsintegration/tests/MockTypeProviders/Directory.Build.props b/vsintegration/tests/MockTypeProviders/Directory.Build.props index a1295702c08a27c7e1b93cbe154460cbc7fee7cd..12ae9770dd0ac0164145a6ae73639db6353a1c46 100644 --- a/vsintegration/tests/MockTypeProviders/Directory.Build.props +++ b/vsintegration/tests/MockTypeProviders/Directory.Build.props @@ -1,7 +1,7 @@ - + false diff --git a/vsintegration/tests/MockTypeProviders/Directory.Build.targets b/vsintegration/tests/MockTypeProviders/Directory.Build.targets index 4bc8389ec97d4fb6709bfb127a2df44b33c051bd..a15fbc0995b56a85de9605e401e494319a741d87 100644 --- a/vsintegration/tests/MockTypeProviders/Directory.Build.targets +++ b/vsintegration/tests/MockTypeProviders/Directory.Build.targets @@ -1,4 +1,4 @@ - + diff --git a/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj b/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj index 6552af446425fe4e6a562c986cbe486d8b66e73e..5564f3a7bcbc6fd8de3f6adab8a94281fa14c69e 100644 --- a/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj +++ b/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj @@ -61,6 +61,7 @@ + diff --git a/vsintegration/tests/UnitTests/App.config b/vsintegration/tests/UnitTests/App.config index 34d853e9f43ae52cff862f6b9c1c695169c8ca29..75d99e7329bc043840758e537b7bbad8fc34e6ab 100644 --- a/vsintegration/tests/UnitTests/App.config +++ b/vsintegration/tests/UnitTests/App.config @@ -6,7 +6,7 @@ - + diff --git a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.ParameterInfo.fs b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.ParameterInfo.fs index 06b42d32efce2dd2f69515f0f5d79b8f31c993f5..0f4271beae3e83f7843da33ac01e95269db13903 100644 --- a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.ParameterInfo.fs +++ b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.ParameterInfo.fs @@ -2031,25 +2031,6 @@ We really need to rewrite some code paths here to use the real parse tree rather end""" this.VerifyNoParameterInfoAtStartOfMarker(fileContents,"(*Mark*)") - (* Project ref method for multi-parameterinfo tests ----------------------------------------------- *) - - [] - member public this.``Multi.ReferenceToProjectLibrary``() = - use _guard = this.UsingNewVS() - let solution = this.CreateSolution() - let project1 = CreateProject(solution, "FSharpLib") - let project2 = CreateProject(solution, "FSharpPro") - AddProjectReference(project2,project1) - let _ = AddFileFromText(project1, "file1.fs", ["namespace Test";"type public Foo() = class";" static member Sum(x:int,y:int) = x+y";"end"]) - let result1 = Build(project1) - AddFileFromText(project2, "file2.fs", ["open Test";"Foo.Sum(12,(*Mark*)"]) |> ignore - let result2 = Build(project2) - let file = OpenFile(project2, "file2.fs") - MoveCursorToStartOfMarker(file, "(*Mark*)") - - let methodstr = GetParameterInfoAtCursor(file) - AssertMethodGroupContain(methodstr,["int";"int"]) - (* Regression tests/negative tests for multi-parameterinfos --------------------------------------- *) // To be added when the bugs are fixed... [] diff --git a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.QuickInfo.fs b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.QuickInfo.fs index 267943da1d3e8ca22f992f09699ea9ef3c9e90d0..16d2f34a4e810c2ac0cee5271ed5a86e4a900322 100644 --- a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.QuickInfo.fs +++ b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.QuickInfo.fs @@ -3171,113 +3171,6 @@ query." ("(*Marker4*)", "Gets and sets X")] this.VerifyUsingFsTestLib fileContent queries false - [] - member public this.``Automation.EnumDUInterfacefromFSBrowse``() = - let fileContent ="""module Test - - open FSTestLib - - type MyTestType() = - [] - val mutable field : int - - interface IMyInterface with - member this.Represent () = "Implement Interface" - - [] - let Main (args : string []) = - let MyEnumFieldSeq = - seq { - for i in 1..10 do - // TC 14 Field Enum F# Browse Comp Expression - let myEnumField = MyColors.Red(*Marker1*) - yield myEnumField - } - - let MyDUList = (fun x -> - match x%3 with - //TC 15 Self DiscUnion F# Browse Lambda - | 0 -> MyDistance(*Marker2*).Kilometers - | 1 -> MyDistance.Miles - | _ -> MyDistance.NauticalMiles - ) - - - - //TC 16 Method Interface F# Browse Lambda - let resultString = new MyTestType() - |> fun (x : MyTestType) -> x :> IMyInterface - |> fun (x : IMyInterface) -> x.Represent(*Marker3*) - 0""" - let queries = [("(*Marker1*)", "Red: MyColors = 0"); - ("(*Marker2*)", "type MyDistance ="); -// ("(*Marker2*)", "DocComment: This is my discriminated union type"); //Fail: due to DocComments - ("(*Marker2*)", "Full name: FSTestLib.MyDistance"); -// ("(*Marker3*)", "DocComment: abstract method in Interface"); //Fail: due to DocComments - ("(*Marker3*)", "abstract member IMyInterface.Represent : unit -> string") - ] - this.VerifyUsingFsTestLib fileContent queries true - - [] - member public this.``Automation.RecordAndInterfaceFromFSProj``() = - let fileContent ="""module Test - - open FSTestLib - - let construct = - seq { - for i in 1..10 do - // TC23 - Testing "Record" type from "F# P2P" inside "Comp Expression" - let a = MyEmployee(*Marker1*).MakeDummy() - a.Name <- "Emp" + i.ToString() - a.Age <- 20 + i - a.IsFTE <- System.Convert.ToBoolean(System.Random().Next(2)) - - // TC25 - Testing "Identifier" of "Record" type from "F# P2P" inside "Quotation" - let b = <@ a(*Marker2*).Name @> - - yield a - } - - // TC27 - Testing "Field/Method" of "Record" type from "F# P2P" inside "Lambda" - let fte_count = - construct - |> Seq.filter (fun a -> a.IsFTE(*Marker3*)) - |> Seq.mapi (fun i a -> i.ToString() + a.ToString(*Marker4*)() ) - |> Seq.length - - // TC24 - Testing "Identifier" of "Interface" type from "F# P2P" inside "Pattern Matching" - type MyTestType() = - [] - val mutable x : int - - interface IMyInterface with - member this.Represent () = this.x.ToString() - - let res = - seq { yield MyTestType() - yield Unchecked.defaultof } - |> Seq.map (fun a -> - let myItf = a :> IMyInterface - match myItf with - | x when x = Unchecked.defaultof -> "" - | itf(*Marker5*) -> itf.Represent() ) - |> Seq.filter (fun s -> s.Length > 0) - |> Seq.length - |> (=) 1""" - let queries = [("(*Marker1*)", "type MyEmployee ="); - ("(*Marker1*)", "mutable IsFTE: bool;"); -// ("(*Marker1*)", "DocComment: This is my record type."); //Fail: due to DocComments - // ("(*Marker1*)", "Full name: FSTestLib.MyEmployee"); // removed from declaration infos - // ("(*Marker1*)", "implements: System.IComparable"); // removed from declaration infos - ("(*Marker2*)", "val a : MyEmployee"); -// ("(*Marker2*)", "implements: System.IComparable"); // removed from declaration infos - ("(*Marker3*)", "MyEmployee.IsFTE: bool"); -// ("(*Marker3*)", "Indicates whether the employee is full time or not"); //Fail: due to DocComments - ("(*Marker5*)", "val itf : IMyInterface") - ] - this.VerifyUsingFsTestLib fileContent queries true - [] member public this.``Automation.StructDelegateDUfromOwnCode``() = let fileContent ="""module Test @@ -3373,105 +3266,6 @@ query." ] this.VerifyUsingFsTestLib fileContent queries false - [] - member public this.``Automation.TupleRecordfromFSBrowse``() = - let fileContent ="""module Test - - open FSTestLib - - let GenerateTuple = fun x -> let tuple = (x,x.ToString(),(float)x, ( fun y -> (y.ToString(),y+1)) ) - // TC 19 Identifier Tuple F# Browse Lambda - tuple(*Marker3*) - let MyTupleSeq = - seq { - for i in 1..9 do - // TC 17 Identifier Tuple F# Browse Comp Expression - let myTuple(*Marker1*) = GenerateTuple i - yield myTuple - } - - let GetTupleMethod tuple= - let (intInTuple,stringInTuple,floatInTuple,methodInTuple) = tuple - methodInTuple - - // TC 20 method Tuple F# Browse Quotation - let methodSeq(*Marker4*) = Seq.map GetTupleMethod MyTupleSeq - - let RecordArray = - [| for x in 1..5 - // TC 18 Method Record F# Browse Imperative - -> MyEmployee.MakeDummy(*Marker2*)()|]""" - let queries = [("(*Marker1*)", "val myTuple : int * string * float * (int -> string * int)"); - ("(*Marker2*)", "static member MyEmployee.MakeDummy : unit -> MyEmployee"); - // ("(*Marker2*)", "DocComment: Method"); //FAIL due to DocComment. - ("(*Marker3*)", "val tuple : int * string * float * (int -> string * int)"); - ("(*Marker4*)", "val methodSeq : seq<(int -> string * int)>"); - ("(*Marker4*)", "Full name: Test.methodSeq") - ] - this.VerifyUsingFsTestLib fileContent queries true - - [] - member public this.``Automation.UnionAndStructFromFSProj``() = - let fileContent ="""module Test - - open FSTestLib - - [] - let Main (args : string []) = - let p1 = FSTestLib.MyPoint(1.0, 2.0) - let (p2 : FSTestLib.MyPoint) = FSTestLib.MyPoint(2.0, 3.0) - - // TODO: Add active pattern testing - let TC21 = - // TC21 - Testing "Identifier" of "Struct" type from "F# P2P" inside "Pattern Matching" - match p1(*Marker1*) + p2 with - | p3(*Marker2*) when p3.X = 4.0 -> p2.Len - | _ as (*Marker3*)Res -> Res.Len - - let TCs () = - let toSun = Kilometers 149597892.0 - - // TC22 - Testing "Identifier" of "Union" type from "F# P2P" inside "Imperative" context - if MyDistance.toMiles toSun(*Marker4*) > toSun then - failwith "Distance in miles can't be bigger than in kilometers." - - let distances : MyDistance list = [toSun; toSun.toNautical; MyDistance.toMiles toSun]; - for element(*Marker5*) in distances do - () - - // TC28 - Testing "Method" of "Union" type from "F# P2P" inside "Pattern Matching" - match MyDistance.toMiles(*Marker6*) toSun with - | Miles x -> - toSun.IncreaseBy(*Marker7*) 1.0 - |> sprintf "Such a distance to Earth [%A] would mean end of world!" |> ignore - | _ -> - failwith "the previos method should have returned Miles type" - - // TC26 - Testing "Property" of "Union" type from "F# P2P" inside "Comp Expression" - async { - let res = toSun.toNautical(*Marker8*) - return res - } - 0""" - let queries = [("(*Marker1*)", "val p1 : MyPoint"); - //("(*Marker1*)", "implements: System.IComparable"); - ("(*Marker2*)", "val p3 : MyPoint"); - //("(*Marker2*)", "type: MyPoint"); - //("(*Marker2*)", "inherits: System.ValueType"); - ("(*Marker4*)", "val toSun : MyDistance"); - //("(*Marker4*)", "type: MyDistance"); - //("(*Marker4*)", "implements: System.IComparable"); - ("(*Marker5*)", "val element : MyDistance"); - //("(*Marker5*)", "type: MyDistance"); - ("(*Marker6*)", "static member MyDistance.toMiles : x:MyDistance -> MyDistance"); -// ("(*Marker6*)", "DocComment: Static Method"); //FAIL due to DocComment - ("(*Marker7*)", "member MyDistance.IncreaseBy : dist:float -> MyDistance"); -// ("(*Marker7*)", "DocComment: Method"); //FAIL due to DocComment - ("(*Marker8*)", "property MyDistance.toNautical: MyDistance"); -// ("(*Marker8*)", "DocComment: Property"); //FAIL due to DocComment - ] - this.VerifyUsingFsTestLib fileContent queries true - (*------------------------------------------IDE Query automation start -------------------------------------------------*) member private this.AssertQuickInfoInQuery(code: string, mark : string, expectedstring : string) = diff --git a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.Script.fs b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.Script.fs index cb5c4da346e67f77900d6bdd0acef4794e9acce0..cd1589117ad335a9aa9ce797df99cb1afbdb0df6 100644 --- a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.Script.fs +++ b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.Script.fs @@ -1337,21 +1337,18 @@ type UsingMSBuild() as this = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") - let fsVersion = "10.2.3.0" let binariesFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) PlaceIntoProjectFileBeforeImport (project, sprintf @" - - True + %s\\FSharp.Compiler.Interactive.Settings.dll - - True + %s\\FSharp.Compiler.Private.dll - " fsVersion binariesFolder fsVersion binariesFolder) + " binariesFolder binariesFolder) let fsx = AddFileFromTextEx(project,"Script.fsx","Script.fsx",BuildAction.Compile, ["let x = fsi.CommandLineArgs"]) diff --git a/vsintegration/tests/UnitTests/LegacyProjectSystem/Tests.ProjectSystem.References.fs b/vsintegration/tests/UnitTests/LegacyProjectSystem/Tests.ProjectSystem.References.fs index 81b6b55ccb8b96c2d74aee8f2ae9a7f3c9b91aee..0727925db6f3c91cbde1773bb8e3d31f985dc041 100644 --- a/vsintegration/tests/UnitTests/LegacyProjectSystem/Tests.ProjectSystem.References.fs +++ b/vsintegration/tests/UnitTests/LegacyProjectSystem/Tests.ProjectSystem.References.fs @@ -248,6 +248,7 @@ type References() = with e -> TheTests.HelpfulAssertMatches ' ' "A reference to '.*' could not be added. A reference to the component '.*' already exists in the project." e.Message + [] [] member public this.``ReferenceResolution.Bug650591.AutomationReference.Add.FullPath``() = match Net20AssemExPath() with diff --git a/vsintegration/tests/UnitTests/ProjectOptionsBuilder.fs b/vsintegration/tests/UnitTests/ProjectOptionsBuilder.fs new file mode 100644 index 0000000000000000000000000000000000000000..1d3df25165f6ccd0275bbbcdd48cd1e292176b0c --- /dev/null +++ b/vsintegration/tests/UnitTests/ProjectOptionsBuilder.fs @@ -0,0 +1,140 @@ +namespace VisualFSharp.UnitTests.Roslyn + +open System +open System.IO +open System.Xml.Linq +open FSharp.Compiler.SourceCodeServices + +type FSharpProject = + { + Directory: string + Options: FSharpProjectOptions + Files: (string * string) list + } + + /// Strips cursor information from each file and returns the name and cursor position of the last file to specify it. + member this.GetCaretPosition () = + let caretSentinel = "$$" + let mutable cursorInfo: (string * int) = (null, 0) + this.Files + |> List.iter (fun (name, contents) -> + // find the '$$' sentinel that represents the cursor location + let caretPosition = contents.IndexOf(caretSentinel) + if caretPosition >= 0 then + let newContents = contents.Substring(0, caretPosition) + contents.Substring(caretPosition + caretSentinel.Length) + File.WriteAllText(Path.Combine(this.Directory, name), newContents) + cursorInfo <- (name, caretPosition)) + cursorInfo + interface IDisposable with + member this.Dispose() = + // delete each source file + this.Files + |> List.iter (fun (path, _contents) -> File.Delete(path)) + // delete the directory + Directory.Delete(this.Directory) + // project file doesn't really exist, nothing to delete + () + +[] +module internal ProjectOptionsBuilder = + let private FileName = XName.op_Implicit "File" + let private NameName = XName.op_Implicit "Name" + let private ProjectName = XName.op_Implicit "Project" + let private ReferenceName = XName.op_Implicit "Reference" + + let private CreateSingleProjectFromMarkup(markup:XElement) = + if markup.Name.LocalName <> "Project" then failwith "Expected root node to be " + let projectRoot = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()) + if Directory.Exists(projectRoot) then Directory.Delete(projectRoot, true) + Directory.CreateDirectory(projectRoot) |> ignore + let files = // filename -> fileContents + markup.Elements(FileName) + |> Seq.map (fun file -> + let fileName = Path.Combine(projectRoot, file.Attribute(NameName).Value) + let fileContents = file.Value + File.WriteAllText(fileName, fileContents) + (fileName, fileContents)) + |> List.ofSeq + let options = + { + ProjectFileName = Path.Combine(projectRoot, markup.Attribute(NameName).Value) + ProjectId = None + SourceFiles = files |> Seq.map fst |> Array.ofSeq + ReferencedProjects = [||] // potentially filled in later + OtherOptions = [||] + IsIncompleteTypeCheckEnvironment = true + UseScriptResolutionRules = false + LoadTime = DateTime.MaxValue + OriginalLoadReferences = [] + UnresolvedReferences = None + ExtraProjectInfo = None + Stamp = None + } + { + Directory = projectRoot + Options = options + Files = files + } + + let private CreateMultipleProjectsFromMarkup(markup:XElement) = + if markup.Name.LocalName <> "Projects" then failwith "Expected root node to be " + let projectsAndXml = + markup.Elements(ProjectName) + |> Seq.map (fun xml -> (CreateSingleProjectFromMarkup xml, xml)) + |> List.ofSeq + // setup project references + let projectMap = + projectsAndXml + |> List.map (fun (projectOptions, _xml) -> + let normalizedProjectName = Path.GetFileName(projectOptions.Options.ProjectFileName) + (normalizedProjectName, projectOptions)) + |> Map.ofList + let projects = + projectsAndXml + |> List.map(fun (projectOptions, xml) -> + // bind references to their `FSharpProjectOptions` counterpart + let referenceList = + xml.Elements(ReferenceName) + |> Seq.map (fun reference -> reference.Value) + |> Seq.fold (fun list reference -> reference :: list) [] + |> List.rev + |> List.map (fun referencedProject -> + let project = projectMap.[referencedProject] + let asmName = Path.GetFileNameWithoutExtension(project.Options.ProjectFileName) + let binaryPath = Path.Combine(project.Directory, "bin", asmName + ".dll") + (binaryPath, project.Options)) + |> Array.ofList + let binaryRefs = + referenceList + |> Array.map fst + |> Array.map (fun r -> "-r:" + r) + let otherOptions = Array.append projectOptions.Options.OtherOptions binaryRefs + { projectOptions with + Options = { projectOptions.Options with + ReferencedProjects = referenceList + OtherOptions = otherOptions + } + }) + let rootProject = List.head projects + rootProject + + let CreateProjectFromMarkup(markup:XElement) = + match markup.Name.LocalName with + | "Project" -> CreateSingleProjectFromMarkup markup + | "Projects" -> CreateMultipleProjectsFromMarkup markup + | name -> failwith <| sprintf "Unsupported root node name: %s" name + + let CreateProject(markup:string) = + XDocument.Parse(markup).Root + |> CreateProjectFromMarkup + + let SingleFileProject(code:string) = + code + |> sprintf @" + + + + + +" + |> CreateProject diff --git a/vsintegration/tests/UnitTests/QuickInfoTests.fs b/vsintegration/tests/UnitTests/QuickInfoTests.fs new file mode 100644 index 0000000000000000000000000000000000000000..19d140de88bf6f54c66b74d195b502736031d365 --- /dev/null +++ b/vsintegration/tests/UnitTests/QuickInfoTests.fs @@ -0,0 +1,445 @@ +namespace Microsoft.VisualStudio.FSharp.Editor.Tests.Roslyn + +open System.IO +open FSharp.Compiler.SourceCodeServices +open Microsoft.CodeAnalysis +open Microsoft.CodeAnalysis.Text +open Microsoft.VisualStudio.FSharp.Editor +open NUnit.Framework +open UnitTests.TestLib.LanguageService +open VisualFSharp.UnitTests.Roslyn + +[] +module QuickInfo = + +let internal GetQuickInfo (project:FSharpProject) (fileName:string) (caretPosition:int) = + async { + let code = File.ReadAllText(fileName) + let sourceText = SourceText.From(code) + let documentId = DocumentId.CreateNewId(ProjectId.CreateNewId()) // only used for caching purposes + return! FSharpAsyncQuickInfoSource.ProvideQuickInfo(checker, documentId, sourceText, fileName, caretPosition, FSharpParsingOptions.Default, project.Options, 0, LanguageServicePerformanceOptions.Default) + } |> Async.RunSynchronously + +let GetQuickInfoText (project:FSharpProject) (fileName:string) (caretPosition:int) = + let sigHelp = GetQuickInfo project fileName caretPosition + match sigHelp with + | Some (quickInfo) -> + let documentationBuilder = + { new IDocumentationBuilder with + override __.AppendDocumentationFromProcessedXML(_, _, _, _, _, _) = () + override __.AppendDocumentation(_, _, _, _, _, _, _) = () + } + let mainDescription, docs = FSharpAsyncQuickInfoSource.BuildSingleQuickInfoItem documentationBuilder quickInfo + let mainTextItems = + mainDescription + |> Seq.map (fun x -> x.Text) + let docTextItems = + docs + |> Seq.map (fun x -> x.Text) + System.String.Join(System.String.Empty, (Seq.concat [mainTextItems; docTextItems])) + | _ -> "" + +let GetQuickInfoTextFromCode (code:string) = + use project = SingleFileProject code + let fileName, caretPosition = project.GetCaretPosition() + GetQuickInfoText project fileName caretPosition + +let expectedLines (lines:string list) = System.String.Join("\n", lines) + +// migrated from legacy test +[] +let ``Automation.EnumDUInterfacefromFSBrowse.InsideComputationExpression`` () = + let code = """ +namespace FsTest + +type MyColors = + | Red = 0 + | Green = 1 + | Blue = 2 + +module Test = + let test() = + let x = + seq { + for i in 1..10 do + let f = MyColors.Re$$d + yield f + } + () +""" + let quickInfo = GetQuickInfoTextFromCode code + let expected = "MyColors.Red: MyColors = 0" + Assert.AreEqual(expected, quickInfo) + +// migrated from legacy test +[] +let ``Automation.EnumDUInterfacefromFSBrowse.InsideMatch`` () = + let code = """ +namespace FsTest + +type MyDistance = + | Kilometers of float + | Miles of float + | NauticalMiles of float + +module Test = + let test() = + let myDuList = (fun x -> + match x with + | 0 -> MyDistanc$$e.Kilometers + | 1 -> MyDistance.Miles + | _ -> MyDistance.NauticalMiles + ) + () +""" + let quickInfo = GetQuickInfoTextFromCode code + let expected = + expectedLines [ "type MyDistance =" + " | Kilometers of float" + " | Miles of float" + " | NauticalMiles of float" + "Full name: FsTest.MyDistance" ] + Assert.AreEqual(expected, quickInfo) + +// migrated from legacy test +[] +let ``Automation.EnumDUInterfacefromFSBrowse.InsideLambda`` () = + let code = """ +namespace FsTest + +type IMyInterface = + interface + abstract Represent : unit -> string + end + +type MyTestType() = + [] + val mutable field : int + + interface IMyInterface with + member this.Represent () = "Implement Interface" + +module Test = + let test() = + let s = new MyTestType() + |> fun (x:MyTestType) -> x :> IMyInterface + |> fun (x:IMyInterface) -> x.Represen$$t() + () +""" + let quickInfo = GetQuickInfoTextFromCode code + let expected = "abstract member IMyInterface.Represent : unit -> string" + Assert.AreEqual(expected, quickInfo) + +// migrated from legacy test +[] +let ``Automation.RecordAndInterfaceFromFSProj.InsideComputationExpression``() = + let code = """ +namespace FsTest + +type MyEmployee = + { mutable Name : string; + mutable Age : int; + mutable IsFTE : bool } + +module Test = + let test() = + let construct = + seq { + for i in 1..10 do + let a = MyEmploye$$e.MakeDummy() + () + } + () +""" + let quickInfo = GetQuickInfoTextFromCode code + let expected = + expectedLines [ "type MyEmployee =" + " {mutable Name: string;" + " mutable Age: int;" + " mutable IsFTE: bool;}" + "Full name: FsTest.MyEmployee" ] + Assert.AreEqual(expected, quickInfo) + () + +// migrated from legacy test +[] +let ``Automation.RecordAndInterfaceFromFSProj.InsideQuotation``() = + let code = """ +namespace FsTest + +type MyEmployee = + { mutable Name : string; + mutable Age : int; + mutable IsFTE : bool } + +module Test = + let test() = + let aa = { Name: "name"; + Age: 1; + IsFTE: false; } + let b = <@ a$$a.Name @> + () +""" + let quickInfo = GetQuickInfoTextFromCode code + let expected = "val aa : MyEmployee" + Assert.AreEqual(expected, quickInfo) + () + +// migrated from legacy test +[] +let ``Automation.RecordAndInterfaceFromFSProj.InsideLambda``() = + let code = """ +namespace FsTest + +type MyEmployee = + { mutable Name : string; + mutable Age : int; + mutable IsFTE : bool } + +module Test = + let test() = + let aa = { Name: "name"; + Age: 1; + IsFTE: false; } + let b = + [ aa ] + |> List.filter (fun e -> e.IsFT$$E) + () +""" + let quickInfo = GetQuickInfoTextFromCode code + let expected = "MyEmployee.IsFTE: bool" + Assert.AreEqual(expected, quickInfo) + () + +// migrated from legacy test +[] +let ``Automation.TupleRecordFromFSBrowse.InsideComputationExpression``() = + let code = """ +namespace FsTest + +module Test = + let GenerateTuple = + fun x -> + let tuple = (x, x.ToString(), (float)x, (fun y -> (y.ToString(), y + 1))) + tuple + let test() = + let mySeq = + seq { + for i in 1..9 do + let my$$Tuple = GenerateTuple i + yield myTuple + } + () +""" + let quickInfo = GetQuickInfoTextFromCode code + let expected = "val myTuple : int * string * float * (int -> string * int)" + Assert.AreEqual(expected, quickInfo) + () + +// migrated from legacy test +[] +let ``Automation.TupleRecordFromFSBrowse.SequenceOfMethods``() = + let code = """ +namespace FsTest + +module Test = + let GenerateTuple = + fun x -> + let tuple = (x, x.ToString(), (float)x, (fun y -> (y.ToString(), y + 1))) + tuple + let GetTupleMethod tuple = + let (_intInTuple, _stringInTuple, _floatInTuple, methodInTuple) = tuple + methodInTuple + let test() = + let mySeq = + seq { + for i in 1..9 do + let myTuple = GenerateTuple i + yield myTuple + } + let method$$Seq = Seq.map GetTupleMethod mySeq + () +""" + let quickInfo = GetQuickInfoTextFromCode code + let expected = "val methodSeq : seq<(int -> string * int)>" + Assert.AreEqual(expected, quickInfo) + () + +// migrated from legacy test +[] +let ``Automation.UnionAndStructFromFSProj.MatchExpression``() = + let code = """ +namespace FsTest + +[] +type MyPoint(x:int, y:int) = + member this.X = x + member this.Y = y + +module Test = + let test() = + let p1 = MyPoint(1, 2) + match p$$1 with + | p3 when p3.X = 1 -> 0 + | _ -> 1 +""" + let quickInfo = GetQuickInfoTextFromCode code + let expected = "val p1 : MyPoint" + Assert.AreEqual(expected, quickInfo) + () + +// migrated from legacy test +[] +let ``Automation.UnionAndStructFromFSProj.MatchPattern``() = + let code = """ +namespace FsTest + +[] +type MyPoint(x:int, y:int) = + member this.X = x + member this.Y = y + +module Test = + let test() = + let p1 = MyPoint(1, 2) + match p1 with + | p$$3 when p3.X = 1 -> 0 + | _ -> 1 +""" + let quickInfo = GetQuickInfoTextFromCode code + let expected = "val p3 : MyPoint" + Assert.AreEqual(expected, quickInfo) + () + +// migrated from legacy test +[] +let ``Automation.UnionAndStructFromFSProj.UnionIfPredicate``() = + let code = """ +namespace FsTest + +type MyDistance = + | Kilometers of float + | Miles of float + | NauticalMiles of float + +module Test = + let test() = + let dd = MyDistance.Kilometers 1.0 + if MyDistance.toMiles d$$d > 0 then () + else () +""" + let quickInfo = GetQuickInfoTextFromCode code + let expected = "val dd : MyDistance" + Assert.AreEqual(expected, quickInfo) + () + +// migrated from legacy test +[] +let ``Automation.UnionAndStructFromFSProj.UnionForPattern``() = + let code = """ +namespace FsTest + +type MyDistance = + | Kilometers of float + | Miles of float + | NauticalMiles of float + +module Test = + let test() = + let distances = [ MyDistance.Kilometers 1.0; MyDistance.Miles 1.0 ] + for dist$$ance in distances do + () +""" + let quickInfo = GetQuickInfoTextFromCode code + let expected = "val distance : MyDistance" + Assert.AreEqual(expected, quickInfo) + () + +// migrated from legacy test +[] +let ``Automation.UnionAndStructFromFSProj.UnionMethodPatternMatch``() = + let code = """ +namespace FsTest + +type MyDistance = + | Kilometers of float + | Miles of float + | NauticalMiles of float + static member toMiles x = + Miles( + match x with + | Miles x -> x + | Kilometers x -> x / 1.6 + | NauticalMiles x -> x * 1.15 + ) + +module Test = + let test() = + let dd = MyDistance.Kilometers 1.0 + match MyDistance.to$$Miles dd with + | Miles x -> 0 + | _ -> 1 +""" + let quickInfo = GetQuickInfoTextFromCode code + let expected = "static member MyDistance.toMiles : x:MyDistance -> MyDistance" + Assert.AreEqual(expected, quickInfo) + () + +// migrated from legacy test +[] +let ``Automation.UnionAndStructFromFSProj.UnionMethodPatternMatchBody``() = + let code = """ +namespace FsTest + +type MyDistance = + | Kilometers of float + | Miles of float + | NauticalMiles of float + member this.IncreaseBy dist = + match this with + | Kilometers x -> Kilometers (x + dist) + | Miles x -> Miles (x + dist) + | NauticalMiles x -> NauticalMiles (x + dist) + +module Test = + let test() = + let dd = MyDistance.Kilometers 1.0 + match dd.toMiles() with + | Miles x -> dd.Increase$$By 1.0 + | _ -> dd +""" + let quickInfo = GetQuickInfoTextFromCode code + let expected = "member MyDistance.IncreaseBy : dist:float -> MyDistance" + Assert.AreEqual(expected, quickInfo) + () + +// migrated from legacy test +[] +let ``Automation.UnionAndStructFromFSProj.UnionPropertyInComputationExpression``() = + let code = """ +namespace FsTest + +type MyDistance = + | Kilometers of float + | Miles of float + | NauticalMiles of float + member this.asNautical = + NauticalMiles( + match this with + | Kilometers x -> x / 1.852 + | Miles x -> x / 1.15 + | NauticalMiles x -> x + ) + +module Test = + let test() = + let dd = MyDistance.Kilometers 1.0 + async { + let r = dd.as$$Nautical + return r + } +""" + let quickInfo = GetQuickInfoTextFromCode code + let expected = "property MyDistance.asNautical: MyDistance" + Assert.AreEqual(expected, quickInfo) + () diff --git a/vsintegration/tests/UnitTests/SignatureHelpProviderTests.fs b/vsintegration/tests/UnitTests/SignatureHelpProviderTests.fs index f61517bf4da8034b525fa53fb859e0e238589f20..f981fe94cb71a773126f1074ea04c43ae885286e 100644 --- a/vsintegration/tests/UnitTests/SignatureHelpProviderTests.fs +++ b/vsintegration/tests/UnitTests/SignatureHelpProviderTests.fs @@ -26,6 +26,7 @@ open System.IO open System.Text open NUnit.Framework open Microsoft.CodeAnalysis.Text +open VisualFSharp.UnitTests.Roslyn open Microsoft.VisualStudio.FSharp.Editor open FSharp.Compiler.SourceCodeServices open UnitTests.TestLib.LanguageService @@ -49,6 +50,43 @@ let internal projectOptions = { Stamp = None } +let private DefaultDocumentationProvider = + { new IDocumentationBuilder with + override doc.AppendDocumentationFromProcessedXML(_, _, _, _, _, _) = () + override doc.AppendDocumentation(_, _, _, _, _, _, _) = () + } + +let GetSignatureHelp (project:FSharpProject) (fileName:string) (caretPosition:int) = + async { + let triggerChar = None // TODO: + let code = File.ReadAllText(fileName) + let! triggered = FSharpSignatureHelpProvider.ProvideMethodsAsyncAux(checker, DefaultDocumentationProvider, SourceText.From(code), caretPosition, project.Options, triggerChar, fileName, 0) + return triggered + } |> Async.RunSynchronously + +let GetCompletionTypeNames (project:FSharpProject) (fileName:string) (caretPosition:int) = + let sigHelp = GetSignatureHelp project fileName caretPosition + match sigHelp with + | None -> [||] + | Some (items, _applicableSpan, _argumentIndex, _argumentCount, _argumentName) -> + let completionTypeNames = + items + |> Array.map (fun (_, _, _, _, _, x, _) -> x |> Array.map (fun (_, _, x, _, _) -> x)) + completionTypeNames + +let GetCompletionTypeNamesFromCursorPosition (project:FSharpProject) = + let fileName, caretPosition = project.GetCaretPosition() + let completionNames = GetCompletionTypeNames project fileName caretPosition + completionNames + +let GetCompletionTypeNamesFromXmlString (xml:string) = + use project = CreateProject xml + GetCompletionTypeNamesFromCursorPosition project + +let GetCompletionTypeNamesFromCode (code:string) = + use project = SingleFileProject code + GetCompletionTypeNamesFromCursorPosition project + [] let ShouldGiveSignatureHelpAtCorrectMarkers() = let manyTestCases = @@ -139,14 +177,8 @@ type foo5 = N1.T let caretPosition = fileContents.IndexOf(marker) + marker.Length - let documentationProvider = - { new IDocumentationBuilder with - override doc.AppendDocumentationFromProcessedXML(_, _, _, _, _, _) = () - override doc.AppendDocumentation(_, _, _, _, _, _, _) = () - } - let triggerChar = if marker = "," then Some ',' elif marker = "(" then Some '(' elif marker = "<" then Some '<' else None - let triggered = FSharpSignatureHelpProvider.ProvideMethodsAsyncAux(checker, documentationProvider, SourceText.From(fileContents), caretPosition, projectOptions, triggerChar, filePath, 0) |> Async.RunSynchronously + let triggered = FSharpSignatureHelpProvider.ProvideMethodsAsyncAux(checker, DefaultDocumentationProvider, SourceText.From(fileContents), caretPosition, projectOptions, triggerChar, filePath, 0) |> Async.RunSynchronously checker.ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients() let actual = match triggered with @@ -164,8 +196,36 @@ type foo5 = N1.T | "" -> () | errorText -> Assert.Fail errorText +// migrated from legacy test +[] +let ``Multi.ReferenceToProjectLibrary``() = + let completionNames = GetCompletionTypeNamesFromXmlString @" + + + + HelperLibrary.fsproj + + + + + + + + + + -#if EXE -ShouldGiveSignatureHelpAtCorrectMarkers() -#endif + +" + let expected = [| + [|"System.Int32"; "System.Int32"|] + |] + Assert.AreEqual(expected, completionNames) diff --git a/vsintegration/tests/UnitTests/Tests.Watson.fs b/vsintegration/tests/UnitTests/Tests.Watson.fs index 491a4bf37da9be9ad47bb18dfe8c1cab552bd916..9cb4b7afa65bdfec9e0d0cc4b0fc7024f2319f1d 100644 --- a/vsintegration/tests/UnitTests/Tests.Watson.fs +++ b/vsintegration/tests/UnitTests/Tests.Watson.fs @@ -26,7 +26,11 @@ type Check = if (File.Exists("watson-test.fs")) then File.Delete("watson-test.fs") File.WriteAllText("watson-test.fs", "// Hello watson" ) - let argv = [| "--simulateException:"+simulationCode; "watson-test.fs"|] + let argv = + [| "--simulateException:"+simulationCode + "--nowarn:988" // don't show `watson-test.fs(1,16): warning FS0988: Main module of program is empty: nothing will happen when it is run` + "watson-test.fs" + |] let ctok = AssumeCompilationThreadWithoutEvidence () let _code = mainCompile (ctok, argv, FSharp.Compiler.MSBuildReferenceResolver.Resolver, false, ReduceMemoryFlag.No, CopyFSharpCoreFlag.No, FSharp.Compiler.ErrorLogger.QuitProcessExiter, ConsoleLoggerProvider(), None, None) diff --git a/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj b/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj index 33f14a5e28425b1e1984af137e6c5a7a2dc51d94..a92cc7cdd64d46466432f3b1cdc2113435c7af17 100644 --- a/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj +++ b/vsintegration/tests/UnitTests/VisualFSharp.UnitTests.fsproj @@ -4,8 +4,9 @@ net46 + x86 Library - $(NoWarn);58;75 + $(NoWarn);44;58;75;3005 NO_PROJECTCRACKER;$(DefineConstants) true true @@ -110,6 +111,9 @@ CompilerService\TreeVisitorTests.fs + + Roslyn\ProjectOptionsBuilder.fs + Roslyn\SyntacticColorizationServiceTests.fs @@ -148,6 +152,9 @@ Roslyn\SignatureHelpProviderTests.fs + + Roslyn\QuickInfoTests.fs + Roslyn\GoToDefinitionServiceTests.fs @@ -163,6 +170,8 @@ PreserveNewest + + @@ -212,7 +221,7 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + +