diff --git a/.gitattributes b/.gitattributes
index 25b46f84a6d..f5b288ab2d8 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -21,11 +21,8 @@
*.rtf diff=astextplain
*.RTF diff=astextplain
-autogen.sh text eol=lf
-launcher.in text eol=lf
-config.make.in text eol=lf
+mono/launcher text eol=lf
+mono/config.make text eol=lf
targets.make text eol=lf
-configure.ac text eol=lf
-Makefile.in text eol=lf
*.bsl linguist-vendored=true
diff --git a/.gitignore b/.gitignore
index a4c90c19878..e599502bb48 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,11 @@
/packages
/Tools
+/tests/scripts/current
+/release
+/debug
+/Proto
+
# Patches that may have been generated by scripts.
# (These aren't generally useful to commit directly; if anything, they should be applied.)
scripts/*.patch
@@ -58,8 +63,10 @@ scripts/*.patch
/tests/fsharpqa/Source/CodeGen/EmittedIL/StaticInit/StaticInit_Module01.dll
/tests/fsharpqa/Source/CodeGen/EmittedIL/StaticInit/StaticInit_Module01.pdb
/tests/Xnet40-fsharpqa-suite-failures.log.*
-/vsintegration/src/vs/FsPkgs/FSharp.Project/FS/FSharp.ProjectSystem.FSharp.fsi
-/vsintegration/src/vs/FsPkgs/FSharp.Project/FS/ctofiles/
+/tests/fsharp/typeProviders/splitAssemblyTools/provider.dll
+/tests/fsharp/typeProviders/splitAssemblyTypeproviders/provider.dll
+/vsintegration/src/service/FsPkgs/FSharp.Project/FS/FSharp.ProjectSystem.FSharp.fsi
+/vsintegration/src/service/FsPkgs/FSharp.Project/FS/ctofiles/
/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Utils.dll
/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExprLibrary.dll
/tests/fsharpqa/Source/*net40-fsharpqa-suite-failures.env
@@ -82,10 +89,7 @@ Proto
sign_temp
.libs
configure
-launcher
-autom4te.cache
config.log
-mono/config.make
config.status
*~
*.suo
@@ -95,7 +99,6 @@ ossreadme*.txt
*.csproj.user
*.fsproj.user
*.sln.DotSettings.user
-*.ide
*.log
*.jrs
*.chk
@@ -124,3 +127,6 @@ tests/fsharpqa/testenv/bin/System.ValueTuple.dll
/fcs/TestResult.xml
/tests/fcs/
/fcs/.paket/Paket.Restore.targets
+msbuild.binlog
+/fcs/FSharp.Compiler.Service.netstandard/*.fs
+/fcs/FSharp.Compiler.Service.netstandard/*.fsi
diff --git a/.nuget/NuGet.Config b/.nuget/NuGet.Config
deleted file mode 100644
index 225a0237b7f..00000000000
--- a/.nuget/NuGet.Config
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.vsts-pr.yaml b/.vsts-pr.yaml
new file mode 100644
index 00000000000..1f9976034fd
--- /dev/null
+++ b/.vsts-pr.yaml
@@ -0,0 +1,62 @@
+jobs:
+- job: Linux
+ pool:
+ vmImage: ubuntu-16.04
+ timeoutInMinutes: 90
+ strategy:
+ maxParallel: 2
+ matrix:
+ release_default:
+ _command: ./mono/cibuild.sh
+ _args: release
+ # disabled until it can be properly fixed
+ #release_fcs:
+ # _command: ./fcs/build.sh
+ # _args: Build
+ steps:
+ - script: $(_command) $(_args)
+ - task: PublishBuildArtifacts@1
+ inputs:
+ PathtoPublish: '$(Build.SourcesDirectory)/tests/TestResults'
+ ArtifactName: 'Linux $(_command) $(_args)'
+ publishLocation: Container
+ continueOnError: true
+ condition: failed()
+
+- job: Windows
+ pool:
+ vmImage: vs2017-win2016
+ timeoutInMinutes: 90
+ strategy:
+ maxParallel: 7
+ 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
+ steps:
+ - script: $(_command) $(_args)
+ - task: PublishBuildArtifacts@1
+ inputs:
+ PathtoPublish: '$(Build.SourcesDirectory)\tests\TestResults'
+ ArtifactName: 'Windows $(_command) $(_args)'
+ publishLocation: Container
+ continueOnError: true
+ condition: failed()
diff --git a/.vsts-signed.yaml b/.vsts-signed.yaml
new file mode 100644
index 00000000000..82b5d247362
--- /dev/null
+++ b/.vsts-signed.yaml
@@ -0,0 +1,96 @@
+jobs:
+- job: Full_Signed
+ pool:
+ name: VSEng-MicroBuildVS2017
+ timeoutInMinutes: 300
+ variables:
+ MSBuildConfiguration: '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
+
+ # Run build.cmd
+ - task: CmdLine@1
+ displayName: Run build.cmd
+ inputs:
+ filename: build.cmd
+ arguments: microbuild
+
+ # Publish nightly package to MyGet
+ - task: PowerShell@1
+ displayName: Publish nightly package to MyGet
+ inputs:
+ scriptName: 'setup\publish-assets.ps1'
+ arguments: '-binariesPath $(MSBuildConfiguration) -branchName $(Build.SourceBranch) -apiKey $(FSharp.MyGetApiKey)'
+ condition: and(succeeded(), contains(variables['PB_PublishType'], 'myget'))
+
+ # Publish packages to Azure Blob Storage
+ - task: MSBuild@1
+ displayName: Publish packages to Azure Blob Storage
+ inputs:
+ solution: PublishToBlob.proj
+ msbuildArguments: '/t:Build /p:ExpectedFeedUrl=$(PB_PublishBlobFeedUrl) /p:AccountKey=$(PB_PublishBlobFeedKey) /p:ManifestBranch=$(SourceBranch) /p:ManifestCommit=$(SourceVersion) /p:ManifestBuildId=$(OfficialBuildId)'
+ condition: and(succeeded(), contains(variables['PB_PublishType'], 'blob'))
+
+ # Create static drop
+ - task: PublishBuildArtifacts@1
+ displayName: Create static drop
+ inputs:
+ PathtoPublish: '$(MSBuildConfiguration)'
+ ArtifactName: '$(Build.BuildNumber)'
+ publishLocation: FilePath
+ TargetPath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)'
+ Parallel: true
+ ParallelCount: 64
+ condition: and(succeeded(), contains(variables['PB_PublishType'], 'drop'))
+
+ # Publish symbols
+ - task: PublishSymbols@1
+ displayName: Publish symbols
+ inputs:
+ SymbolsPath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)\$(Build.BuildNumber)\Symbols'
+ SearchPattern: '**\*.dll;**\*.exe;**\*.pdb'
+ SymbolsFolder: '$(Build.SourcesDirectory)\$(MSBuildConfiguration)'
+ TreatNotIndexedAsWarning: true
+ SymbolsProduct: '$(Build.DefinitionName)'
+ SymbolsVersion: '$(Build.BuildNumber)'
+ continueOnError: true
+ condition: and(succeeded(), contains(variables['PB_PublishType'], 'symbols'))
+
+ # Upload VSTS Drop
+ - task: ms-vseng.MicroBuildTasks.4305a8de-ba66-4d8b-b2d1-0dc4ecbbf5e8.MicroBuildUploadVstsDropFolder@1
+ displayName: Upload VSTS Drop
+ inputs:
+ DropFolder: '$(Build.SourcesDirectory)\$(MSBuildConfiguration)\insertion'
+ condition: and(succeeded(), contains(variables['PB_PublishType'], 'vsts'))
+
+ # 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)\Symbols'
+ usePat: false
+ condition: and(succeeded(), contains(variables['PB_PublishType'], 'symweb'))
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index ae6f2abea5a..00000000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,230 +0,0 @@
-
- Copyright (c) Microsoft Corporation. All Rights Reserved.
-
- See License.txt in the project root for license information.
-
-Visual F#
-======================
-
-All notable changes to this project will be documented in this file.
-
-### [4.0.0] - Visual Studio 2015 Update 1 - 30 November 2015
-
-#### Enhancements
-* Perf: `for i in expr do body` optimization [#219](https://github.com/Microsoft/visualfsharp/pull/219)
-* Remove type provider security dialog and use custom icon for type provider assembly reference [#448](https://github.com/Microsoft/visualfsharp/pull/448)
-* Perf: Enable parallel build inside Visual Studio [#487](https://github.com/Microsoft/visualfsharp/pull/487)
-* Perf: Remove StructBox for Value Types [#549](https://github.com/Microsoft/visualfsharp/pull/549)
-* Add compiler warnings for redundant arguments in raise/failwith/failwithf/nullArg/invalidOp/invalidArg [#630](https://github.com/Microsoft/visualfsharp/pull/630)
-* Add a compiler warning for lower case literals in patterns [#666](https://github.com/Microsoft/visualfsharp/pull/666)
-
-#### Bug fixes
-* Fix scope of types for named values in attributes improperly set [#437](https://github.com/Microsoft/visualfsharp/pull/437)
-* Add general check for escaping typars to check phase [#442](https://github.com/Microsoft/visualfsharp/pull/442)
-* Fix AccessViolationException on obfuscated assemblies [#519](https://github.com/Microsoft/visualfsharp/pull/519)
-* Fix memory leaks while reloading solutions in Visual Studio [#591](https://github.com/Microsoft/visualfsharp/pull/591)
-* Enable breakpoints in `with` augmentations for class types [#608](https://github.com/Microsoft/visualfsharp/pull/608)
-* Fix false escaping type parameter check error [#613](https://github.com/Microsoft/visualfsharp/pull/613)
-* Fix quotation of readonly fields [#622](https://github.com/Microsoft/visualfsharp/pull/622)
-* Keep the reference icons when opening references [#623](https://github.com/Microsoft/visualfsharp/pull/623)
-* Don't suppress missing FSI transitive references [#626](https://github.com/Microsoft/visualfsharp/pull/626)
-* Make Seq.cast's non-generic and generic IEnumerable implementations equivalent [#651](https://github.com/Microsoft/visualfsharp/pull/651)
-
-### [4.0.0] - 20 July 2015
-
-Includes commits up to `dd8252eb8d20aaedf7b1c7576cd2a8a82d24f587`
-
-#### Language, compiler, runtime, interactive
-
-* Normalization and expansion of `Array`, `List`, and `Seq` modules
- * New APIs for 4.0: `chunkBySize`, `contains`, `except`, `findBack`, `findInstanceBack`, `indexed`, `item`, `mapFold`, `mapFoldBack`, `sortByDescending`, `sortDescending`, `splitInto`, `tryFindBack`, `tryFindIndexBack`, `tryHead`, `tryItem`, `tryLast`
- ![Collection API additions](http://i.imgur.com/SdJ7Doh.png)
-* Other new APIs
- * `Option.filter`, `Option.toObj`, `Option.ofObj`, `Option.toNullable`, `Option.ofNullable`
- * `String.filter`
- * `Checked.int8`, `Checked.uint8`
- * `Async.AwaitTask` (non-generic)
- * `WebClient.AsyncDownloadFile`, `WebClient.AsyncDownloadData`
- * `tryUnbox`, `isNull`
-* New active pattern to match constant `Decimal` in quotations
-* Slicing support for lists
-* Support for consuming high-rank (> 4) arrays
-* Support for units of measure in `printf`-family functions
-* Support for constructors/class names as first-class functions
-* Improved exception stack traces in async code
-* Automatic `mutable`/`ref` conversion
-* Support for static arguments to provided methods
-* Support for non-nullable provided types
-* Added `NonStructuralComparison` module containing non-structural comparison operators
-* Support for rational exponents in units of measure
-* Give fsi.exe, fsiAnyCpi.exe nice icons
-* `Microsoft.` optional in namepsace paths from FSharp.Core
-* Support for extension properties in object initializers
-* Pre-support (not yet used) for additional nativeptr intrinsics
-* Simplified, more robust resolution of type references in quotations
-* Support for inheritance of types that have multiple interface instantiations
-* Extended preprocessor grammar
-* Support for implicit quotation of expressions used as method arguments
-* Support for multiple properties in `[]`
-* Eliminate tuple allocation for implicitly returned formal arguments
-* Perf: fsc.exe now uses `GCLatencyMode.Batch`
-* Perf: Improved `hash`/`compare`/`distinctBy`/`groupBy` performance
-* Perf: `Seq.toArray` perf improvement
-* Perf: Use `OptimizedClosures.FSharpFunc` in seq.fs where applicable
-* Perf: Use literals and mutable variables instead of ref cells for better performance in SHA1 calc
-* Perf: Use smart blend of `System.Array.Copy` and iterative copy for array copies
-* Perf: Change `Seq.toList` to mutation-based to remove reliance on `List.rev`
-* Perf: Change `pdbClose` to test if files are locked before inducing GCs
-* Perf: Use server GC mode for compiler
-* Bugfix: Changed an error message within the Set module to use the correct module name.
-* Bugfix: Fix assembly name of warning FS2003
-* Bugfix [#132](http://visualfsharp.codeplex.com/workitem/132): FSI Shadowcopy causes a significant degrade in the fsi first execute time
-* Bugfix [#131](https://visualfsharp.codeplex.com/workitem/131): Fix getentryassembly return value when shadowcopy is enabled in FSI
-* Bugfix [#61](https://visualfsharp.codeplex.com/workitem/61) Nonverifiable code generated with units of measure conversion
-* Bugfix [#68](https://visualfsharp.codeplex.com/workitem/68) BadImageFormatException with Units of Measure
-* Bugfix [#146](https://visualfsharp.codeplex.com/workitem/146) BadImageFormatException in both Release and Debug build with units of measure
-* Bugfix: Incorrent cross-module inlining between different .NET profiles
-* Bugfix: Properly document exceptions in `Array` module
-* Bugfix [#24](https://visualfsharp.codeplex.com/workitem/24): Error reporting of exceptions in type providers `AddMemberDelayed`
-* Bugfix [#13](https://github.com/fsharp/fsharp/issues/13): Error on FSI terminal resize
-* Bugfix [#29](https://github.com/fsharp/fsharp/issues/29): Module access modifier `internal` does not give internal access if no namespaces are used
-* Bugfix: Fix typo in error message for invalid attribute combination
-* Bugfix [#27](https://github.com/microsoft/visualfsharp/issues/27): Private module values can be mutated by other modules
-* Bugfix [#38](https://github.com/microsoft/visualfsharp/issues/38): ICE - System.ArgumentException: not a measure abbreviation, or incorrect kind
-* Bugfix [#44](https://github.com/microsoft/visualfsharp/issues/44): Problems using FSI to `#load` multiple files contributing to the same namespace
-* Bugfix [#95](https://github.com/microsoft/visualfsharp/issues/95): `[]` allows access to DU member if qualified only by module name
-* Bugfix [#89](https://github.com/microsoft/visualfsharp/issues/89): Embedding an untyped quotation in a typed quotation results in ArgumentException
-* Bugfix: Show warning when Record is accessed without type but `[]` was set
-* Bugfix [#139](https://visualfsharp.codeplex.com/workitem/139): Memory leak in `Async.AwaitWaitHandle`
-* Bugfix [#122](https://github.com/microsoft/visualfsharp/issues/122): `stfld` does not give `.volatile` annotation
-* Bugfix [#30](https://github.com/microsoft/visualfsharp/issues/30): Compilation error "Incorrect number of type arguments to local call"
-* Bugfix [#163](https://github.com/microsoft/visualfsharp/issues/163): Array slicing does not work properly with non 0-based arrays
-* Bugfix [#148](https://github.com/microsoft/visualfsharp/issues/148): XML doc comment generation adding empty garbage
-* Bugfix [#98](https://github.com/Microsoft/visualfsharp/issues/98): Using a single, optional, static parameter to a type provider causes failure
-* Bugfix [#109](https://github.com/Microsoft/visualfsharp/issues/109): Invalid interface generated by --sig
-* Bugfix [#123](https://github.com/Microsoft/visualfsharp/issues/123): Union types without sub-classes should be sealed
-* Bugfix [#68](https://github.com/Microsoft/visualfsharp/issues/68): F# 3.1 / Profile 259: `<@ System.Exception() @>` causes AmbiguousMatchException at runtime
-* Bugfix [#9](https://github.com/Microsoft/visualfsharp/issues/9): Internal error in FSI: FS0192: binding null type in envBindTypeRef
-* Bugfix [#10](https://github.com/Microsoft/visualfsharp/issues/10): Internal error: binding null type in envBindTypeRef
-* Bugfix [#266](https://github.com/Microsoft/visualfsharp/issues/266): `windowed` error message incorrectly flags "non-negative" input when "positive" is what's needed
-* Bugfix [#270](https://github.com/Microsoft/visualfsharp/issues/270): "internal error: null: convTypeRefAux" in interactive when consuming quotation containing type name with commas or spaces
-* Bugfix [#276](https://github.com/Microsoft/visualfsharp/issues/276): Combining struct field with units of measure will result managed type instead of unmanaged type
-* Bugfix [#269](https://github.com/Microsoft/visualfsharp/issues/269): Accidentally `#load`ing a DLL in script causes internal error
-* Bugfix [#293](https://github.com/Microsoft/visualfsharp/issues/293): `#r` references without relative path are not loaded when file is local
-* Bugfix [#237](https://github.com/Microsoft/visualfsharp/issues/237): Problems using FSI on multiple namespaces in a single file
-* Bugfix [#338](https://github.com/Microsoft/visualfsharp/issues/338): Escaped unicode characters are encoded incorrectly
-* Bugfix [#370](https://github.com/Microsoft/visualfsharp/issues/370): `Seq.sortBy` cannot handle sequences of floats containing NaN
-* Bugfix [#368](https://github.com/Microsoft/visualfsharp/issues/368): Optimizer incorrectly assumes immutable field accesses are side-effect free
-* Bugfix [#337](https://github.com/Microsoft/visualfsharp/issues/337): Skip interfaces that lie outside the set of referenced assemblies
-* Bugfix [#383](https://github.com/Microsoft/visualfsharp/issues/383): Class with `[]` barred from inheriting from normal non-nullable class
-* Bugfix [#420](https://github.com/Microsoft/visualfsharp/issues/420): Compiler emits incorrect visibility modifier for internal constructors of abstract class
-* Bugfix [#362](https://github.com/Microsoft/visualfsharp/issues/362): Depickling assertion followed by nullref internal errors in units-of-measure case
-* Bugfix [#342](https://github.com/Microsoft/visualfsharp/issues/342): FS0193 error when specifying sequential struct layout of a type
-* Bugfix [#299](https://github.com/Microsoft/visualfsharp/issues/299): AmbiguousMatchException with `[]` on overloaded extension methods
-* Bugfix [#316](https://github.com/Microsoft/visualfsharp/issues/316): Null array-valued attribute causes internal compiler error
-* Bugfix [#147](https://github.com/Microsoft/visualfsharp/issues/147): FS0073: internal error: Undefined or unsolved type variable: 'a
-* Bugfix [#34](https://github.com/Microsoft/visualfsharp/issues/34): Error in pass2 for type FSharp.DataFrame.FSharpFrameExtensions, error: duplicate entry 'Frame2.GroupRowsBy' in method table
-* Bugfix [#212](https://github.com/Microsoft/visualfsharp/issues/212): Record fields initialized in wrong order
-* Bugfix [#445](https://github.com/Microsoft/visualfsharp/issues/445): Inconsistent compiler prompt message when using `--pause` switch
-* Bugfix [#238](https://github.com/Microsoft/visualfsharp/issues/238): Generic use of member constraint solved to record field causes crash
-
-#### Visual Studio
-
-* Updated all templates (except tutorial) to include AssemblyInfo.fs setup in the same manner as default C# project templates
-* Add keyboard shortcuts for FSI reset and clear all
-* Improved debugger view for Map values
-* Improved performance reading stdout/stderr from fsi.exe to F# Interactive window
-* Support for VS project up-to-date check
-* Improved project template descriptions, make it clearer how to target Xamarin platforms
-* Intellisense completion in object initializers
-* Add menu entry "Open folder in File Explorer" on folder nodes
-* Intellisense completion for named arguments
-* `Alt+Enter` sends current line of code to interactive if there is no selection
-* Support for debugging F# scripts with the VS debugger
-* Add support for hexadecimal values (like 0xFF) ??to MSBuild property BaseAddress
-* Updated menu icons used for F# interactive to align with other VS interactive windows
-* Bugfix: Fix url of fsharp.org website in vs templates
-* Bugfix [#141](https://visualfsharp.codeplex.com/workitem/141): The "Error List" window does not parse MSBuild messages correctly
-* Bugfix [#147](https://visualfsharp.codeplex.com/workitem/147): Go to definition doesn't work for default struct ctors
-* Bugfix [#50](https://github.com/microsoft/visualfsharp/issues/50): Members hidden from IntelliSense still show up in tooltips
-* Bugfix [#57](https://github.com/microsoft/visualfsharp/issues/57) (partial): Visual Studio locking access to XML doc files
-* Bugfix [#157](https://github.com/Microsoft/visualfsharp/issues/157): Should not allow Framework 4 / F# 3.1 combination in project properties
-* Bugfix [#114](https://github.com/Microsoft/visualfsharp/issues/114): Portable Library (legacy) template displays wrong target framework version
-* Bugfix [#273](https://github.com/Microsoft/visualfsharp/issues/273): VS editor shows bogus errors when scripts use multi-hop `#r` and `#load` with relative paths
-* Bugfix [#312](https://github.com/Microsoft/visualfsharp/issues/312): F# library project templates and portable library templates do not have `AutoGenerateBindingRedirects` set to true
-* Bugfix [#321](https://github.com/Microsoft/visualfsharp/issues/321): Provided type quickinfo shouldn't show hidden and obsolete members from base class
-* Bugfix [#319](https://github.com/Microsoft/visualfsharp/issues/319): Projects with target runtime 3.0 don't show up correctly on the VS project dialog
-* Bugfix [#283](https://github.com/Microsoft/visualfsharp/issues/283): Changing target framework causes incorrect binding redirects to be added to app.config
-* Bugfix [#278](https://github.com/Microsoft/visualfsharp/issues/278): NullReferenceException when trying to add some COM references
-* Bugfix [#259](https://github.com/Microsoft/visualfsharp/issues/259): Renaming files in folders causes strange UI display
-* Bugfix [#350](https://github.com/Microsoft/visualfsharp/issues/350): Renaming linked file results in error dialog
-* Bugfix [#381](https://github.com/Microsoft/visualfsharp/issues/381): Intellisense stops working when referencing PCL component from script (requires `#r "System.Runtime"`)
-* Bugfix [#104](https://github.com/Microsoft/visualfsharp/issues/104): Using paste to add files to an F# project causes the order of files in the project and on the UI to get out of sync
-* Bugfix [#417](https://github.com/Microsoft/visualfsharp/issues/417): 'Move file up/down' keybindings should be scoped to solution explorer
-* Bugfix [#246](https://github.com/Microsoft/visualfsharp/issues/246): Fix invalid already rendered folder error
-* Bugfix [#106](https://github.com/Microsoft/visualfsharp/issues/106) (partial): Visual F# Tools leak memory while reloading solutions
-
-### [3.1.2] - 20 August 2014
-
-Includes commits up to `3385e58aabc91368c8e1f551650ba48705aaa285`
-
-#### Language, compiler, runtime, interactive
-
-* Allow arbitrary-dimensional slicing
-* Ship versions FSharp.Core.dll built on portable profiles 78 and 259
-* Support "shebang" (`#!`) in F# source files
-* Vertical pipes disallowed in active pattern case identifiers
-* Enable non-locking shadow copy of reference assemblies in fsi/fsianycpu
-* Inline codegen optimization using structs
-* Perf improvement for `Seq.windowed`
-* exe.config files for fsc, fsi, fsianycpu now use simple version range instead of long set of explicit version redirects
-* Bugfix [#72](https://visualfsharp.codeplex.com/workitem/72): Indexer properties with more than 4 arguments cannot be accessed
-* Bugfix [#113](https://visualfsharp.codeplex.com/workitem/113): `Async.Sleep` in .NETCore profiles does not invoke error continuation
-* Bugfix [#91](https://visualfsharp.codeplex.com/workitem/91): String module documentation is false
-* Bugfix [#78](https://visualfsharp.codeplex.com/workitem/78): Allow space characters in active pattern case identifiers
-* Bugfix: Invalid code generated when calling VB methods with optional byref args
-* Bugfix [#69](https://visualfsharp.codeplex.com/workitem/69): Invalid code generated when calling C# method with optional nullable args
-* Bugfix [#9](https://visualfsharp.codeplex.com/workitem/9): XML doc comments on F# record type fields do not appear when accessing in C#
-* Bugfix [#59](https://visualfsharp.codeplex.com/workitem/59): Compiler always requires System.Runtime.InteropServices, this is not present in all portable profiles
-* Bugfix [#17](https://visualfsharp.codeplex.com/workitem/17): Incorrect generation of XML from doc comments for Record fields
-* Bugfix [#7](https://visualfsharp.codeplex.com/workitem/17): NullRef in list comprehension, when for loop works
-* Bugfix [#1](https://visualfsharp.codeplex.com/workitem/1): Type inference involving generic param arrays
-* Bugfix [#37](https://visualfsharp.codeplex.com/workitem/37): Perf regression in 3.1.0 related to resolving extension methods
-* Bugfix: Can't run F# console application with 'update' in name
-* Bugfix: Slicing and range expression inconsistent
-* Bugfix: Invalid code is generated when using field initializers in struct constructor
-
-#### Visual Studio
-
-* Project templates for F# portable libraries targeting profiles 78 and 259
-* Enable non-locking shadow copy of reference assemblies in fsi/fsianycpu (VS options added)
-* Allow breakpoints to be set inside of quotations
-* Support "Publish" action in project system for web, Azure
-* Bugfix [#126](https://visualfsharp.codeplex.com/workitem/126): F# package installer does not honor custom install paths for express SKUs
-* Bugfix [#75](https://visualfsharp.codeplex.com/workitem/75): Microsoft.FSharp.Targets shim not deployed with F# SDK
-* Bugfix: Fix crash in smart indent provider
-* Bugfix [#55](https://visualfsharp.codeplex.com/workitem/55): Cannot add reference to F# PCL project
-* Bugfix: Typos in tutorial project script
-* Bugfix: Required C# event members do not appear in intellisense when signature is (object, byref)
-
-
-### [3.1.1] - 24 January 2014
-
-#### Language, compiler, runtime, interactive
-
-* Improve F# compiler telemetry
-* Bugfix: Improper treatment of * in AssemblyVersion attribute
-* Bugfix: ``sprintf "%%"`` returns `"%%"` in F# 3.1.0, previously returned `"%"` in F# 3.0 and earlier
-* Bugfix: F# 3.0 1D slice setter does not compile in F# 3.1.0
-
-#### Visual Studio
-
-* Enable installation of Visual F# on VS Desktop Express
-* Added support for showing xml doc comments for named arguments
-* Visual F# package deployable on non-VS machines. Deploys compiler and runtime toolchain plus msbuild targets
-* Bugfix: Errors when attempting to add reference to .NET core library
-* Bugfix: Crash in `FSComp.SR.RunStartupValidation()`
-
-[4.0.0]: http://fsharp.org
-[3.1.2]: http://blogs.msdn.com/b/fsharpteam/archive/2014/08/20/announcing-the-release-of-visual-f-tools-3-1-2.aspx
-[3.1.1]: http://blogs.msdn.com/b/fsharpteam/archive/2014/01/22/announcing-visual-f-3-1-1-and-support-for-desktop-express.aspx
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index b9d39237b9f..5299179bd03 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -2,7 +2,7 @@
The Visual F# team is proud to be a contributor to F#, and urge you to join in too. F# users and the F# community are grateful for all contributions to F#.
-Besides this overview, we recommend ["Becoming a contributor"](http://mrange.wordpress.com/2014/12/11/becoming-an-fsharp-contributor/), a community blog post by Mårten Rånge.
+Besides this overview, we recommend ["A journey into the F~ compiler"](https://skillsmatter.com/skillscasts/11629-a-journey-into-the-f-sharp-compiler/), a talk by Steffen Forkmann.
For those contributing to the core of the F# compiler, we recommend ["The F# Compiler Technical Overview"](http://fsharp.github.io/2015/09/29/fsharp-compiler-guide.html)
### Getting Started
@@ -68,8 +68,6 @@ Contributions to this repository will be rigorously policed for quality.
All code submissions should be submitted with regression test cases, and will be subject to peer review by the community and Microsoft. The bar for contributions will be high. This will result in a higher-quality, more stable product.
-- We expect contributors to be actively involved in quality assurance.
-- We expect contributors to be actively involved in quality assurance.
- We expect contributors to be actively involved in quality assurance.
- Partial, incomplete, or poorly-tested contributions will not be accepted.
- Contributions may be put on hold according to stability, testing, and design-coherence requirements.
@@ -113,7 +111,7 @@ Feature PRs have the following minimum requirements:
- For Visual F# Tools features, include a link to the [Visual F# Tools](https://github.com/microsoft/visualfsharp) issue for the feature.
-- For F# Library features, if you have made additions to the FSharp.Core library public surface area, update [the SurfaceArea tests](https://github.com/Microsoft/visualfsharp/tree/fsharp4/src/fsharp/FSharp.Core.Unittests).
+- For F# Library features, if you have made additions to the FSharp.Core library public surface area, update [the SurfaceArea tests](https://github.com/Microsoft/visualfsharp/tree/fsharp4/tests/FSharp.Core.UnitTests).
- For F# Language and Library features, you will be asked to submit a speclet for the feature to the [F# Language Design](https://github.com/fsharp/fslang-design) GitHub repository of speclets. In some cases you will only need to do this after your feature is accepted, but for more complex features you may be asked to do this during the review of the feature.
diff --git a/DEVGUIDE.md b/DEVGUIDE.md
index c41d635de4b..82b79e2bafd 100644
--- a/DEVGUIDE.md
+++ b/DEVGUIDE.md
@@ -1,27 +1,38 @@
# Development Guide
+## Get the Latest F# Compiler Source Code
+
+Get the latest source code from the master branch by running this git command:
+
+ git clone https://github.com/Microsoft/visualfsharp.git
+
+Before running the build scripts, ensure that you have cleaned up the visualfsharp repo by running this git command:
+
+ git clean -xfd
+
+This will remove any files that are not under version control. This is necessary only if you have already attempted to build the solution or have made other changes that might prevent it from building.
+
+## Installing Dependencies and Building
+
Follow the instructions below to build and develop the F# Compiler, Core Library and tools on Windows, macOS and Linux.
-* [Developing the F# Compiler (Windows)](#developing-the-f-compiler-windows)
-* [Developing the F# Compiler (Linux)](#developing-the-f-compiler-linux)
-* [Developing the F# Compiler (macOS)](#developing-the-f-compiler-macos)
-* [Developing the Visual F# IDE Tools (Windows Only)](#developing-the-visual-f-ide-tools-windows-only)
-* [Notes and Resources](#notes)
+- [Developing the F# Compiler (Windows)](#developing-the-f-compiler-windows)
+- [Developing the F# Compiler (Linux)](#developing-the-f-compiler-linux)
+- [Developing the F# Compiler (macOS)](#developing-the-f-compiler-macos)
+- [Developing the Visual F# IDE Tools (Windows Only)](#developing-the-visual-f-ide-tools-windows-only)
+- [Notes and Resources](#notes)
-### Developing the F# Compiler (Windows)
+### Developing the F# Compiler (Windows)
Install
-- [.NET 4.5.1](http://www.microsoft.com/en-us/download/details.aspx?id=40779)
-- [MSBuild 12.0](http://www.microsoft.com/en-us/download/details.aspx?id=40760) or Visual Studio 2013 (or later)
+- [.NET 4.6](https://www.microsoft.com/en-gb/download/details.aspx?id=48130)
**NOTE on Windows:**
-1. It is recommended to run the build.cmd and the qualifiers below on a command prompt with path set to have the location of MSBuild. If we have Visual Studio, we can also run using `Developer Command Prompt for Visual Studio 20xx` (depends on Visual Studio version). This developer command prompt is easier to use than normal command prompt, because it already has the correct path of Visual Studio and .NET's tooling set for us to use (including MSBuild).
-2. The running command prompt must be run under Administrator right (`Run as Administrator`).
-Before running the build scripts, ensure that you have cleaned up the visualfsharp repo by running this git command:
+1. It is recommended to run `build.cmd` in a command prompt with path set to have the location of MSBuild. If you have Visual Studio, we can run using `Developer Command Prompt for Visual Studio 20xx` (depends on Visual Studio version). This developer command prompt is easier to use than normal command prompt, because it already has the correct path of Visual Studio and .NET's tooling set for us to use (including MSBuild).
- git clean -xfd
+2. The command prompt must have Administrator rights (`Run as Administrator`).
On Windows you can build the F# compiler for .NET Framework as follows:
@@ -60,42 +71,67 @@ After you build the first time you can open and use this solution:
or just build it directly:
- msbuild FSharp.sln
+ msbuild FSharp.sln
-Building ``FSharp.sln`` builds nearly everything. However building portable profiles of
-FSharp.Core.dll is not included. If you are just developing the core compiler and library
-then building the solution will be enough.
+If you are just developing the core compiler and library then building ``FSharp.sln`` will be enough.
-### Developing the F# Compiler (Linux)
+### 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 autoconf libtool pkg-config make git automake
+ sudo apt-get install mono-complete make git
Then:
-
- ./autoconf.sh --prefix /usr
+
make
- make install
-Full testing is not yet enabled on Linux, nor is a .NET Core build of the compiler.
+Then to replace your machine-wide installation:
+
+ sudo make install
-You can alternatively use
+Full testing is not yet enabled on Linux.
- ./build.sh
+### Developing the F# Compiler (macOS)
-### Developing the F# Compiler (macOS)
+Install XCode command line tools (or homebrew equivalents) and Mono or Visual Studio for Mac.
-Install Xamarin Studio, then
+Then:
- ./autogen.sh --prefix=/Library/Frameworks/Mono.framework/Versions/Current/
make
+
+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.
+
### Developing the Visual F# IDE Tools (Windows Only)
To build and test Visual F# IDE Tools, install these requirements:
-- [Visual Studio 2017](https://www.visualstudio.com/downloads/)
+
+- 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"
@@ -108,16 +144,16 @@ Steps to build:
Use ``VisualFSharp.sln`` if you're building the Visual F# IDE Tools.
-Note on Debug vs Release: ``Release`` Configuration has a degraded debugging experience, so if you want to test a change locally, it is recommended to do it in the ``Debug`` configuration. For more information see https://github.com/Microsoft/visualfsharp/issues/2771 and https://github.com/Microsoft/visualfsharp/pull/2773.
+Note on Debug vs Release: ``Release`` Configuration has a degraded debugging experience, so if you want to test a change locally, it is recommended to do it in the ``Debug`` configuration. For more information see issues [#2771](https://github.com/Microsoft/visualfsharp/issues/2771) and [#2773](https://github.com/Microsoft/visualfsharp/pull/2773).
-Note: if you face this error [#2351](https://github.com/Microsoft/visualfsharp/issues/2351):
+Note ([#2351](https://github.com/Microsoft/visualfsharp/issues/2351)): if you face this error:
-> error VSSDK1077: Unable to locate the extensions directory. "ExternalSettingsManager::GetScopePaths failed to initialize PkgDefManager for C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\devenv.exe".
+> error VSSDK1077: Unable to locate the extensions directory. "ExternalSettingsManager::GetScopePaths failed to initialize PkgDefManager for C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\devenv.exe".
Or hard crash on launch ("Unknown Error"), delete these folders:
-* `%localappdata%\Microsoft\VisualStudio\15.0_(some number here)RoslynDev`
-* `%localappdata%\Microsoft\VisualStudio\15.0_(some number here)`
+- `%localappdata%\Microsoft\VisualStudio\15.0_(some number here)RoslynDev`
+- `%localappdata%\Microsoft\VisualStudio\15.0_(some number here)`
#### [Optional] Install the Visual F# IDE Tools (Windows Only)
@@ -131,18 +167,18 @@ components installed in that VS installation. You can revert this step by disab
For **Debug**, uninstall then reinstall:
VSIXInstaller.exe /u:"VisualFSharp"
- VSIXInstaller.exe debug\net40\bin\VisualFSharpOpenSource.vsix
+ VSIXInstaller.exe debug\net40\bin\VisualFSharpFull.vsix
For **Release**, uninstall then reinstall:
VSIXInstaller.exe /u:"VisualFSharp"
- VSIXInstaller.exe release\net40\bin\VisualFSharpOpenSource.vsix
+ VSIXInstaller.exe release\net40\bin\VisualFSharpFull.vsix
Restart Visual Studio, it should now be running your freshly-built Visual F# IDE Tools with updated F# Interactive.
#### [Optional] F5 testing of local changes
-To test your changes locally _without_ overwriting your default installed Visual F# tools, set the `VisualFSharp\Vsix\VisualFSharpOpenSource`
+To test your changes locally _without_ overwriting your default installed Visual F# tools, set the `VisualFSharp\Vsix\VisualFSharpFull`
project as the startup project. When you hit F5 a new instance of Visual Studio will be started in the `RoslynDev` hive with your
changes, but the root (default) hive will remain untouched. You can also start this hive automatically using
@@ -170,18 +206,16 @@ For **Release**:
vsintegration\update-vsintegration.cmd release
-# Notes
+## Debugging the F# Compiler
+
+See the "Debugging The Compiler" section of this [article](https://medium.com/@willie.tetlow/f-mentorship-week-1-36f51d3812d4)
+
+## Notes
#### Windows: Links to Additional frameworks
- [Git for windows](http://msysgit.github.io/)
-- [.NET 3.5](http://www.microsoft.com/en-us/download/details.aspx?id=21)
-- [.NET 4.5](http://www.microsoft.com/en-us/download/details.aspx?id=30653)
-- [.NET 4.5.1](http://www.microsoft.com/en-us/download/details.aspx?id=40779)
- [.NET 4.6](http://www.microsoft.com/en-us/download/details.aspx?id=48137)
-- [MSBuild 12.0](http://www.microsoft.com/en-us/download/details.aspx?id=40760)
-- [Windows 7 SDK](http://www.microsoft.com/en-us/download/details.aspx?id=8279)
-- [Windows 8 SDK](http://msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx)
- [Windows 8.1 SDK](http://msdn.microsoft.com/en-us/library/windows/desktop/bg162891.aspx)
- [Windows 10 SDK](https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk)
@@ -196,16 +230,33 @@ For **Release**:
- We use the proto compiler to compile the source for `FSharp.Core.dll` in this distribution.
- We use the proto compiler to compile the source for `FSharp.Compiler.dll`, `fsc.exe`, `fsi.exe`, and other binaries found in this distribution.
+#### Updating FSComp.fs
+
+If you change error messages you may need to update FSComp.fs in `src\buildfromsource\FSharp.Compiler.Private`.
+
+To do this, build the non-buildfromsource version of FSharp.Compiler.Private (src\fsharp\FSharp.Compiler.Private) then check its obj\ directory for `FSComp.fs` and manually copy that into the buildfromsource directory.
+
+ .\build net40
+ copy /y src\fsharp\FSharp.Compiler.Private\obj\release\net40\FSComp.* src\buildfromsource\FSharp.Compiler.Private\
+
+You can also change build.cmd to default COPY_FSCOMP_RESOURCE_FOR_BUILD_FROM_SOURCES to 1 under ":ARGUMENTS_OK" label.
+
#### Configuring proxy server
If you are behind a proxy server, NuGet client tool must be configured to use it:
- .nuget\nuget.exe config -set http_proxy=proxy.domain.com:8080 -ConfigFile .nuget\NuGet.Config
- .nuget\nuget.exe config -set http_proxy.user=user_name -ConfigFile .nuget\NuGet.Config
- .nuget\nuget.exe config -set http_proxy.password=user_password -ConfigFile .nuget\NuGet.Config
+ .nuget\nuget.exe config -set http_proxy=proxy.domain.com:8080 -ConfigFile NuGet.Config
+ .nuget\nuget.exe config -set http_proxy.user=user_name -ConfigFile NuGet.Config
+ .nuget\nuget.exe config -set http_proxy.password=user_password -ConfigFile NuGet.Config
Where you should set proper proxy address, user name and password.
+#### When modifying, adding, or removing keywords or compiler messages
+
+If your changes involve modifying the list of language keywords in any way, (e.g. when implementing a new keyword), the XLF localization files need to be synced with the corresponding resx files. This can be done automatically by running `msbuild FSharp.Compiler.Private.fsproj /t:UpdateXlf` (located in [src\fsharp\FSharp.Compiler.Private](https://github.com/Microsoft/visualfsharp/tree/master/src/fsharp/FSharp.Compiler.Private)). This only works on Windows/.NETStandard framework, so changing this from any other platform requires editing and syncing all of the XLF files manually.
+
+After this, you must copy any differing `resx` files from the output directory into the corresponding subdirectory in [src\buildfromsource](https://github.com/Microsoft/visualfsharp/tree/master/src/fsharp/FSharp.Compiler.Private). This step will soon be eliminated (see issue [#3905](https://github.com/Microsoft/visualfsharp/issues/3905)).
+
#### Resources
The primary technical guide to the core compiler code is [The F# Compiler Technical Guide](http://fsharp.github.io/2015/09/29/fsharp-compiler-guide.html). Please read and contribute to that guide.
diff --git a/DotnetCLIToolsVersion.txt b/DotnetCLIToolsVersion.txt
index 07fe0f906a8..6e840019a3b 100644
--- a/DotnetCLIToolsVersion.txt
+++ b/DotnetCLIToolsVersion.txt
@@ -1 +1 @@
-2.0.3-servicing-007056
+ 2.1.400-preview-009197
diff --git a/FSharp.Directory.Build.props b/FSharp.Directory.Build.props
new file mode 100644
index 00000000000..e9c2a5c5e99
--- /dev/null
+++ b/FSharp.Directory.Build.props
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/FSharp.Directory.Build.targets b/FSharp.Directory.Build.targets
new file mode 100644
index 00000000000..0c0448113ce
--- /dev/null
+++ b/FSharp.Directory.Build.targets
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/FSharp.sln b/FSharp.sln
index bfa07b6d43d..923255dd35b 100644
--- a/FSharp.sln
+++ b/FSharp.sln
@@ -29,9 +29,9 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fsi", "src\fsharp\fsi\Fsi.f
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Tests.FSharpSuite", "tests\fsharp\FSharp.Tests.FSharpSuite.fsproj", "{C163E892-5BF7-4B59-AA99-B0E8079C67C4}"
EndProject
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Unittests", "src\fsharp\FSharp.Compiler.Unittests\FSharp.Compiler.Unittests.fsproj", "{A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}"
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "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", "src\fsharp\FSharp.Core.Unittests\FSharp.Core.Unittests.fsproj", "{88E2D422-6852-46E3-A740-83E391DC7973}"
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "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,9 +39,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("{F2A71F9B-5D33-465A-A702-920D77279786}") = "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}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "fsharpqafiles", "tests\fsharpqa\fsharpqafiles.csproj", "{AAAAD274-696A-49EC-AAAA-F870BE91AAAA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -185,26 +183,17 @@ Global
{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
- {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {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|x86.ActiveCfg = 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
- {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Release|x86.Build.0 = Release|Any CPU
- {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {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|x86.ActiveCfg = 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
- {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.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
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -221,7 +210,9 @@ Global
{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}
- {4239EFEA-E746-446A-BF7A-51FCBAB13946} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449}
- {2E60864A-E3FF-4BCC-810F-DC7C34E6B236} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449}
+ {AAAAD274-696A-49EC-AAAA-F870BE91AAAA} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449}
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {BD5177C7-1380-40E7-94D2-7768E1A8B1B8}
EndGlobalSection
EndGlobal
diff --git a/FSharpBuild.Directory.Build.props b/FSharpBuild.Directory.Build.props
new file mode 100644
index 00000000000..560885e394b
--- /dev/null
+++ b/FSharpBuild.Directory.Build.props
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+ Debug
+ $(MSBuildThisFileDirectory)
+ $(RepoRoot)src
+ $(RepoRoot)Tools
+ false
+ $(RepoRoot)Proto\net40\bin
+ 4.4.0
+
+
+
+
+
+ $(NUGET_PACKAGES)
+ $(MSBuildThisFileDirectory)packages
+
+ $(NuGetPackageRoot)\
+ $(NuGetPackageRoot)/
+
+
+
+
+ false
+ true
+ $(FSharpSourcesRoot)\fsharp\msft.pubkey
+ true
+ true
+
+
+
+
+ true
+
+
+
+
+ false
+ true
+
+
+
+
+ portable
+ fs
+ false
+ true
+
+
+
+
+ $(ProtoOutputPath)\Microsoft.FSharp.NetSdk.props
+ $(ProtoOutputPath)\Microsoft.FSharp.NetSdk.targets
+ $(ProtoOutputPath)\Microsoft.FSharp.Overrides.NetSdk.targets
+
+
+
diff --git a/FSharpBuild.Directory.Build.targets b/FSharpBuild.Directory.Build.targets
new file mode 100644
index 00000000000..a447c35111a
--- /dev/null
+++ b/FSharpBuild.Directory.Build.targets
@@ -0,0 +1,41 @@
+
+
+
+ en;$(XlfLanguages)
+ coreclr
+ net40
+ $(MSBuildProjectDirectory)\$(OutputPath)
+ $(OutputPath)
+ $(RepoRoot)$(Configuration)\$(TargetDotnetProfile)\bin
+ $(RepoRoot)$(Configuration)\$(TargetDotnetProfile)\obj
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/FSharpTests.Directory.Build.props b/FSharpTests.Directory.Build.props
new file mode 100644
index 00000000000..7deaa0eb9b0
--- /dev/null
+++ b/FSharpTests.Directory.Build.props
@@ -0,0 +1,36 @@
+
+
+
+
+ <_FSharpCompilerPath>$(MSBuildThisFileDirectory)$(Configuration)/net40/bin
+
+ $(_FSharpCompilerPath)
+ fsc.exe
+
+
+
+
+
+ <_FSharpCompilerPath>$(MSBuildThisFileDirectory)$(Configuration)/coreclr/bin
+
+ $(MSBuildThisFileDirectory)Tools/dotnet20
+ dotnet.exe
+ dotnet
+ $(_FSharpCompilerPath)/fsc.exe
+
+
+
+
+ $(_FSharpCompilerPath)/Microsoft.FSharp.NetSdk.props
+ $(_FSharpCompilerPath)/Microsoft.FSharp.NetSdk.targets
+ $(_FSharpCompilerPath)/Microsoft.FSharp.Overrides.NetSdk.targets
+
+
+
+
+
+ $(MSBuildThisFileDirectory)$(Configuration)\coreclr\bin\FSharp.Build.dll
+ $(MSBuildThisFileDirectory)$(Configuration)\net40\bin\FSharp.Build.dll
+
+
+
\ No newline at end of file
diff --git a/FSharpTests.Directory.Build.targets b/FSharpTests.Directory.Build.targets
new file mode 100644
index 00000000000..e5b000ce518
--- /dev/null
+++ b/FSharpTests.Directory.Build.targets
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+ $([System.IO.File]::ReadAllText('$(MSBuildThisFileDirectory)DotnetCLIToolsVersion.txt').Trim())
+
+
+
+
+
+
+
+
+
+
diff --git a/Makefile b/Makefile
index 77a98f2871b..14f7aef4870 100644
--- a/Makefile
+++ b/Makefile
@@ -1,19 +1,30 @@
include $(topsrcdir)mono/config.make
-.PHONY: restore
+.PHONY: restore build build-proto
restore:
- MONO_ENV_OPTIONS=$(monoopts) mono .nuget/NuGet.exe restore packages.config -PackagesDirectory packages -ConfigFile .nuget/NuGet.Config
+ MONO_ENV_OPTIONS=$(monoopts) mono .nuget/NuGet.exe restore packages.config -PackagesDirectory packages -ConfigFile ./NuGet.Config
+ chmod u+x packages/FSharp.Compiler.Tools.4.1.27/tools/fsi.exe
+ chmod u+x packages/FsLexYacc.7.0.6/build/fslex.exe
+ chmod u+x packages/FsLexYacc.7.0.6/build/fsyacc.exe
# Make the proto using the bootstrap, then make the final compiler using the proto
# We call MAKE sequentially because we don't want build-final to explicitly depend on build-proto,
# as that causes a complete recompilation of both proto and final everytime you touch the
# compiler sources.
all:
+ @echo -----------
+ @echo prefix=$(prefix)
+ @echo topdir=$(topdir)
+ @echo monodir=$(monodir)
+ @echo monolibdir=$(monolibdir)
+ @echo monobindir=$(monobindir)
+ @echo -----------
+ $(MAKE) restore
$(MAKE) build-proto
$(MAKE) build
-build-proto: restore
+build-proto:
MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=Proto /p:TargetDotnetProfile=$(TargetDotnetProfile) src/fsharp/FSharp.Build-proto/FSharp.Build-proto.fsproj
MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=Proto /p:TargetDotnetProfile=$(TargetDotnetProfile) src/fsharp/Fsc-proto/Fsc-proto.fsproj
@@ -27,7 +38,7 @@ build:
MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=$(Configuration) /p:TargetDotnetProfile=net40 src/fsharp/FSharp.Compiler.Server.Shared/FSharp.Compiler.Server.Shared.fsproj
MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=$(Configuration) /p:TargetDotnetProfile=net40 src/fsharp/fsi/Fsi.fsproj
MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=$(Configuration) /p:TargetDotnetProfile=net40 src/fsharp/fsiAnyCpu/FsiAnyCPU.fsproj
- MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=$(Configuration) /p:TargetDotnetProfile=net40 src/fsharp/FSharp.Core.Unittests/FSharp.Core.Unittests.fsproj
+ MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=$(Configuration) /p:TargetDotnetProfile=net40 tests/FSharp.Core.UnitTests/FSharp.Core.UnitTests.fsproj
mkdir -p $(Configuration)/fsharp30/net40/bin
mkdir -p $(Configuration)/fsharp31/net40/bin
mkdir -p $(Configuration)/fsharp40/net40/bin
diff --git a/NuGet.Config b/NuGet.Config
new file mode 100644
index 00000000000..c89208eb6da
--- /dev/null
+++ b/NuGet.Config
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PublishToBlob.proj b/PublishToBlob.proj
index 21dbb9300e0..00bcee63359 100644
--- a/PublishToBlob.proj
+++ b/PublishToBlob.proj
@@ -10,26 +10,26 @@
Microsoft.DotNet.Build.Tasks.Feed
- 1.0.0-prerelease-02219-01
+ 2.1.0-prerelease-02419-02
-
-
+
+
-
+ Overwrite="$(PublishOverwrite)"
+ ManifestBranch="$(ManifestBranch)"
+ ManifestBuildId="$(ManifestBuildId)"
+ ManifestCommit="$(ManifestCommit)"
+ ManifestName="fsharp"
+ SkipCreateManifest="false" />
diff --git a/README.md b/README.md
index 617c8a4bece..3e3c480f6ed 100644
--- a/README.md
+++ b/README.md
@@ -16,12 +16,11 @@ For historical reasons this repository is called "visualfsharp" and currently al
## Build Status
-| | Ubuntu (Build) | Windows (Debug Build) | Windows (Release Tests 1) | Windows (Release Tests 2) | Windows (Release Tests 3) |
-|:----------:|:----------------:|:----------------:|:------------------:|:-----------------------:|:---------------------:|
-|**master** |[![Build Status](https://ci2.dot.net/buildStatus/icon?job=Microsoft_visualfsharp/master/release_ubuntu14.04)](https://ci2.dot.net/job/Microsoft_visualfsharp/job/master/job/release_ubuntu14.04/)|[![Build Status](https://ci2.dot.net/buildStatus/icon?job=Microsoft_visualfsharp/master/debug_windows_nt)](https://ci2.dot.net/job/Microsoft_visualfsharp/job/master/job/debug_windows_nt/)|[![Build Status](https://ci2.dot.net/buildStatus/icon?job=Microsoft_visualfsharp/master/release_ci_part1_windows_nt)](https://ci2.dot.net/job/Microsoft_visualfsharp/job/master/job/release_ci_part1_windows_nt/)|[![Build Status](https://ci2.dot.net/buildStatus/icon?job=Microsoft_visualfsharp/master/release_ci_part2_windows_nt)](https://ci2.dot.net/job/Microsoft_visualfsharp/job/master/job/release_ci_part2_windows_nt/)|[![Build Status](https://ci2.dot.net/buildStatus/icon?job=Microsoft_visualfsharp/master/release_ci_part3_windows_nt)](https://ci2.dot.net/job/Microsoft_visualfsharp/job/master/job/release_ci_part3_windows_nt/)|
-|**dev15.5** |[![Build Status](https://ci2.dot.net/buildStatus/icon?job=Microsoft_visualfsharp/dev15.5/release_ubuntu14.04)](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.5/job/release_ubuntu14.04/)|[![Build Status](https://ci2.dot.net/buildStatus/icon?job=Microsoft_visualfsharp/dev15.5/debug_windows_nt)](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.5/job/debug_windows_nt/)|[![Build Status](https://ci2.dot.net/buildStatus/icon?job=Microsoft_visualfsharp/dev15.5/release_ci_part1_windows_nt)](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.5/job/release_ci_part1_windows_nt/)|[![Build Status](https://ci2.dot.net/buildStatus/icon?job=Microsoft_visualfsharp/dev15.5/release_ci_part2_windows_nt)](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.5/job/release_ci_part2_windows_nt/)|[![Build Status](https://ci2.dot.net/buildStatus/icon?job=Microsoft_visualfsharp/dev15.5/release_ci_part3_windows_nt)](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.5/job/release_ci_part3_windows_nt/)|
-|**dev15.6** |[![Build Status](https://ci2.dot.net/buildStatus/icon?job=Microsoft_visualfsharp/dev15.6/release_ubuntu14.04)](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.6/job/release_ubuntu14.04/)|[![Build Status](https://ci2.dot.net/buildStatus/icon?job=Microsoft_visualfsharp/dev15.6/debug_windows_nt)](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.6/job/debug_windows_nt/)|[![Build Status](https://ci2.dot.net/buildStatus/icon?job=Microsoft_visualfsharp/dev15.6/release_ci_part1_windows_nt)](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.6/job/release_ci_part1_windows_nt/)|[![Build Status](https://ci2.dot.net/buildStatus/icon?job=Microsoft_visualfsharp/dev15.6/release_ci_part2_windows_nt)](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.6/job/release_ci_part2_windows_nt/)|[![Build Status](https://ci2.dot.net/buildStatus/icon?job=Microsoft_visualfsharp/dev15.6/release_ci_part3_windows_nt)](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.6/job/release_ci_part3_windows_nt/)|
-
+| Branch | Status |
+|:------:|:------:|
+|master|[![Build Status](https://dnceng.visualstudio.com/_apis/public/build/definitions/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/106/badge?branchname=master)](https://dnceng.visualstudio.com/public/public%20Team/_build?definitionId=106&_a=history)|
+|dev15.9|[![Build Status](https://dnceng.visualstudio.com/_apis/public/build/definitions/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/106/badge?branchname=dev15.9)](https://dnceng.visualstudio.com/public/public%20Team/_build?definitionId=106&_a=history)|
+|dev16.0|[![Build Status](https://dnceng.visualstudio.com/_apis/public/build/definitions/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/106/badge?branchname=dev16.0)](https://dnceng.visualstudio.com/public/public%20Team/_build?definitionId=106&_a=history)|
## Help improve the Quality of the Tools by Using the Nightly Releases of Visual F# Tools
To setup Visual Studio to use the latest nightly releases of the Visual F# Tools:
@@ -36,6 +35,25 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for general guidelines on the contributio
To contribute to the F# ecosystem more generally see the F# Software Foundation's [Community Projects](http://fsharp.org/community/projects/) pages.
+## Branches
+
+These are the branches in use:
+
+* `master` = Latest branch for OSS developers and nightly users.
+ - Most contributions go here.
+ - Able to be built, installed and used in the latest public Visual Studio release.
+ - May contain updated F# features and logic.
+ - Used to build nightly VSIX (see above).
+ - Gets integrated into https://github.com/fsharp/fsharp to form the basis of Mono releases
+ - Gets integrated into https://github.com/fsharp/FSharp.Compiler.Service to form the basis of FSharp.Compiler.Service releases
+
+* `dev15.x`
+ - Latest release branch for the particular point release of Visual Studio.
+ - Incorporates features and fixes from master up to a particular branch point, then selective cherry-picks.
+ - May contain new features that depend on new things or fixes in the corresponding Visual Studio release.
+ - Gets integrated back into master once the corresponding Visual Studio release is made.
+ - Used to build Visual F# Tool updates
+
### Technical Documentation
@@ -62,6 +80,8 @@ To setup Visual Studio to use the latest nightly releases of the Visual F# Tools
https://blogs.msdn.microsoft.com/dotnet/2017/03/14/announcing-nightly-releases-for-the-visual-f-tools/
+If you wish to set up a *Preview* nightly atop Visual Studio preview builds, you can either [download a VSIX Manually from here](https://dotnet.myget.org/feed/fsharp-preview/package/vsix/VisualFSharp) or set up a VSIX feed in visual studio from [here](https://dotnet.myget.org/F/fsharp-preview/vsix).
+
### Using CI Builds
To install F#, see http://fsharp.org.
diff --git a/RoslynPackageVersion.txt b/RoslynPackageVersion.txt
new file mode 100644
index 00000000000..d0a9234a2fb
--- /dev/null
+++ b/RoslynPackageVersion.txt
@@ -0,0 +1 @@
+2.9.0-beta8-63208-01
\ No newline at end of file
diff --git a/TESTGUIDE.md b/TESTGUIDE.md
index 9071fac914e..80f51322d7e 100644
--- a/TESTGUIDE.md
+++ b/TESTGUIDE.md
@@ -10,12 +10,11 @@ To run tests, use variations such as the following, depending on which test suit
build.cmd vs test
build.cmd all test
-## Prerequisites
+You can also submit pull requests to http://github.com/Microsoft/visualfsharp and run the tests via continuous integration. Most people do wholesale testing that way.
-In order to run the FSharpQA suite, you will need to install [Perl](http://www.perl.org/get.html) (ActiveState Perl 5.16.3 is known to work fine).
-Perl must be included in the `%PATH%` for the below steps to work. It is also recommended that you run tests from an elevated command prompt, as there are a couple of test cases which require administrative privileges.
+## Prerequisites
-The Perl requirement is gradually being removed.
+It is recommended that you run tests from an elevated command prompt, as there are a couple of test cases which require administrative privileges.
## Test Suites
@@ -25,9 +24,9 @@ The F# tests are split as follows:
* [FSharpQA Suite](tests/fsharpqa/Source) - Broad and deep coverage of a variety of compiler, runtime, and syntax scenarios.
-* [FSharp.Core.Unittests](src/fsharp/FSharp.Core.Unittests) - Validation of the core F# types and the public surface area of `FSharp.Core.dll`.
+* [FSharp.Core.UnitTests](tests/FSharp.Core.UnitTests) - Validation of the core F# types and the public surface area of `FSharp.Core.dll`.
-* [FSharp.Compiler.Unittests](src/fsharp/FSharp.Compiler.Unittests) - Validation of compiler internals.
+* [FSharp.Compiler.UnitTests](tests/FSharp.Compiler.UnitTests) - Validation of compiler internals.
* [VisualFSharp.UnitTests](vsintegration/tests/unittests) - Visual F# Tools IDE Unit Test Suite
This suite exercises a wide range of behaviors in the F# Visual Studio project system and language service.
@@ -38,35 +37,44 @@ The F# tests are split as follows:
This is compiled using [tests\fsharp\FSharp.Tests.FSharpSuite.fsproj](tests/fsharp/FSharp.Tests.FSharpSuite.fsproj) to a unit test DLL which acts as a driver script. Each individual test is an NUnit test case, and so you can run it like any other NUnit test.
+ .\build.cmd net40 test-net40-fsharp
+
Tests are grouped in folders per area. Each test compiles and executes a `test.fsx|fs` file in its folder using some combination of compiler or FSI flags specified in the FSharpSuite test project.
-If the compilation and execution encounter no errors, the test is considered to have passed.
+If the compilation and execution encounter no errors, the test is considered to have passed.
+
+There are also negative tests checking code expected to fail compilation. See note about baseline under "Other Tips" bellow for tests checking expectations against "baseline" files.
### FSharpQA Suite
+The FSharpQA suite relies on [Perl](http://www.perl.org/get.html), StrawberryPerl64 package from nuget is used automatically by the test suite.
+
These tests use the `RunAll.pl` framework to execute, however the easiest way to run them is via the `build.cmd` script, see [usage examples](https://github.com/Microsoft/visualfsharp/blob/master/build.cmd#L31).
Tests are grouped in folders per area. Each folder contains a number of source code files and a single `env.lst` file. The `env.lst` file defines a series of test cases, one per line.
-Each test case runs an optional "pre command," compiles a given set of source files using given flags, optionally runs the resulting binary, then optionally runs a final "post command."
+
+Each test case runs an optional "pre command," compiles a given set of source files using given flags, optionally runs the resulting binary, then optionally runs a final "post command".
+
If all of these steps complete without issue, the test is considered to have passed.
+Read more at [tests/fsharpqa/readme.md](tests/fsharpqa/readme.md).
+
#### Test lists
For the FSharpQA suite, the list of test areas and their associated "tags" is stored at
tests\fsharpqa\source\test.lst // FSharpQA suite
-Tags are in the left column, paths to to corresponding test folders are in the right column. If no tags are specifie, all tests will be run.
+Tags are in the left column, paths to to corresponding test folders are in the right column. If no tags are specified, all tests will be run.
If you want to re-run a particular test area, the easiest way to do so is to set a temporary tag for that area in test.lst (e.g. "RERUN") and then pass that as an argument to `build.cmd`: `build.cmd test-net40-fsharpqa include RERUN`.
-### FSharp.Compiler.Unittests, FSharp.Core.Unittests, VisualFSharp.Unittests
+### FSharp.Compiler.UnitTests, FSharp.Core.UnitTests, VisualFSharp.UnitTests
These are all NUnit tests. You can execute these tests individually via the Visual Studio NUnit3 runner
extension or the command line via `nunit3-console.exe`.
Note that for compatibility reasons, the IDE unit tests should be run in a 32-bit process,
-using the '--x86' flag to `nunit3-console.exe`
-
+using the `--x86` flag to `nunit3-console.exe`
### Logs and output
@@ -79,11 +87,29 @@ All test execution logs and result files will be dropped into the `tests\TestRes
net40-coreunit-suite-*.*
vs-ideunit-suite-*.*
+### Baselines
+
+FSharp Test Suite works with couples of .bsl (or .bslpp) files considered "expected" and called baseline, those are matched against the actual output which resides under .err or .vserr files of same name at the during test execution.
+When doing so keep in mind to carefully review the diff before comitting updated baseline files.
+.bslpp (baseline pre-process) files are specially designed to enable substitution of certain tokens to generate the .bsl file. You can look further about the pre-processing logic under [tests/fsharp/TypeProviderTests.fs](tests/fsharp/TypeProviderTests.fs), this is used only for type provider tests for now.
+
+To update baselines use this:
+
+ fsi tests\scripts\update-baselines.fsx
+
+Use `-n` to dry-run:
+
+ fsi tests\scripts\update-baselines.fsx -n
+
### Other Tips
-* Run as Administrator, or a handful of tests will fail
+#### Run as Administrator
+
+Do this, or a handful of tests will fail.
+
+#### Making the tests run faster
+
+* NGen-ing the F# bits (fsc, fsi, FSharp.Core, etc) will result in tests executing much faster. Make sure you run `src\update.cmd` with the `-ngen` flag before running tests.
+* The FSharp and FSharpQA suites will run test cases in parallel by default. You can comment out the relevant line (look for `PARALLEL_ARG`) to disable this.
+* By default, tests from the FSharpQA suite are run using a persistent, hosted version of the compiler. This speeds up test execution, as there is no need for the `fsc.exe` process to spin up repeatedly. To disable this, uncomment the relevant line (look for `HOSTED_COMPILER`).
-* Making the tests run faster
- * NGen-ing the F# bits (fsc, fsi, FSharp.Core, etc) will result in tests executing much faster. Make sure you run `src\update.cmd` with the `-ngen` flag before running tests.
- * The FSharp and FSharpQA suites will run test cases in parallel by default. You can comment out the relevant line (look for `PARALLEL_ARG`) to disable this.
- * By default, tests from the FSharpQA suite are run using a persistent, hosted version of the compiler. This speeds up test execution, as there is no need for the `fsc.exe` process to spin up repeatedly. To disable this, uncomment the relevant line (look for `HOSTED_COMPILER`).
diff --git a/VisualFSharp.sln b/VisualFSharp.sln
index 5f0ba007e8f..ea9bbe592d7 100644
--- a/VisualFSharp.sln
+++ b/VisualFSharp.sln
@@ -1,62 +1,61 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-VisualStudioVersion = 15.0.27116.0
+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}"
+EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "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.VS.FSI", "vsintegration\src\FSharp.VS.FSI\FSharp.VS.FSI.fsproj", "{991DCF75-C2EB-42B6-9A0D-AA1D2409D519}"
- ProjectSection(ProjectDependencies) = postProject
- {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3} = {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}
- EndProjectSection
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VisualFSharpFull", "vsintegration\Vsix\VisualFSharpFull\VisualFSharpFull.csproj", "{59ADCE46-9740-4079-834D-9A03A3494EBC}"
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}"
EndProject
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.LanguageService", "vsintegration\src\FSharp.LanguageService\FSharp.LanguageService.fsproj", "{EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F}"
+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}") = "FSharp.LanguageService.Base", "vsintegration\src\FSharp.LanguageService.Base\FSharp.LanguageService.Base.csproj", "{1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF}"
+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}") = "FSharp.Editor", "vsintegration\src\FSharp.Editor\FSharp.Editor.fsproj", "{65E0E82A-EACE-4787-8994-888674C2FE87}"
+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}") = "ProjectSystem.Base", "vsintegration\src\FSharp.ProjectSystem.Base\Project\ProjectSystem.Base.csproj", "{B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProjectSystem.Base", "vsintegration\src\FSharp.ProjectSystem.Base\Project\ProjectSystem.Base.csproj", "{B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "FSharp.PropertiesPages", "vsintegration\src\FSharp.ProjectSystem.PropertyPages\FSharp.PropertiesPages.vbproj", "{FCFB214C-462E-42B3-91CA-FC557EFEE74F}"
EndProject
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "ProjectSystem", "vsintegration\src\FSharp.ProjectSystem.FSharp\ProjectSystem.fsproj", "{6196B0F8-CAEA-4CF1-AF82-1B520F77FE44}"
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "ProjectSystem", "vsintegration\src\FSharp.ProjectSystem.FSharp\ProjectSystem.fsproj", "{6196B0F8-CAEA-4CF1-AF82-1B520F77FE44}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ProjectTemplates", "ProjectTemplates", "{C9B1D3F5-4971-4F04-9C26-37E3AC809AB4}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{CFE3259A-2D30-4EB0-80D5-E8B5F3D01449}"
EndProject
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "VisualFSharp.Salsa", "vsintegration\tests\Salsa\VisualFSharp.Salsa.fsproj", "{FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7}"
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "VisualFSharp.Salsa", "vsintegration\tests\Salsa\VisualFSharp.Salsa.fsproj", "{FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7}"
EndProject
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "VisualFSharp.Unittests", "vsintegration\tests\unittests\VisualFSharp.Unittests.fsproj", "{EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}"
+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}") = "DefinitionLocationAttribute", "vsintegration\tests\unittests\MockTypeProviders\DefinitionLocationAttribute\DefinitionLocationAttribute.csproj", "{DA39AD38-4A58-47BF-9215-E49768295169}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DefinitionLocationAttribute", "vsintegration\tests\MockTypeProviders\DefinitionLocationAttribute\DefinitionLocationAttribute.csproj", "{DA39AD38-4A58-47BF-9215-E49768295169}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DefinitionLocationAttributeFileDoesnotExist", "vsintegration\tests\unittests\MockTypeProviders\DefinitionLocationAttributeFileDoesnotExist\DefinitionLocationAttributeFileDoesnotExist.csproj", "{8C2439BD-0E49-4929-A8B1-29CEE228191E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DefinitionLocationAttributeFileDoesnotExist", "vsintegration\tests\MockTypeProviders\DefinitionLocationAttributeFileDoesnotExist\DefinitionLocationAttributeFileDoesnotExist.csproj", "{8C2439BD-0E49-4929-A8B1-29CEE228191E}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DefinitionLocationAttributeLineDoesnotExist", "vsintegration\tests\unittests\MockTypeProviders\DefinitionLocationAttributeLineDoesnotExist\DefinitionLocationAttributeLineDoesnotExist.csproj", "{F47196DC-186D-4055-BAF2-658282A12F33}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DefinitionLocationAttributeLineDoesnotExist", "vsintegration\tests\MockTypeProviders\DefinitionLocationAttributeLineDoesnotExist\DefinitionLocationAttributeLineDoesnotExist.csproj", "{F47196DC-186D-4055-BAF2-658282A12F33}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DefinitionLocationAttributeWithSpaceInTheType", "vsintegration\tests\unittests\MockTypeProviders\DefinitionLocationAttributeWithSpaceInTheType\DefinitionLocationAttributeWithSpaceInTheType.csproj", "{D4C88934-5893-467E-A55C-A11ECD6479FE}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DefinitionLocationAttributeWithSpaceInTheType", "vsintegration\tests\MockTypeProviders\DefinitionLocationAttributeWithSpaceInTheType\DefinitionLocationAttributeWithSpaceInTheType.csproj", "{D4C88934-5893-467E-A55C-A11ECD6479FE}"
EndProject
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "DummyProviderForLanguageServiceTesting", "vsintegration\tests\unittests\MockTypeProviders\DummyProviderForLanguageServiceTesting\DummyProviderForLanguageServiceTesting.fsproj", "{6AFF752D-E991-4A08-9ED2-5BF46B0E0F8B}"
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "DummyProviderForLanguageServiceTesting", "vsintegration\tests\MockTypeProviders\DummyProviderForLanguageServiceTesting\DummyProviderForLanguageServiceTesting.fsproj", "{6AFF752D-E991-4A08-9ED2-5BF46B0E0F8B}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EditorHideMethodsAttribute", "vsintegration\tests\unittests\MockTypeProviders\EditorHideMethodsAttribute\EditorHideMethodsAttribute.csproj", "{0B9CDEAF-EE8F-45E0-A4E0-34A8ED6DD09E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EditorHideMethodsAttribute", "vsintegration\tests\MockTypeProviders\EditorHideMethodsAttribute\EditorHideMethodsAttribute.csproj", "{0B9CDEAF-EE8F-45E0-A4E0-34A8ED6DD09E}"
EndProject
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "EmptyAssembly", "vsintegration\tests\unittests\MockTypeProviders\EmptyAssembly\EmptyAssembly.fsproj", "{004982C6-93EA-4E70-B4F0-BE7D7219926A}"
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "EmptyAssembly", "vsintegration\tests\MockTypeProviders\EmptyAssembly\EmptyAssembly.fsproj", "{004982C6-93EA-4E70-B4F0-BE7D7219926A}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlDocAttributeWithAdequateComment", "vsintegration\tests\unittests\MockTypeProviders\XmlDocAttributeWithAdequateComment\XmlDocAttributeWithAdequateComment.csproj", "{243A81AC-A954-4601-833A-60EEEFB00FCD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlDocAttributeWithAdequateComment", "vsintegration\tests\MockTypeProviders\XmlDocAttributeWithAdequateComment\XmlDocAttributeWithAdequateComment.csproj", "{243A81AC-A954-4601-833A-60EEEFB00FCD}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlDocAttributeWithEmptyComment", "vsintegration\tests\unittests\MockTypeProviders\XmlDocAttributeWithEmptyComment\XmlDocAttributeWithEmptyComment.csproj", "{B4595EB6-053A-400E-AA1B-7727F1BC900F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlDocAttributeWithEmptyComment", "vsintegration\tests\MockTypeProviders\XmlDocAttributeWithEmptyComment\XmlDocAttributeWithEmptyComment.csproj", "{B4595EB6-053A-400E-AA1B-7727F1BC900F}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlDocAttributeWithLocalizedComment", "vsintegration\tests\unittests\MockTypeProviders\XmlDocAttributeWithLocalizedComment\XmlDocAttributeWithLocalizedComment.csproj", "{A559D7E8-7EFD-473A-B618-A10B41AB523B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlDocAttributeWithLocalizedComment", "vsintegration\tests\MockTypeProviders\XmlDocAttributeWithLocalizedComment\XmlDocAttributeWithLocalizedComment.csproj", "{A559D7E8-7EFD-473A-B618-A10B41AB523B}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlDocAttributeWithLongComment", "vsintegration\tests\unittests\MockTypeProviders\XmlDocAttributeWithLongComment\XmlDocAttributeWithLongComment.csproj", "{AC85EE6D-033C-45F9-B8BA-884BC22EC6D9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlDocAttributeWithLongComment", "vsintegration\tests\MockTypeProviders\XmlDocAttributeWithLongComment\XmlDocAttributeWithLongComment.csproj", "{AC85EE6D-033C-45F9-B8BA-884BC22EC6D9}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlDocAttributeWithNullComment", "vsintegration\tests\unittests\MockTypeProviders\XmlDocAttributeWithNullComment\XmlDocAttributeWithNullComment.csproj", "{956BBE41-ABD1-4DBA-9F3B-BA1C9821C98C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlDocAttributeWithNullComment", "vsintegration\tests\MockTypeProviders\XmlDocAttributeWithNullComment\XmlDocAttributeWithNullComment.csproj", "{956BBE41-ABD1-4DBA-9F3B-BA1C9821C98C}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Build", "src\fsharp\FSharp.Build\FSharp.Build.fsproj", "{702A7979-BCF9-4C41-853E-3ADFC9897890}"
EndProject
@@ -65,24 +64,21 @@ 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}"
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
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "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}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "VisualFSharp.Unittests Support", "VisualFSharp.Unittests Support", "{3F044931-FB83-4433-B934-AE66AB27B278}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "VisualFSharp.UnitTests Support", "VisualFSharp.UnitTests Support", "{3F044931-FB83-4433-B934-AE66AB27B278}"
EndProject
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Unittests", "src\fsharp\FSharp.Compiler.Unittests\FSharp.Compiler.Unittests.fsproj", "{A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}"
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "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", "src\fsharp\FSharp.Core.Unittests\FSharp.Core.Unittests.fsproj", "{88E2D422-6852-46E3-A740-83E391DC7973}"
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Core.UnitTests", "tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj", "{88E2D422-6852-46E3-A740-83E391DC7973}"
EndProject
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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Compiler", "Compiler", "{3881429D-A97A-49EB-B7AE-A82BA5FE9C77}"
EndProject
@@ -112,21 +108,15 @@ 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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Vsix", "Vsix", "{141F6C23-E1B1-4D89-9F10-F0B8AD58E71F}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisualFSharpFull", "vsintegration\Vsix\VisualFSharpFull\VisualFSharpFull.csproj", "{59ADCE46-9740-4079-834D-9A03A3494EBC}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisualFSharpOpenSource", "vsintegration\Vsix\VisualFSharpOpenSource\VisualFSharpOpenSource.csproj", "{E6A45CDF-B408-420F-B475-74611BEFC52B}"
-EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "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}"
EndProject
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "LanguageServiceProfiling", "vsintegration\Utils\LanguageServiceProfiling\LanguageServiceProfiling.fsproj", "{E7FA3A71-51AF-4FCA-9C2F-7C853E515903}"
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "LanguageServiceProfiling", "vsintegration\Utils\LanguageServiceProfiling\LanguageServiceProfiling.fsproj", "{E7FA3A71-51AF-4FCA-9C2F-7C853E515903}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FSharp.UIResources", "vsintegration\src\FSharp.UIResources\FSharp.UIResources.csproj", "{C4586A06-1402-48BC-8E35-A1B8642F895B}"
+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}"
EndProject
@@ -136,52 +126,52 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "TestTP", "tests\service\dat
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", "src\fsharp\FSharp.Build.UnitTests\FSharp.Build.UnitTests.fsproj", "{400FAB03-786E-40CC-85A8-04B0C2869B14}"
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "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}"
+EndProject
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "GetTypesVSUnitTests", "vsintegration\tests\GetTypesVSUnitTests\GetTypesVSUnitTests.fsproj", "{6D93CEBD-4540-4D96-A153-B440A661FD09}"
+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
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {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}.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
{991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{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 = Proto|Any CPU
- {991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Proto|x86.ActiveCfg = Proto|Any CPU
- {991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Proto|x86.Build.0 = Proto|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
{991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Release|x86.Build.0 = Release|Any CPU
+ {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {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}.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
+ {59ADCE46-9740-4079-834D-9A03A3494EBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {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}.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
+ {59ADCE46-9740-4079-834D-9A03A3494EBC}.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
@@ -190,10 +180,6 @@ 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 = 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}.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
@@ -202,10 +188,6 @@ 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 = Proto|Any CPU
- {EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F}.Proto|x86.ActiveCfg = Proto|Any CPU
- {EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F}.Proto|x86.Build.0 = Proto|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
@@ -214,10 +196,6 @@ 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 = Proto|Any CPU
- {1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF}.Proto|x86.ActiveCfg = Proto|Any CPU
- {1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF}.Proto|x86.Build.0 = Proto|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
@@ -226,10 +204,6 @@ 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 = Proto|Any CPU
- {65E0E82A-EACE-4787-8994-888674C2FE87}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {65E0E82A-EACE-4787-8994-888674C2FE87}.Proto|x86.ActiveCfg = Proto|Any CPU
- {65E0E82A-EACE-4787-8994-888674C2FE87}.Proto|x86.Build.0 = Proto|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
@@ -238,10 +212,6 @@ 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 = Proto|Any CPU
- {B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7}.Proto|x86.ActiveCfg = Proto|Any CPU
- {B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7}.Proto|x86.Build.0 = Proto|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
@@ -250,10 +220,6 @@ 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
@@ -262,10 +228,6 @@ 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 = Proto|Any CPU
- {6196B0F8-CAEA-4CF1-AF82-1B520F77FE44}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {6196B0F8-CAEA-4CF1-AF82-1B520F77FE44}.Proto|x86.ActiveCfg = Proto|Any CPU
- {6196B0F8-CAEA-4CF1-AF82-1B520F77FE44}.Proto|x86.Build.0 = Proto|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
@@ -274,10 +236,6 @@ 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 = Proto|Any CPU
- {FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7}.Proto|x86.ActiveCfg = Proto|Any CPU
- {FBD4B354-DC6E-4032-8EC7-C81D8DFB1AF7}.Proto|x86.Build.0 = Proto|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
@@ -286,10 +244,6 @@ 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 = Proto|Any CPU
- {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Proto|x86.ActiveCfg = Proto|Any CPU
- {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Proto|x86.Build.0 = Proto|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
@@ -298,10 +252,6 @@ 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 = Proto|Any CPU
- {DA39AD38-4A58-47BF-9215-E49768295169}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {DA39AD38-4A58-47BF-9215-E49768295169}.Proto|x86.ActiveCfg = Proto|Any CPU
- {DA39AD38-4A58-47BF-9215-E49768295169}.Proto|x86.Build.0 = Proto|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
@@ -310,10 +260,6 @@ 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 = Proto|Any CPU
- {8C2439BD-0E49-4929-A8B1-29CEE228191E}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {8C2439BD-0E49-4929-A8B1-29CEE228191E}.Proto|x86.ActiveCfg = Proto|Any CPU
- {8C2439BD-0E49-4929-A8B1-29CEE228191E}.Proto|x86.Build.0 = Proto|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
@@ -322,10 +268,6 @@ 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 = Proto|Any CPU
- {F47196DC-186D-4055-BAF2-658282A12F33}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {F47196DC-186D-4055-BAF2-658282A12F33}.Proto|x86.ActiveCfg = Proto|Any CPU
- {F47196DC-186D-4055-BAF2-658282A12F33}.Proto|x86.Build.0 = Proto|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
@@ -334,10 +276,6 @@ 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 = Proto|Any CPU
- {D4C88934-5893-467E-A55C-A11ECD6479FE}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {D4C88934-5893-467E-A55C-A11ECD6479FE}.Proto|x86.ActiveCfg = Proto|Any CPU
- {D4C88934-5893-467E-A55C-A11ECD6479FE}.Proto|x86.Build.0 = Proto|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
@@ -346,10 +284,6 @@ 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 = Proto|Any CPU
- {6AFF752D-E991-4A08-9ED2-5BF46B0E0F8B}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {6AFF752D-E991-4A08-9ED2-5BF46B0E0F8B}.Proto|x86.ActiveCfg = Proto|Any CPU
- {6AFF752D-E991-4A08-9ED2-5BF46B0E0F8B}.Proto|x86.Build.0 = Proto|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
@@ -358,10 +292,6 @@ 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 = Proto|Any CPU
- {0B9CDEAF-EE8F-45E0-A4E0-34A8ED6DD09E}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {0B9CDEAF-EE8F-45E0-A4E0-34A8ED6DD09E}.Proto|x86.ActiveCfg = Proto|Any CPU
- {0B9CDEAF-EE8F-45E0-A4E0-34A8ED6DD09E}.Proto|x86.Build.0 = Proto|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
@@ -370,10 +300,6 @@ 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 = Proto|Any CPU
- {004982C6-93EA-4E70-B4F0-BE7D7219926A}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {004982C6-93EA-4E70-B4F0-BE7D7219926A}.Proto|x86.ActiveCfg = Proto|Any CPU
- {004982C6-93EA-4E70-B4F0-BE7D7219926A}.Proto|x86.Build.0 = Proto|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
@@ -382,10 +308,6 @@ 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 = Proto|Any CPU
- {243A81AC-A954-4601-833A-60EEEFB00FCD}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {243A81AC-A954-4601-833A-60EEEFB00FCD}.Proto|x86.ActiveCfg = Proto|Any CPU
- {243A81AC-A954-4601-833A-60EEEFB00FCD}.Proto|x86.Build.0 = Proto|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
@@ -394,10 +316,6 @@ 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 = Proto|Any CPU
- {B4595EB6-053A-400E-AA1B-7727F1BC900F}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {B4595EB6-053A-400E-AA1B-7727F1BC900F}.Proto|x86.ActiveCfg = Proto|Any CPU
- {B4595EB6-053A-400E-AA1B-7727F1BC900F}.Proto|x86.Build.0 = Proto|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
@@ -406,10 +324,6 @@ 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 = Proto|Any CPU
- {A559D7E8-7EFD-473A-B618-A10B41AB523B}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {A559D7E8-7EFD-473A-B618-A10B41AB523B}.Proto|x86.ActiveCfg = Proto|Any CPU
- {A559D7E8-7EFD-473A-B618-A10B41AB523B}.Proto|x86.Build.0 = Proto|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
@@ -418,10 +332,6 @@ 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 = Proto|Any CPU
- {AC85EE6D-033C-45F9-B8BA-884BC22EC6D9}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {AC85EE6D-033C-45F9-B8BA-884BC22EC6D9}.Proto|x86.ActiveCfg = Proto|Any CPU
- {AC85EE6D-033C-45F9-B8BA-884BC22EC6D9}.Proto|x86.Build.0 = Proto|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
@@ -430,10 +340,6 @@ 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 = Proto|Any CPU
- {956BBE41-ABD1-4DBA-9F3B-BA1C9821C98C}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {956BBE41-ABD1-4DBA-9F3B-BA1C9821C98C}.Proto|x86.ActiveCfg = Proto|Any CPU
- {956BBE41-ABD1-4DBA-9F3B-BA1C9821C98C}.Proto|x86.Build.0 = Proto|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
@@ -442,10 +348,6 @@ 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}.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
@@ -454,10 +356,6 @@ 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}.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
@@ -466,10 +364,6 @@ 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}.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
@@ -478,10 +372,6 @@ 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 = 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
@@ -490,10 +380,6 @@ 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 = 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}.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
@@ -502,10 +388,6 @@ 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}.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
@@ -514,10 +396,6 @@ 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}.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
@@ -526,10 +404,6 @@ 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}.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
@@ -538,10 +412,6 @@ Global
{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}.Proto|Any CPU.ActiveCfg = Proto|Any CPU
- {604F0DAA-2D33-48DD-B162-EDF0B672803D}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {604F0DAA-2D33-48DD-B162-EDF0B672803D}.Proto|x86.ActiveCfg = Proto|Any CPU
- {604F0DAA-2D33-48DD-B162-EDF0B672803D}.Proto|x86.Build.0 = Proto|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
@@ -550,10 +420,6 @@ Global
{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}.Proto|Any CPU.ActiveCfg = Proto|Any CPU
- {01678CDA-A11F-4DEE-9344-2EDF91CF1AE7}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {01678CDA-A11F-4DEE-9344-2EDF91CF1AE7}.Proto|x86.ActiveCfg = Proto|Any CPU
- {01678CDA-A11F-4DEE-9344-2EDF91CF1AE7}.Proto|x86.Build.0 = Proto|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
@@ -562,10 +428,6 @@ Global
{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}.Proto|Any CPU.ActiveCfg = Proto|Any CPU
- {2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4}.Proto|x86.ActiveCfg = Proto|Any CPU
- {2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4}.Proto|x86.Build.0 = Proto|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
@@ -574,10 +436,6 @@ Global
{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
@@ -586,10 +444,6 @@ 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
@@ -598,10 +452,6 @@ 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
@@ -610,10 +460,6 @@ 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
@@ -622,10 +468,6 @@ 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
@@ -634,46 +476,14 @@ 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
{1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6}.Release|x86.Build.0 = Release|Any CPU
- {59ADCE46-9740-4079-834D-9A03A3494EBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {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 = Proto|Any CPU
- {59ADCE46-9740-4079-834D-9A03A3494EBC}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {59ADCE46-9740-4079-834D-9A03A3494EBC}.Proto|x86.ActiveCfg = Proto|Any CPU
- {59ADCE46-9740-4079-834D-9A03A3494EBC}.Proto|x86.Build.0 = Proto|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
- {59ADCE46-9740-4079-834D-9A03A3494EBC}.Release|x86.Build.0 = Release|Any CPU
- {E6A45CDF-B408-420F-B475-74611BEFC52B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E6A45CDF-B408-420F-B475-74611BEFC52B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E6A45CDF-B408-420F-B475-74611BEFC52B}.Debug|x86.ActiveCfg = Debug|Any CPU
- {E6A45CDF-B408-420F-B475-74611BEFC52B}.Debug|x86.Build.0 = Debug|Any CPU
- {E6A45CDF-B408-420F-B475-74611BEFC52B}.Proto|Any CPU.ActiveCfg = Proto|Any CPU
- {E6A45CDF-B408-420F-B475-74611BEFC52B}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {E6A45CDF-B408-420F-B475-74611BEFC52B}.Proto|x86.ActiveCfg = Proto|Any CPU
- {E6A45CDF-B408-420F-B475-74611BEFC52B}.Proto|x86.Build.0 = Proto|Any CPU
- {E6A45CDF-B408-420F-B475-74611BEFC52B}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E6A45CDF-B408-420F-B475-74611BEFC52B}.Release|Any CPU.Build.0 = Release|Any CPU
- {E6A45CDF-B408-420F-B475-74611BEFC52B}.Release|x86.ActiveCfg = Release|Any CPU
- {E6A45CDF-B408-420F-B475-74611BEFC52B}.Release|x86.Build.0 = Release|Any CPU
{4239EFEA-E746-446A-BF7A-51FCBAB13946}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{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 = Proto|Any CPU
- {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Proto|x86.ActiveCfg = Proto|Any CPU
- {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Proto|x86.Build.0 = Proto|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
@@ -682,10 +492,6 @@ 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 = Proto|Any CPU
- {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Proto|x86.ActiveCfg = Proto|Any CPU
- {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Proto|x86.Build.0 = Proto|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
@@ -694,10 +500,6 @@ 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 = Proto|Any CPU
- {E7FA3A71-51AF-4FCA-9C2F-7C853E515903}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {E7FA3A71-51AF-4FCA-9C2F-7C853E515903}.Proto|x86.ActiveCfg = Proto|Any CPU
- {E7FA3A71-51AF-4FCA-9C2F-7C853E515903}.Proto|x86.Build.0 = Proto|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
@@ -706,10 +508,6 @@ 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 = Proto|Any CPU
- {C4586A06-1402-48BC-8E35-A1B8642F895B}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {C4586A06-1402-48BC-8E35-A1B8642F895B}.Proto|x86.ActiveCfg = Proto|Any CPU
- {C4586A06-1402-48BC-8E35-A1B8642F895B}.Proto|x86.Build.0 = Proto|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
@@ -718,10 +516,6 @@ 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
@@ -730,10 +524,6 @@ 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 = Proto|Any CPU
- {FF76BD3C-5E0A-4752-B6C3-044F6E15719B}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {FF76BD3C-5E0A-4752-B6C3-044F6E15719B}.Proto|x86.ActiveCfg = Proto|Any CPU
- {FF76BD3C-5E0A-4752-B6C3-044F6E15719B}.Proto|x86.Build.0 = Proto|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
@@ -742,10 +532,6 @@ 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
@@ -754,10 +540,6 @@ 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 = Proto|Any CPU
- {400FAB03-786E-40CC-85A8-04B0C2869B14}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {400FAB03-786E-40CC-85A8-04B0C2869B14}.Proto|x86.ActiveCfg = Proto|Any CPU
- {400FAB03-786E-40CC-85A8-04B0C2869B14}.Proto|x86.Build.0 = Proto|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
@@ -766,29 +548,42 @@ 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 = Debug|Any CPU
- {B0689A4E-07D8-494D-A0C8-791CB1D74E54}.Proto|Any CPU.Build.0 = Debug|Any CPU
- {B0689A4E-07D8-494D-A0C8-791CB1D74E54}.Proto|x86.ActiveCfg = Debug|Any CPU
- {B0689A4E-07D8-494D-A0C8-791CB1D74E54}.Proto|x86.Build.0 = Debug|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
{B0689A4E-07D8-494D-A0C8-791CB1D74E54}.Release|x86.Build.0 = Release|Any CPU
+ {18227628-DF90-4C47-AF3D-CC72D2EDD986}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {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}.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
+ {18227628-DF90-4C47-AF3D-CC72D2EDD986}.Release|x86.Build.0 = Release|Any CPU
+ {6D93CEBD-4540-4D96-A153-B440A661FD09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {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}.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
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3} = {3881429D-A97A-49EB-B7AE-A82BA5FE9C77}
{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}
{D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06} = {B8DDA694-7939-42E3-95E5-265C2217C142}
{DED3BBD7-53F4-428A-8C9F-27968E768605} = {3058BC79-8E79-4645-B05D-48CC182FA8A6}
{EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D}
{1C5C163C-37EA-4A3C-8CCC-0D34B74BF8EF} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D}
{65E0E82A-EACE-4787-8994-888674C2FE87} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D}
- {B700E38B-F8C0-4E49-B5EC-DB7B7AC0C4E7} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D}
+ {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} = {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}
@@ -824,9 +619,6 @@ Global
{E3FDD4AC-46B6-4B9F-B672-317D1202CC50} = {F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA}
{D11FC318-8F5D-4C8C-9287-AB40A016D13C} = {F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA}
{1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6} = {F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA}
- {141F6C23-E1B1-4D89-9F10-F0B8AD58E71F} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D}
- {59ADCE46-9740-4079-834D-9A03A3494EBC} = {141F6C23-E1B1-4D89-9F10-F0B8AD58E71F}
- {E6A45CDF-B408-420F-B475-74611BEFC52B} = {141F6C23-E1B1-4D89-9F10-F0B8AD58E71F}
{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}
@@ -838,6 +630,9 @@ Global
{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}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {48EDBBBE-C8EE-4E3C-8B19-97184A487B37}
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index edc393b00e3..00000000000
--- a/autogen.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env sh
-
-which autoreconf > /dev/null || (echo "Please install autoconf" && exit 1)
-autoreconf && ./configure $@
diff --git a/before_install.sh b/before_install.sh
deleted file mode 100755
index d1498a55e64..00000000000
--- a/before_install.sh
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/bin/sh
-
-# OS detection
-
-OSName=$(uname -s)
-case $OSName in
- Darwin)
- OS=OSX
- ;;
-
- Linux)
- OS=Linux
- ;;
-
- *)
- echo "Unsupported OS '$OSName' detected. Cannot continue with build, the scripts must be updated to support this OS."
- exit 1
- ;;
-esac
-
-# On Linux (or at least, Ubuntu), when building with Mono, need to install the mono-devel package first.
-if [ $OS = 'Linux' ]; then
- sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
- echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
- sudo apt-get update
- sudo apt-get -y install mono-devel autoconf libtool pkg-config make git
-fi
-
-# Check if SSL certificates have been imported into Mono's certificate store.
-# If certs haven't been installed, some/all of the Nuget packages will fail to restore.
-# Note, the result of the certmgr and grep commands returns the number of installed X.509 certificates.
-# We need to run the command twice -- on some systems (e.g. macOS) the certs are installed in the user store,
-# and on other systems (e.g., Ubuntu) they're installed to the machine store. certmgr only shows what's in
-# the selected store, which is why we need to check both.
-if [ "$(certmgr -list -c Trust | grep -c -F "X.509")" -le 1 ] && [ "$(certmgr -list -c -m Trust | grep -c -F "X.509")" -le 1 ]; then
- echo "No SSL certificates installed so unable to restore NuGet packages." >&2;
- echo "Run 'mozroots --sync --import' to install certificates to Mono's certificate store." >&2;
- exit 1
-fi
-
-# Restore NuGet packages (needed for compiler bootstrap and tests).
-mono .nuget/NuGet.exe restore packages.config -PackagesDirectory packages -ConfigFile .nuget/NuGet.Config
-
-(if test x-$BUILD_CORECLR = x-1; then \
- sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list'; \
- sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893; \
- sudo apt-get update; \
- sudo apt-get -y install dotnet-dev-1.0.0-preview2-003131; \
- (cd tests/fsharp; mono ../../.nuget/NuGet.exe restore project.json -PackagesDirectory ../../packages -ConfigFile ../../.nuget/NuGet.Config); \
- ./init-tools.sh; \
- echo "------ start log"; \
- cat ./init-tools.log; echo "------ end log"; \
-fi)
-
-(if test x-$BUILD_PROTO_WITH_CORECLR_LKG = x-1; then \
- (cd lkg/fsc && dotnet restore --packages ../packages && dotnet publish project.json -o ../Tools/lkg -r ubuntu.14.04-x64); \
- (cd lkg/fsi && dotnet restore --packages ../packages && dotnet publish project.json -o ../Tools/lkg -r ubuntu.14.04-x64); \
-fi)
-
-#TODO: work out how to avoid the need for this
-chmod u+x packages/FSharp.Compiler.Tools.4.1.27/tools/fsi.exe
-chmod u+x packages/FsLexYacc.7.0.6/build/fslex.exe
-chmod u+x packages/FsLexYacc.7.0.6/build/fsyacc.exe
-
-# The FSharp.Compiler.Tools package doesn't work correctly unless a proper install of F# has been done on the machine.
-# OSX can skip this because the OSX Mono installer includes F#.
-if [ $OS != 'OSX' ]; then
- sudo apt-get -y install fsharp
-fi
-
-# "access to the path /etc/mono/registry/last-time is denied"
-# On non-OSX systems, may need to create Mono's registry folder to avoid exceptions during builds.
-# This doesn't seem to be necessary on OSX, as the folder is created by the installer.
-if [ $OS != 'OSX' ]; then
- # This registry folder path is correct for Linux;
- # on OSX the folder is /Library/Frameworks/Mono.framework/Versions/Current/etc/mono/registry
- # and may be different for *BSD systems.
- __MonoRegistryDir="/etc/mono/registry"
- if [ ! -d "$__MonoRegistryDir" ]; then
- echo "Mono registry directory does not exist (it may not have been created yet)."
- echo "The directory needs to be created now; superuser permissions are required for this."
- { sudo -- sh -c "mkdir -p $__MonoRegistryDir && chmod uog+rw $__MonoRegistryDir"; } || { echo "Unable to create/chmod Mono registry directory '$__MonoRegistryDir'." >&2; }
- fi
-fi
diff --git a/build-everything.proj b/build-everything.proj
index 07e2fcbc687..caba4fd173e 100644
--- a/build-everything.proj
+++ b/build-everything.proj
@@ -24,70 +24,108 @@
-
-
+
+
-
+
+
+ true
+ true
+ true
+ true
+ true
+
+
-
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
-
-
+
+
-
+
+
-
-
+
+ true
+
+
+
+ true
+
+
+
+
+
+
+
+
+
-
+
+
+
-
-
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
@@ -124,3 +162,4 @@
+
diff --git a/build-nuget-packages.proj b/build-nuget-packages.proj
new file mode 100644
index 00000000000..2aab5455e93
--- /dev/null
+++ b/build-nuget-packages.proj
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build.cmd b/build.cmd
index 1cf2de6040e..cc4283d19aa 100644
--- a/build.cmd
+++ b/build.cmd
@@ -1,5 +1,5 @@
rem Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
-@if "%_echo%"=="" echo off
+@if "%_echo%"=="" echo off
setlocal enableDelayedExpansion
@@ -17,12 +17,12 @@ echo Build and run a subset of test suites
echo.
echo Usage:
echo.
-echo build.cmd ^
+echo build.cmd ^
echo ^
-echo ^
+echo ^
echo ^
echo ^
-echo ^
+echo ^
echo ^
echo ^
echo.
@@ -64,7 +64,6 @@ set BUILD_FROMSOURCE=0
set BUILD_VS=0
set BUILD_FCS=0
set BUILD_CONFIG=release
-set BUILD_CONFIG_LOWERCASE=release
set BUILD_DIAG=
set BUILD_PUBLICSIGN=0
@@ -75,9 +74,15 @@ 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_SPEC_NUNIT=
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
@@ -114,6 +119,10 @@ if /i "%_autoselect_tests%" == "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
@@ -149,6 +158,7 @@ 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" (
@@ -168,6 +178,7 @@ 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" (
@@ -184,6 +195,7 @@ if /i "%ARG%" == "nobuild" (
)
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
@@ -205,6 +217,7 @@ if /i "%ARG%" == "microbuild" (
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
@@ -234,20 +247,22 @@ 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
+ 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 BUILD_FCS=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
+ REM what we do - test F# on .NET Framework
set BUILD_PROTO=1
set BUILD_NET40=1
set BUILD_NET40_FSHARP_CORE=1
@@ -261,20 +276,39 @@ if /i "%ARG%" == "ci_part2" (
if /i "%ARG%" == "ci_part3" (
set _autoselect=0
- REM what we do
+ 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_NUGET=1
set BUILD_NET40=1
- set BUILD_VS=1
- set BUILD_SETUP=%FSC_BUILD_SETUP%
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_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
@@ -293,6 +327,14 @@ 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
)
@@ -325,6 +367,8 @@ if /i "%ARG%" == "test-all" (
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" (
@@ -369,6 +413,12 @@ if /i "%ARG%" == "test-net40-fsharp" (
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
@@ -409,6 +459,41 @@ if /i "%PB_SKIPTESTS%" == "true" (
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
+ )
+)
+
+if /i "%BUILD_PROTO_WITH_CORECLR_LKG%" == "1" (
+ set NEEDS_DOTNET_CLI_TOOLS=1
+)
+
+if /i "%BUILD_CORECLR%" == "1" (
+ set NEEDS_DOTNET_CLI_TOOLS=1
+)
+
+if /i "%BUILD_FROMSOURCE%" == "1" (
+ set NEEDS_DOTNET_CLI_TOOLS=1
+)
+
+if /i "%BUILD_FCS%" == "1" (
+ set NEEDS_DOTNET_CLI_TOOLS=1
+)
+
+rem Decide if Proto need building
+if NOT EXIST Proto\net40\bin\fsc.exe (
+ set BUILD_PROTO=1
+)
+
+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%
@@ -423,10 +508,16 @@ 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.
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%
@@ -443,26 +534,13 @@ echo TEMP=%TEMP%
:: If this is not set, VsDevCmd.bat will change %cd% to [USERPROFILE]\source, causing the build to fail.
SET VSCMD_START_DIR=%cd%
-:: try to find an RC or RTM edition of VS2017
-if "%VS150COMNTOOLS%" EQU "" if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat" (
- call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat"
-)
-if "%VS150COMNTOOLS%" EQU "" if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat" (
- call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat"
-)
-if "%VS150COMNTOOLS%" EQU "" if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat" (
- call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat"
+:: 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
)
-:: Allow build from Preview editions
-if "%VS150COMNTOOLS%" EQU "" if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\Preview\Enterprise\Common7\Tools\VsDevCmd.bat" (
- call "%ProgramFiles(x86)%\Microsoft Visual Studio\Preview\Enterprise\Common7\Tools\VsDevCmd.bat"
-)
-if "%VS150COMNTOOLS%" EQU "" if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\Preview\Professional\Common7\Tools\VsDevCmd.bat" (
- call "%ProgramFiles(x86)%\Microsoft Visual Studio\Preview\Enterprise\Common7\Tools\VsDevCmd.bat"
-)
-if "%VS150COMNTOOLS%" EQU "" if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\Preview\Community\Common7\Tools\VsDevCmd.bat" (
- call "%ProgramFiles(x86)%\Microsoft Visual Studio\Preview\Enterprise\Common7\Tools\VsDevCmd.bat"
+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
@@ -477,8 +555,16 @@ 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
-set BuildToolsPackage=Microsoft.VSSDK.BuildTools.15.1.192
+set BuildToolsPackage=Microsoft.VSSDK.BuildTools.15.6.170
if "%VSSDKInstall%"=="" (
set VSSDKInstall=%~dp0packages\%BuildToolsPackage%\tools\vssdk
)
@@ -496,10 +582,15 @@ if "%RestorePackages%"=="" (
@echo VSSDKInstall: %VSSDKInstall%
@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
@@ -520,6 +611,10 @@ if exist "%ProgramFiles%\Microsoft Visual Studio 12.0\common7\ide\devenv.exe" se
:vsversionset
if "%VisualStudioVersion%" == "" echo Error: Could not find an installation of Visual Studio && goto :failure
+if exist "%VS160COMNTOOLS%\..\..\MSBuild\15.0\Bin\MSBuild.exe" (
+ set _msbuildexe="%VS160COMNTOOLS%\..\..\MSBuild\15.0\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
@@ -538,21 +633,6 @@ goto :eof
:havemsbuild
set _nrswitch=/nr:false
-:: See
-if defined APPVEYOR (
- rem See
- if exist "C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" (
- rem HACK HACK HACK
- set _msbuildexe=%_msbuildexe% /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
- )
-)
-
-if defined TF_BUILD (
- echo Adding remote 'visualfsharptools' for internal build.
- git remote add visualfsharptools https://github.com/Microsoft/visualfsharp.git
- git fetch --all
-)
-
set msbuildflags=%_nrswitch% /nologo
REM set msbuildflags=%_nrswitch% /nologo
set _ngenexe="%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\ngen.exe"
@@ -561,18 +641,20 @@ if not exist %_ngenexe% echo Error: Could not find ngen.exe. && goto :failure
echo ---------------- Done with prepare, starting package restore ----------------
set _nugetexe="%~dp0.nuget\NuGet.exe"
-set _nugetconfig="%~dp0.nuget\NuGet.Config"
+set _nugetconfig="%~dp0NuGet.Config"
if "%RestorePackages%" == "true" (
- cd fcs
- .paket\paket.exe restore
- cd..
- @if ERRORLEVEL 1 echo Error: Paket restore failed && goto :failure
+ if "%BUILD_FCS%" == "1" (
+ cd fcs
+ .paket\paket.exe restore
+ cd..
+ @if ERRORLEVEL 1 echo Error: Paket restore failed && goto :failure
+ )
%_ngenexe% install %_nugetexe% /nologo
set _nugetoptions=-PackagesDirectory packages -ConfigFile %_nugetconfig%
if not "%PB_RESTORESOURCE%" == "" (
- set _nugetoptions=!_nugetoptions! -Source %PB_RESTORESOURCE%
+ set _nugetoptions=!_nugetoptions! -FallbackSource %PB_RESTORESOURCE%
)
echo _nugetoptions=!_nugetoptions!
@@ -580,16 +662,18 @@ if "%RestorePackages%" == "true" (
%_nugetexe% restore packages.config !_nugetoptions!
@if ERRORLEVEL 1 echo Error: Nuget restore failed && goto :failure
- if "%BUILD_VS%" == "1" (
- %_nugetexe% restore vsintegration\packages.config !_nugetoptions!
- @if ERRORLEVEL 1 echo Error: Nuget restore failed && goto :failure
- )
-
if "%BUILD_SETUP%" == "1" (
%_nugetexe% restore setup\packages.config !_nugetoptions!
@if ERRORLEVEL 1 echo Error: Nuget restore failed && goto :failure
)
+ if not "%SIGN_TYPE%" == "" (
+ set signtoolnugetoptions=-PackagesDirectory "%USERPROFILE%\.nuget\packages" -ConfigFile %_nugetconfig%
+ if not "%PB_RESTORESOURCE%" == "" set signtoolnugetoptions=!signtoolnugetoptions! -FallbackSource %PB_RESTORESOURCE%
+ %_nugetexe% restore build\config\packages.config !signtoolnugetoptions!
+ @if ERRORLEVEL 1 echo Error: Nuget restore failed && goto :failure
+ )
+
set restore_fsharp_suite=0
if "%TEST_NET40_FSHARP_SUITE%" == "1" set restore_fsharp_suite=1
if "%TEST_CORECLR_FSHARP_SUITE%" == "1" set restore_fsharp_suite=1
@@ -600,9 +684,58 @@ if "%RestorePackages%" == "true" (
)
)
-if "%BUILD_PROTO_WITH_CORECLR_LKG%" == "1" (
+if "%NEEDS_DOTNET_CLI_TOOLS%" == "1" (
:: Restore the Tools directory
- call %~dp0init-tools.cmd
+ call "%~dp0init-tools.cmd"
+)
+set _dotnetcliexe=%~dp0Tools\dotnetcli\dotnet.exe
+set _dotnet20exe=%~dp0Tools\dotnet20\dotnet.exe
+set NUGET_PACKAGES=%~dp0packages
+set path=%~dp0Tools\dotnet20\;%path%
+
+echo ----------- Done with package restore, starting dependency uptake check -------------
+
+if not "%PB_PackageVersionPropsUrl%" == "" (
+ set dependencyUptakeDir=%~dp0Tools\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
+
+ :: prepare dependency uptake files
+ echo %_msbuildexe% %msbuildflags% %~dp0build\projects\PrepareDependencyUptake.proj /t:Build
+ %_msbuildexe% %msbuildflags% %~dp0build\projects\PrepareDependencyUptake.proj /t:Build
+ if ERRORLEVEL 1 echo Error building dependency uptake files && goto :failure
+
+ :: restore dependencies
+ %_nugetexe% restore !dependencyUptakeDir!\packages.config -PackagesDirectory packages -ConfigFile !dependencyUptakeDir!\NuGet.config
+ if ERRORLEVEL 1 echo Error restoring dependency uptake packages && goto :failure
+
+ :: set DotNetPackageVersionPropsPath
+ set DotNetPackageVersionPropsPath=!dependencyUptakeDir!\PackageVersions.props
+)
+
+echo ----------- Done with package restore, starting dependency uptake check -------------
+
+if not "%PB_PackageVersionPropsUrl%" == "" (
+ set dependencyUptakeDir=%~dp0Tools\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
+
+ :: prepare dependency uptake files
+ echo %_msbuildexe% %msbuildflags% %~dp0build\projects\PrepareDependencyUptake.proj /t:Build
+ %_msbuildexe% %msbuildflags% %~dp0build\projects\PrepareDependencyUptake.proj /t:Build
+ if ERRORLEVEL 1 echo Error building dependency uptake files && goto :failure
+
+ :: restore dependencies
+ %_nugetexe% restore !dependencyUptakeDir!\packages.config -PackagesDirectory packages -ConfigFile !dependencyUptakeDir!\NuGet.config
+ if ERRORLEVEL 1 echo Error restoring dependency uptake packages && goto :failure
)
set _dotnetcliexe=%~dp0Tools\dotnetcli\dotnet.exe
@@ -612,10 +745,10 @@ set path=%~dp0Tools\dotnet20\;%path%
set _fsiexe="packages\FSharp.Compiler.Tools.4.1.27\tools\fsi.exe"
if not exist %_fsiexe% echo Error: Could not find %_fsiexe% && goto :failure
-%_ngenexe% install %_fsiexe% /nologo
+%_ngenexe% install %_fsiexe% /nologo
if not exist %_nugetexe% echo Error: Could not find %_nugetexe% && goto :failure
-%_ngenexe% install %_nugetexe% /nologo
+%_ngenexe% install %_nugetexe% /nologo
echo ---------------- Done with package restore, verify buildfrom source ---------------
if "%BUILD_PROTO_WITH_CORECLR_LKG%" == "1" (
@@ -626,14 +759,8 @@ if "%BUILD_PROTO_WITH_CORECLR_LKG%" == "1" (
)
echo ---------------- Done with package restore, starting proto ------------------------
-
-rem Decide if Proto need building
-if NOT EXIST Proto\net40\bin\fsc-proto.exe (
- set BUILD_PROTO=1
-)
-
-set _dotnetexe=%~dp0Tools\dotnetcli\dotnet.exe
-set _architecture=win7-x64
+set logdir=%~dp0%BUILD_CONFIG%\logs
+if not exist "!logdir!" mkdir "!logdir!"
rem Build Proto
if "%BUILD_PROTO%" == "1" (
@@ -641,8 +768,8 @@ if "%BUILD_PROTO%" == "1" (
if "%BUILD_PROTO_WITH_CORECLR_LKG%" == "1" (
- echo %_msbuildexe% %msbuildflags% src\fsharp-proto-build.proj /p:BUILD_PROTO_WITH_CORECLR_LKG=%BUILD_PROTO_WITH_CORECLR_LKG% /p:Configuration=Proto
- %_msbuildexe% %msbuildflags% src\fsharp-proto-build.proj /p:BUILD_PROTO_WITH_CORECLR_LKG=%BUILD_PROTO_WITH_CORECLR_LKG% /p:Configuration=Proto
+ echo %_msbuildexe% %msbuildflags% src\fsharp-proto-build.proj /p:BUILD_PROTO_WITH_CORECLR_LKG=%BUILD_PROTO_WITH_CORECLR_LKG% /p:Configuration=Proto /p:DisableLocalization=true /bl:%~dp0%BUILD_CONFIG%\logs\protobuild-coreclr.build.binlog
+ %_msbuildexe% %msbuildflags% src\fsharp-proto-build.proj /p:BUILD_PROTO_WITH_CORECLR_LKG=%BUILD_PROTO_WITH_CORECLR_LKG% /p:Configuration=Proto /p:DisableLocalization=true /bl:%~dp0%BUILD_CONFIG%\logs\protobuild-coreclr.build.binlog
@if ERRORLEVEL 1 echo Error: compiler proto build failed && goto :failure
)
@@ -651,35 +778,97 @@ if "%BUILD_PROTO%" == "1" (
echo %_ngenexe% install packages\FSharp.Compiler.Tools.4.1.27\tools\fsc.exe /nologo
%_ngenexe% install packages\FSharp.Compiler.Tools.4.1.27\tools\fsc.exe /nologo
- echo %_msbuildexe% %msbuildflags% src\fsharp-proto-build.proj /p:BUILD_PROTO_WITH_CORECLR_LKG=%BUILD_PROTO_WITH_CORECLR_LKG% /p:Configuration=Proto
- %_msbuildexe% %msbuildflags% src\fsharp-proto-build.proj /p:BUILD_PROTO_WITH_CORECLR_LKG=%BUILD_PROTO_WITH_CORECLR_LKG% /p:Configuration=Proto
+ echo %_msbuildexe% %msbuildflags% src\fsharp-proto-build.proj /p:BUILD_PROTO_WITH_CORECLR_LKG=%BUILD_PROTO_WITH_CORECLR_LKG% /p:Configuration=Proto /p:DisableLocalization=true /bl:%~dp0%BUILD_CONFIG%\logs\protobuild-net40.build.binlog
+ %_msbuildexe% %msbuildflags% src\fsharp-proto-build.proj /p:BUILD_PROTO_WITH_CORECLR_LKG=%BUILD_PROTO_WITH_CORECLR_LKG% /p:Configuration=Proto /p:DisableLocalization=true /bl:%~dp0%BUILD_CONFIG%\logs\protobuild-net40.build.binlog
@if ERRORLEVEL 1 echo Error: compiler proto build failed && goto :failure
)
- echo %_ngenexe% install Proto\net40\bin\fsc-proto.exe /nologo
- %_ngenexe% install Proto\net40\bin\fsc-proto.exe /nologo
+ echo %_ngenexe% install Proto\net40\bin\fsc.exe /nologo
+ %_ngenexe% install Proto\net40\bin\fsc.exe /nologo
@if ERRORLEVEL 1 echo Error: NGen of proto failed && goto :failure
)
-echo ---------------- Done with proto, starting build ------------------------
+if "%NEEDS_DOTNET_CLI_TOOLS%" == "1" (
+ echo ---------------- Done with proto, starting SDK restore ------------------------
+ :: Restore projects using dotnet CLI tool
+ echo %_dotnet20exe% restore -v:d build-everything.proj %msbuildflags% %BUILD_DIAG%
+ %_dotnet20exe% restore -v:d build-everything.proj %msbuildflags% %BUILD_DIAG%
+)
+
+echo ---------------- Done with SDK restore, starting build ------------------------
if "%BUILD_PHASE%" == "1" (
- echo %_msbuildexe% %msbuildflags% build-everything.proj /t:Restore
- %_msbuildexe% %msbuildflags% build-everything.proj /t:Restore
- echo %_msbuildexe% %msbuildflags% build-everything.proj /p:Configuration=%BUILD_CONFIG% %BUILD_DIAG% /p:BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN%
- %_msbuildexe% %msbuildflags% build-everything.proj /p:Configuration=%BUILD_CONFIG% %BUILD_DIAG% /p:BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN%
+ echo %_msbuildexe% %msbuildflags% build-everything.proj /t:Restore %BUILD_DIAG% /bl:%~dp0%BUILD_CONFIG%\net40\binmsbuild.build-everything.restore.%BUILD_CONFIG%.binlog
+ %_msbuildexe% %msbuildflags% build-everything.proj /t:Restore %BUILD_DIAG% /bl:%~dp0%BUILD_CONFIG%\net40\binmsbuild.build-everything.restore.%BUILD_CONFIG%.binlog
+
+ echo %_msbuildexe% %msbuildflags% build-everything.proj /p:Configuration=%BUILD_CONFIG% %BUILD_DIAG% /p:BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN% /bl:%~dp0%BUILD_CONFIG%\logs\msbuild.build-everything.build.%BUILD_CONFIG%.binlog
+ %_msbuildexe% %msbuildflags% build-everything.proj /p:Configuration=%BUILD_CONFIG% %BUILD_DIAG% /p:BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN% /bl:%~dp0%BUILD_CONFIG%\logs\msbuild.build-everything.build.%BUILD_CONFIG%.binlog
@if ERRORLEVEL 1 echo Error build failed && goto :failure
)
-echo ---------------- Done with build, starting pack/update/prepare ---------------
+echo ---------------- Done with build, starting assembly version checks ---------------
+set asmvercheckpath=%~dp0tests\fsharpqa\testenv\src\AssemblyVersionCheck
+
+if "%BUILD_NET40%" == "1" (
+ echo "%~dp0%BUILD_CONFIG%\net40\bin\fsi.exe" "%asmvercheckpath%\AssemblyVersionCheck.fsx" -- "%~dp0build\config\AssemblySignToolData.json" "%~dp0%BUILD_CONFIG%"
+ "%~dp0%BUILD_CONFIG%\net40\bin\fsi.exe" "%asmvercheckpath%\AssemblyVersionCheck.fsx" -- "%~dp0build\config\AssemblySignToolData.json" "%~dp0%BUILD_CONFIG%"
+ 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 build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -Configuration %BUILD_CONFIG% -ConfigFile build\config\AssemblySignToolData.json
+ call build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -Configuration %BUILD_CONFIG% -ConfigFile build\config\AssemblySignToolData.json
+ if ERRORLEVEL 1 echo Error running sign tool && goto :failure
+)
+
+echo ---------------- Done with assembly signing, start package creation ---------------
+
+echo %_msbuildexe% %msbuildflags% build-nuget-packages.proj /p:Configuration=%BUILD_CONFIG% /bl:%~dp0%BUILD_CONFIG%\logs\msbuild.build-nuget-packages.build.%BUILD_CONFIG%.binlog
+ %_msbuildexe% %msbuildflags% build-nuget-packages.proj /p:Configuration=%BUILD_CONFIG% /bl:%~dp0%BUILD_CONFIG%\logs\msbuild.build-nuget-packages.build.%BUILD_CONFIG%.binlog
+if ERRORLEVEL 1 echo Error building NuGet packages && goto :failure
+
+if not "%SIGN_TYPE%" == "" (
+ echo build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -Configuration %BUILD_CONFIG% -ConfigFile build\config\PackageSignToolData.json
+ call build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -Configuration %BUILD_CONFIG% -ConfigFile build\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:%~dp0%BUILD_CONFIG%\logs\msbuild.build-insertion.build.%BUILD_CONFIG%.binlog
+ %_msbuildexe% %msbuildflags% setup\build-insertion.proj /p:Configuration=%BUILD_CONFIG% /bl:%~dp0%BUILD_CONFIG%\logs\msbuild.build-insertion.build.%BUILD_CONFIG%.binlog
+ if ERRORLEVEL 1 echo Error building insertion packages && goto :failure
+)
+
+if not "%SIGN_TYPE%" == "" (
+ echo build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -Configuration %BUILD_CONFIG% -ConfigFile build\config\InsertionSignToolData.json
+ call build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -Configuration %BUILD_CONFIG% -ConfigFile build\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:%~dp0%BUILD_CONFIG%\logs\msbuild.setup-swix.build.%BUILD_CONFIG%.binlog
+ %_msbuildexe% %msbuildflags% setup\Swix\Microsoft.FSharp.vsmanproj /p:Configuration=%BUILD_CONFIG% /bl:%~dp0%BUILD_CONFIG%\logs\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 ---------------
if "%BUILD_NET40_FSHARP_CORE%" == "1" (
echo ---------------- start update.cmd ---------------
call src\update.cmd %BUILD_CONFIG% -ngen
)
+if "%COPY_FSCOMP_RESOURCE_FOR_BUILD_FROM_SOURCES%" == "1" (
+ echo ---------------- copy fscomp resource for build from sources ---------------
+ copy /y src\fsharp\FSharp.Compiler.Private\obj\%BUILD_CONFIG%\net40\FSComp.* src\buildfromsource\FSharp.Compiler.Private
+)
+
@echo set NUNITPATH=packages\NUnit.Console.3.0.0\tools\
set NUNITPATH=packages\NUnit.Console.3.0.0\tools\
if not exist %NUNITPATH% echo Error: Could not find %NUNITPATH% && goto :failure
@@ -717,7 +906,7 @@ echo SNEXE32: %SNEXE32%
echo SNEXE64: %SNEXE64%
echo
-if "%TEST_NET40_COMPILERUNIT_SUITE%" == "0" if "%TEST_NET40_COREUNIT_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 "%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
@@ -751,7 +940,7 @@ ECHO link_exe=%link_exe%
ECHO NUNIT3_CONSOLE=%NUNIT3_CONSOLE%
ECHO NUNITPATH=%NUNITPATH%
-REM ---------------- net40-fsharp -----------------------
+REM ---------------- test-net40-fsharp -----------------------
if "%TEST_NET40_FSHARP_SUITE%" == "1" (
@@ -779,6 +968,48 @@ if "%TEST_NET40_FSHARP_SUITE%" == "1" (
)
)
+REM ---------------- test-fcs -----------------------
+
+if "%TEST_FCS%" == "1" (
+
+ del /q fcs\FSharp.Compiler.Service.Tests\TestResults\*.trx
+ echo "!_dotnet20exe!" test fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj -c Release --logger:trx
+ "!_dotnet20exe!" test fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj -c Release --logger:trx
+
+ if errorlevel 1 (
+ type fcs\FSharp.Compiler.Service.Tests\TestResults\*.trx
+ echo -----------------------------------------------------------------
+ echo Error: Running FCS tests failed. See XML logging output above. Search for 'outcome="Failed"' or 'Failed '
+ echo .
+ echo Error: Note that tests were run with both .NET Core and .NET Framework.
+ echo Error: Try running tests locally and using
+ echo .
+ echo dotnet test fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj -c Release --logger:trx
+ echo .
+ echo Error: and look for results in
+ echo .
+ echo fcs\FSharp.Compiler.Service.Tests\TestResults\*.trx
+ echo .
+ 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%
@@ -790,6 +1021,7 @@ set HOSTED_COMPILER=1
if "%TEST_NET40_FSHARPQA_SUITE%" == "1" (
+ set CSC_PIPE=%~dp0packages\Microsoft.Net.Compilers.2.7.0\tools\csc.exe
set FSC=!FSCBINPATH!\fsc.exe
set FSCOREDLLPATH=!FSCBinPath!\FSharp.Core.dll
set PATH=!FSCBINPATH!;!PATH!
@@ -832,8 +1064,8 @@ if "%TEST_NET40_COMPILERUNIT_SUITE%" == "1" (
set OUTPUTARG=--output:"!OUTPUTFILE!"
)
set ERRORFILE=!RESULTSDIR!\test-net40-compilerunit-errors.log
- echo "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\..\..\net40\bin\FSharp.Compiler.Unittests.dll" !WHERE_ARG_NUNIT!
- "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\..\..\net40\bin\FSharp.Compiler.Unittests.dll" !WHERE_ARG_NUNIT!
+ echo "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\..\..\net40\bin\FSharp.Compiler.UnitTests.dll" !WHERE_ARG_NUNIT!
+ "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\..\..\net40\bin\FSharp.Compiler.UnitTests.dll" !WHERE_ARG_NUNIT!
if errorlevel 1 (
echo -----------------------------------------------------------------
@@ -845,6 +1077,32 @@ if "%TEST_NET40_COMPILERUNIT_SUITE%" == "1" (
echo -----------------------------------------------------------------
goto :failure
)
+
+ set OUTPUTARG=
+ set ERRORARG=
+ set OUTPUTFILE=
+ set ERRORFILE=
+ set XMLFILE=!RESULTSDIR!\test-net40-buildunit-results.xml
+ if "%CI%" == "1" (
+ set OUTPUTFILE=!RESULTSDIR!\test-net40-buildunit-output.log
+ set ERRORFILE=!RESULTSDIR!\test-net40-buildunit-errors.log
+ set ERRORARG=--err:"!ERRORFILE!"
+ set OUTPUTARG=--output:"!OUTPUTFILE!"
+ )
+ set ERRORFILE=!RESULTSDIR!\test-net40-buildunit-errors.log
+ echo "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\FSharp.Build.UnitTests.dll" !WHERE_ARG_NUNIT!
+ "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\FSharp.Build.UnitTests.dll" !WHERE_ARG_NUNIT!
+
+ if errorlevel 1 (
+ echo -----------------------------------------------------------------
+ type "!OUTPUTFILE!"
+ echo -----------------------------------------------------------------
+ type "!ERRORFILE!"
+ echo -----------------------------------------------------------------
+ echo Error: Running tests net40-compilernit failed, see logs above -- FAILED
+ echo -----------------------------------------------------------------
+ goto :failure
+ )
)
REM ---------------- net40-coreunit -----------------------
@@ -863,11 +1121,8 @@ if "%TEST_NET40_COREUNIT_SUITE%" == "1" (
set OUTPUTARG=--output:"!OUTPUTFILE!"
)
- echo "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\FSharp.Build.Unittests.dll" !WHERE_ARG_NUNIT!
- "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\FSharp.Build.Unittests.dll" !WHERE_ARG_NUNIT!
-
- echo "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\FSharp.Core.Unittests.dll" !WHERE_ARG_NUNIT!
- "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\FSharp.Core.Unittests.dll" !WHERE_ARG_NUNIT!
+ echo "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\FSharp.Core.UnitTests.dll" !WHERE_ARG_NUNIT!
+ "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\FSharp.Core.UnitTests.dll" !WHERE_ARG_NUNIT!
if errorlevel 1 (
echo -----------------------------------------------------------------
@@ -889,13 +1144,20 @@ if "%TEST_CORECLR_COREUNIT_SUITE%" == "1" (
set OUTPUTFILE=!RESULTSDIR!\test-coreclr-coreunit-output.log
set ERRORFILE=!RESULTSDIR!\test-coreclr-coreunit-errors.log
- echo "%_dotnetcliexe%" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\FSharp.Build.Unittests\FSharp.Build.Unittests.dll" !WHERE_ARG_NUNIT!
- "%_dotnetcliexe%" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\FSharp.Build.Unittests\FSharp.Build.Unittests.dll" !WHERE_ARG_NUNIT!
+ echo "%_dotnetcliexe%" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\FSharp.Build.UnitTests\FSharp.Build.UnitTests.dll" !WHERE_ARG_NUNIT!
+ "%_dotnetcliexe%" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\FSharp.Build.UnitTests\FSharp.Build.UnitTests.dll" !WHERE_ARG_NUNIT!
- echo "%_dotnetcliexe%" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\FSharp.Core.Unittests\FSharp.Core.Unittests.dll" !WHERE_ARG_NUNIT!
- "%_dotnetcliexe%" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\FSharp.Core.Unittests\FSharp.Core.Unittests.dll" !WHERE_ARG_NUNIT!
+ if errorlevel 1 (
+ echo -----------------------------------------------------------------
+ echo Error: Running tests coreclr-coreunit failed, see logs above-- FAILED
+ echo -----------------------------------------------------------------
+ goto :failure
+ )
- if ERRORLEVEL 1 (
+ echo "%_dotnetcliexe%" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\FSharp.Core.UnitTests\FSharp.Core.UnitTests.dll" !WHERE_ARG_NUNIT!
+ "%_dotnetcliexe%" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\FSharp.Core.UnitTests\FSharp.Core.UnitTests.dll" !WHERE_ARG_NUNIT!
+
+ if errorlevel 1 (
echo -----------------------------------------------------------------
echo Error: Running tests coreclr-coreunit failed, see logs above-- FAILED
echo -----------------------------------------------------------------
@@ -942,9 +1204,19 @@ if "%TEST_VS_IDEUNIT_SUITE%" == "1" (
set OUTPUTARG=--output:"!OUTPUTFILE!"
)
+ rem Verify that VisualFSharp.UnitTests.dll can be loaded by nunit. Report load errors.
+ pushd !FSCBINPATH!
+ echo "!NUNIT3_CONSOLE!" --verbose --x86 --framework:V4.0 --work:"!FSCBINPATH!" --workers=1 --agents=1 --full "!FSCBINPATH!\GetTypesVSUnitTests.dll" !WHERE_ARG_NUNIT!
+ "!NUNIT3_CONSOLE!" --verbose --x86 --framework:V4.0 --work:"!FSCBINPATH!" --workers=1 --agents=1 --full "!FSCBINPATH!\GetTypesVSUnitTests.dll" !WHERE_ARG_NUNIT!
+ popd
+
+ if errorlevel 1 (
+ goto :failure
+ )
+
pushd !FSCBINPATH!
- echo "!NUNIT3_CONSOLE!" --verbose --x86 --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" --workers=1 --agents=1 --full "!FSCBINPATH!\VisualFSharp.Unittests.dll" !WHERE_ARG_NUNIT!
- "!NUNIT3_CONSOLE!" --verbose --x86 --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" --workers=1 --agents=1 --full "!FSCBINPATH!\VisualFSharp.Unittests.dll" !WHERE_ARG_NUNIT!
+ echo "!NUNIT3_CONSOLE!" --verbose --x86 --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" --workers=1 --agents=1 --full "!FSCBINPATH!\VisualFSharp.UnitTests.dll" !WHERE_ARG_NUNIT!
+ "!NUNIT3_CONSOLE!" --verbose --x86 --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" --workers=1 --agents=1 --full "!FSCBINPATH!\VisualFSharp.UnitTests.dll" !WHERE_ARG_NUNIT!
popd
if errorlevel 1 (
@@ -955,6 +1227,8 @@ if "%TEST_VS_IDEUNIT_SUITE%" == "1" (
type "!ERRORFILE!"
echo -------end vs-ide-unit errors ------------------------
echo Error: Running tests vs-ideunit failed, see logs above, search for "Errors and Failures" -- FAILED
+ echo Command Line for running tests
+ echo "!NUNIT3_CONSOLE!" --verbose --x86 --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" --workers=1 --agents=1 --full "!FSCBINPATH!\VisualFSharp.UnitTests.dll" !WHERE_ARG_NUNIT!
echo ----------------------------------------------------------------------------------------------------
goto :failure
)
diff --git a/build.sh b/build.sh
index 3d70ffc3ff6..4e78c56091c 100755
--- a/build.sh
+++ b/build.sh
@@ -1,802 +1,3 @@
#!/bin/sh
-# Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
-# Helper function to print an error message and exit with a non-zero error code.
-failwith () {
- printf "Error: %s\n" "$1" >&2
- exit 1
-}
-
-# Prints command text to stdout then runs (via eval) the command.
-printeval () {
- printf "%s\n" "$1" >&1
- eval "$1"
-}
-
-# Prints build status to stdout.
-build_status () {
- printf "%s %s %s\n" "----------------" "$1" "-----------------" >&1
-}
-
-# Text for the usage message.
-usage_text="
-Build and run a subset of test suites
-
-Usage:
-
-build.sh ^
- ^
- ^
- ^
- ^
- ^
- ^
- ^
-
-No arguments default to 'default', meaning this (no testing)
-
- build.sh net40
-
-Other examples:
-
- build.sh net40 (build compiler for .NET Framework)
- build.sh coreclr (build compiler for .NET Core)
- build.sh vs (build Visual Studio IDE Tools)
- build.sh all (build everything)
- build.sh test (build and test default targets)
- build.sh net40 test (build and test net40)
- build.sh coreclr test (build and test net40)
- build.sh vs test (build and test net40)
- build.sh all test (build and test net40)
- build.sh nobuild test include Conformance (run only tests marked with Conformance category)
- build.sh nobuild test include Expensive (run only tests marked with Expensive category)
-
-"
-
-# Prints usage text to stdout then exits with a non-zero exit code.
-show_usage_and_exit() {
- printf "%s\n" "$usage_text"
- exit 1
-}
-
-# Check if caller specified any typical argument used to get usage/help info.
-if [ "$1" = "--help" ] || [ "$1" = "-h" ] || [ "$1" = "-?" ]; then
- show_usage_and_exit
-fi
-
-# Save directory of the current script -- this is used below to fix up relative paths (if needed).
-# The directory should have a trailing slash like it does on Windows, to minimize differences between scripts.
-_scriptdir="$( cd -P -- "$(dirname -- "$(command -v -- "$0")")" && pwd -P )/"
-
-# disable setup build by setting FSC_BUILD_SETUP=0
-if [ -z "$FSC_BUILD_SETUP" ]; then
- export FSC_BUILD_SETUP=0
-fi
-
-# by default don't build coreclr lkg.
-# However allow configuration by setting (more specifically, exporting) an environment variable: export BUILD_PROTO_WITH_CORECLR_LKG = 1
-if [ -z "$BUILD_PROTO_WITH_CORECLR_LKG" ]; then
- export BUILD_PROTO_WITH_CORECLR_LKG=0
-fi
-
-export BUILD_PROTO=0
-export BUILD_PHASE=1
-export BUILD_NET40_FSHARP_CORE=0
-export BUILD_NET40=0
-export BUILD_CORECLR=0
-export BUILD_PORTABLE=0
-export BUILD_VS=0
-export BUILD_CONFIG=release
-export BUILD_CONFIG_LOWERCASE=release
-export BUILD_DIAG=
-export BUILD_PUBLICSIGN=0
-
-export TEST_NET40_COMPILERUNIT_SUITE=0
-export TEST_NET40_COREUNIT_SUITE=0
-export TEST_NET40_FSHARP_SUITE=0
-export TEST_NET40_FSHARPQA_SUITE=0
-export TEST_CORECLR_COREUNIT_SUITE=0
-export TEST_CORECLR_FSHARP_SUITE=0
-export TEST_PORTABLE_COREUNIT_SUITE=0
-export TEST_VS_IDEUNIT_SUITE=0
-export INCLUDE_TEST_SPEC_NUNIT=
-export INCLUDE_TEST_TAGS=
-
-# Set up variables used to determine whether we'll automatically select which
-# targets to build/run/test. NOTE: These aren't exported, they're only used by this script.
-no_test=0
-_autoselect=1
-_autoselect_tests=0
-
-# Parse script arguments (specifying which targets to build/run/test),
-# and export the corresponding environment variables to configure the build.
-for arg in "$@"
-do
- case $arg in
- "net40")
- _autoselect=0
- export BUILD_NET40=1
- export BUILD_NET40_FSHARP_CORE=1
- ;;
- "coreclr")
- _autoselect=0
- export BUILD_PROTO_WITH_CORECLR_LKG=1
- export BUILD_CORECLR=1
- ;;
- "pcls")
- _autoselect=0
- export BUILD_PORTABLE=1
- ;;
- "vs")
- _autoselect=0
- export BUILD_NET40=1
- export BUILD_NET40_FSHARP_CORE=1
- export BUILD_VS=1
- ;;
- "vstest")
- export TEST_VS_IDEUNIT_SUITE=1
- ;;
- "nobuild")
- export BUILD_PHASE=0
- ;;
- "none")
- _autoselect=0
- export _buildexit=1
- export _buildexitVALUE=0
- ;;
- "all")
- _autoselect=0
- export BUILD_PROTO=1
- export BUILD_PROTO_WITH_CORECLR_LKG=1
- export BUILD_NET40=1
- export BUILD_NET40_FSHARP_CORE=1
- export BUILD_CORECLR=1
- export BUILD_PORTABLE=1
- export BUILD_VS=1
- export BUILD_SETUP=$FSC_BUILD_SETUP
- export CI=1
- ;;
- "microbuild")
- _autoselect=0
- export BUILD_PROTO=1
- export BUILD_NET40=1
- export BUILD_NET40_FSHARP_CORE=1
- export BUILD_PROTO_WITH_CORECLR_LKG=1
- export BUILD_CORECLR=1
- export BUILD_PORTABLE=1
- export BUILD_VS=1
- export BUILD_SETUP=$FSC_BUILD_SETUP
-
- export TEST_NET40_COMPILERUNIT_SUITE=1
- export TEST_NET40_COREUNIT_SUITE=1
- export TEST_NET40_FSHARP_SUITE=1
- export TEST_NET40_FSHARPQA_SUITE=1
- export TEST_CORECLR_COREUNIT_SUITE=0
- export TEST_CORECLR_FSHARP_SUITE=0
- export TEST_PORTABLE_COREUNIT_SUITE=1
- export TEST_VS_IDEUNIT_SUITE=1
- export CI=1
- ;;
-
- # These divide 'ci' into multiple chunks which can be done in parallel
- "ci_part1")
- _autoselect=0
-
- # what we do
- export BUILD_PROTO=1
- export BUILD_NET40=1
- export BUILD_NET40_FSHARP_CORE=1
- export BUILD_PORTABLE=1
- export BUILD_VS=1
- export BUILD_SETUP=$FSC_BUILD_SETUP
- export TEST_NET40_COMPILERUNIT_SUITE=1
- export TEST_NET40_FSHARPQA_SUITE=1
- export TEST_VS_IDEUNIT_SUITE=1
- export CI=1
- ;;
- "ci_part2")
- _autoselect=0
-
- # what we do
- export BUILD_PROTO_WITH_CORECLR_LKG=1
- export BUILD_PROTO=1
- export BUILD_NET40=1
- export BUILD_NET40_FSHARP_CORE=1
- export BUILD_PORTABLE=1
-
- export TEST_NET40_COREUNIT_SUITE=1
- export TEST_NET40_FSHARP_SUITE=1
- export TEST_PORTABLE_COREUNIT_SUITE=1
- export CI=1
- ;;
- "ci_part3")
- _autoselect=0
-
- # what we do
- export BUILD_PROTO_WITH_CORECLR_LKG=1
- export BUILD_PROTO=1
- export BUILD_NET40=1
- export BUILD_NET40_FSHARP_CORE=1
- export BUILD_CORECLR=1
-
- export TEST_CORECLR_FSHARP_SUITE=1
- export TEST_CORECLR_COREUNIT_SUITE=1
- export CI=1
- ;;
-
- # TEMP: The Jenkins builds currently call this script with the 'ci' target,
- # but that doesn't exist even in build.cmd. It wasn't doing anything
- # before anyway, so accept 'ci' but ignore it for now because the test
- # suites don't build correctly on Linux/macOS yet anyway.
- "ci")
- # TODO: Do everything from ci_part1-3 here.
- printf "The 'ci' target is currently ignored, until the test suite builds can be fixed for Linux/macOS.\n"
- ;;
-
- "proto")
- export BUILD_PROTO=1
- ;;
- "diag")
- export BUILD_DIAG=/v:detailed
- if [ -z "$APPVEYOR" ]; then
- export BUILD_LOG=fsharp_build_log.log
- fi
- ;;
- "debug")
- export BUILD_CONFIG=debug
- ;;
- "release")
- export BUILD_CONFIG=release
- ;;
- "test")
- _autoselect_tests=1
- ;;
- "no-test")
- no_test=1
- ;;
- "include")
- failwith "The 'include' option is not (yet) supported by this script."
- #export /a counter=!counter!+1
- #if '$INCLUDE_TEST_SPEC_NUNIT' == '' ( export INCLUDE_TEST_SPEC_NUNIT=cat == $ARG2 ) else (set INCLUDE_TEST_SPEC_NUNIT=cat == $ARG2 or $INCLUDE_TEST_SPEC_NUNIT )
- #if '$INCLUDE_TEST_TAGS' == '' ( export INCLUDE_TEST_TAGS=$ARG2 ) else (set INCLUDE_TEST_TAGS=$ARG2;$INCLUDE_TEST_TAGS )
- ;;
- "test-all")
- _autoselect=0
- export BUILD_PROTO=1
- export BUILD_PROTO_WITH_CORECLR_LKG=1
- export BUILD_NET40=1
- export BUILD_NET40_FSHARP_CORE=1
- export BUILD_CORECLR=1
- export BUILD_PORTABLE=1
- export BUILD_VS=1
- export BUILD_SETUP=$FSC_BUILD_SETUP
-
- export TEST_NET40_COMPILERUNIT_SUITE=1
- export TEST_NET40_COREUNIT_SUITE=1
- export TEST_NET40_FSHARP_SUITE=1
- export TEST_NET40_FSHARPQA_SUITE=1
- export TEST_PORTABLE_COREUNIT_SUITE=1
- export TEST_CORECLR_COREUNIT_SUITE=1
- export TEST_VS_IDEUNIT_SUITE=1
- ;;
- "test-net40-fsharpqa")
- export BUILD_NET40=1
- export BUILD_NET40_FSHARP_CORE=1
- export BUILD_PORTABLE=1
- export TEST_NET40_FSHARPQA_SUITE=1
- ;;
- "test-compiler-unit")
- export BUILD_NET40=1
- export BUILD_NET40_FSHARP_CORE=1
- export TEST_NET40_COMPILERUNIT_SUITE=1
- ;;
- "test-net40-coreunit")
- export BUILD_NET40_FSHARP_CORE=1
- export TEST_NET40_COREUNIT_SUITE=1
- ;;
- "test-coreclr-coreunit")
- export BUILD_PROTO_WITH_CORECLR_LKG=1
- export BUILD_CORECLR=1
- export TEST_CORECLR_COREUNIT_SUITE=1
- ;;
- "test-pcl-coreunit")
- export BUILD_PORTABLE=1
- export TEST_PORTABLE_COREUNIT_SUITE=1
- ;;
- "test-net40-fsharp")
- export BUILD_NET40=1
- export BUILD_NET40_FSHARP_CORE=1
- export BUILD_PORTABLE=1
- export TEST_NET40_FSHARP_SUITE=1
- ;;
- "test-coreclr-fsharp")
- export BUILD_NET40=1
- export BUILD_NET40_FSHARP_CORE=1
- export BUILD_PROTO_WITH_CORECLR_LKG=1
- export BUILD_CORECLR=1
- export TEST_CORECLR_FSHARP_SUITE=1
- ;;
- "publicsign")
- export BUILD_PUBLICSIGN=1
- ;;
- "init")
- export BUILD_PROTO_WITH_CORECLR_LKG=1
- ;;
- *)
- errmsg=$(printf "Invalid argument: %s" "$arg")
- failwith "$errmsg"
- ;;
- esac
-done
-
-if [ $_buildexit -eq 1 ]; then
- exit $_buildexitvalue
-fi
-
-# Apply defaults, if necessary.
-if [ $_autoselect -eq 1 ]; then
- export BUILD_NET40=1
- export BUILD_NET40_FSHARP_CORE=1
-fi
-
-if [ $_autoselect_tests -eq 1 ]; then
- if [ $BUILD_NET40 -eq 1 ]; then
- export TEST_NET40_COMPILERUNIT_SUITE=1
- export TEST_NET40_COREUNIT_SUITE=1
- export TEST_NET40_FSHARP_SUITE=1
- export TEST_NET40_FSHARPQA_SUITE=1
- fi
-
- if [ $BUILD_CORECLR -eq 1 ]; then
- export BUILD_NET40=1
- export BUILD_NET40_FSHARP_CORE=1
- export TEST_CORECLR_FSHARP_SUITE=1
- export TEST_CORECLR_COREUNIT_SUITE=1
- fi
-
- if [ $BUILD_PORTABLE -eq 1 ]; then
- export TEST_PORTABLE_COREUNIT_SUITE=1
- fi
-
- if [ $BUILD_VS -eq 1 ]; then
- export TEST_VS_IDEUNIT_SUITE=1
- fi
-fi
-
-# If the `PB_SKIPTESTS` variable is set to 'true' then no tests should be built or run, even if explicitly specified
-if [ $PB_SKIPTESTS -eq "true" ]; then
- export TEST_NET40_COMPILERUNIT_SUITE=0
- export TEST_NET40_COREUNIT_SUITE=0
- export TEST_NET40_FSHARP_SUITE=0
- export TEST_NET40_FSHARPQA_SUITE=0
- export TEST_CORECLR_COREUNIT_SUITE=0
- export TEST_CORECLR_FSHARP_SUITE=0
- export TEST_PORTABLE_COREUNIT_SUITE=0
- export TEST_VS_IDEUNIT_SUITE=0
-fi
-
-#
-# Report config
-#
-
-printf "Build/Tests configuration:\n"
-printf "\n"
-printf "BUILD_PROTO=%s\n" "$BUILD_PROTO"
-printf "BUILD_PROTO_WITH_CORECLR_LKG=%s\n" "$BUILD_PROTO_WITH_CORECLR_LKG"
-printf "BUILD_NET40=%s\n" "$BUILD_NET40"
-printf "BUILD_NET40_FSHARP_CORE=%s\n" "$BUILD_NET40_FSHARP_CORE"
-printf "BUILD_CORECLR=%s\n" "$BUILD_CORECLR"
-printf "BUILD_PORTABLE=%s\n" "$BUILD_PORTABLE"
-printf "BUILD_VS=%s\n" "$BUILD_VS"
-printf "BUILD_SETUP=%s\n" "$BUILD_SETUP"
-printf "BUILD_CONFIG=%s\n" "$BUILD_CONFIG"
-printf "BUILD_PUBLICSIGN=%s\n" "$BUILD_PUBLICSIGN"
-printf "\n"
-printf "PB_SKIPTESTS=%s\n" "$PB_SKIPTESTS"
-printf "PB_RESTORESOURCE=%s\n" "$PB_RESTORESOURCE"
-printf "\n"
-printf "TEST_NET40_COMPILERUNIT_SUITE=%s\n" "$TEST_NET40_COMPILERUNIT_SUITE"
-printf "TEST_NET40_COREUNIT_SUITE=%s\n" "$TEST_NET40_COREUNIT_SUITE"
-printf "TEST_NET40_FSHARP_SUITE=%s\n" "$TEST_NET40_FSHARP_SUITE"
-printf "TEST_NET40_FSHARPQA_SUITE=%s\n" "$TEST_NET40_FSHARPQA_SUITE"
-printf "TEST_CORECLR_COREUNIT_SUITE=%s\n" "$TEST_CORECLR_COREUNIT_SUITE"
-printf "TEST_CORECLR_FSHARP_SUITE=%s\n" "$TEST_CORECLR_FSHARP_SUITE"
-printf "TEST_PORTABLE_COREUNIT_SUITE=%s\n" "$TEST_PORTABLE_COREUNIT_SUITE"
-printf "TEST_VS_IDEUNIT_SUITE=%s\n" "$TEST_VS_IDEUNIT_SUITE"
-printf "INCLUDE_TEST_SPEC_NUNIT=%s\n" "$INCLUDE_TEST_SPEC_NUNIT"
-printf "INCLUDE_TEST_TAGS=%s\n" "$INCLUDE_TEST_TAGS"
-printf "\n"
-
-# TODO: Print out environment variables?
-printf "Environment\n"
-printf "\n"
-printf "(TODO)\n"
-printf "\n"
-printf "\n"
-
-build_status "Done with arguments, starting preparation"
-
-_msbuildexe="msbuild"
-msbuildflags=""
-
-# Perform any necessary setup and system configuration prior to running builds.
-./before_install.sh
-rc=$?;
-if [ $rc -ne 0 ]; then
- printf "before_install script failed.\n"
- exit $rc
-fi
-
-build_status "Done with prepare, starting package restore"
-
-# Use built-in Nuget executable on Mono, if available.
-_nugetexe="mono .nuget/NuGet.exe"
-if command -v nuget > /dev/null; then
- _nugetexe="nuget"
-fi
-_nugetconfig=".nuget/NuGet.Config"
-
-# TODO: Confirm existence of 'nuget' (or $_nugetexe) before proceeding.
-
-# Restore packages (default to restoring packages if otherwise unspecified).
-if [ "${RestorePackages:-true}" = 'true' ]; then
- cd fcs
- mono .paket/paket.exe restore
- cd ..
- exit_code=$?
- if [ $exit_code -ne 0 ]; then
- exit $exit_code
- fi
-
- _nugetoptions="-PackagesDirectory packages -ConfigFile $_nugetconfig"
- if [ "$PB_RESTORESOURCE" != "" ]; then
- _nugetoptions="$_nugetoptions -Source $PB_RESTORESOURCE"
- fi
-
- eval "$_nugetexe restore packages.config $_nugetoptions"
- if [ $? -ne 0 ]; then
- failwith "Nuget restore failed"
- fi
-
- if [ "$BUILD_VS" = '1' ]; then
- eval "$_nugetexe restore vsintegration/packages.config $_nugetoptions"
- if [ $? -ne 0 ]; then
- failwith "Nuget restore failed"
- fi
- fi
-
- if [ "$BUILD_SETUP" = '1' ]; then
- eval "$_nugetexe restore setup/packages.config $_nugetoptions"
- if [ $? -ne 0 ]; then
- failwith "Nuget restore failed"
- fi
- fi
-fi
-
-# If building for CoreCLR, restore the Tools directory.
-if [ "$BUILD_PROTO_WITH_CORECLR_LKG" = '1' ]; then
- # Restore the Tools directory
- ./init-tools.sh
- rc=$?;
- if [ $rc -ne 0 ]; then
- printf "init-tools script failed.\n"
- exit $rc
- fi
-fi
-
-# TODO: Check for existence of fsi (either on the system, or from the FSharp.Compiler.Tools package that was restored).
-
-build_status "Done with package restore, starting proto"
-
-# Decide if Proto need building
-if [ ! -f "Proto/net40/bin/fsc-proto.exe" ]; then
- export BUILD_PROTO=1
-fi
-
-_dotnetexe=dotnet
-_architecture=win7-x64
-
-# Build Proto
-if [ "$BUILD_PROTO" = '1' ]; then
- rm -rfd Proto
-
- if [ "$BUILD_PROTO_WITH_CORECLR_LKG" = '1' ]; then
- { pushd ./lkg/fsc && eval "$_dotnetexe restore" && popd; } || failwith "dotnet restore failed"
- { pushd ./lkg/fsi && eval "$_dotnetexe restore" && popd; } || failwith "dotnet restore failed"
-
- { pushd ./lkg/fsc && eval "$_dotnetexe publish project.json --no-build -o ${_scriptdir}Tools/lkg -r $_architecture" && popd; } || failwith "dotnet publish failed"
- { pushd ./lkg/fsi && eval "$_dotnetexe publish project.json --no-build -o ${_scriptdir}Tools/lkg -r $_architecture" && popd; } || failwith "dotnet publish failed"
-
- { printeval "$_msbuildexe $msbuildflags src/fsharp-proto-build.proj /p:Configuration=Proto"; } || failwith "compiler proto build failed"
-
-# { printeval "$_ngenexe install Proto/net40/bin/fsc-proto.exe /nologo"; } || failwith "NGen of proto failed"
- else
- # Build proto-compiler and libs
- { printeval "$_msbuildexe $msbuildflags src/fsharp-proto-build.proj /p:UseMonoPackaging=true /p:Configuration=Proto"; } || failwith "compiler proto build failed"
- fi
-fi
-
-
-build_status "Done with proto, starting build"
-
-if [ "$BUILD_PHASE" = '1' ]; then
- cmd="$_msbuildexe $msbuildflags build-everything.proj /p:UseMonoPackaging=true /p:Configuration=$BUILD_CONFIG $BUILD_DIAG /p:BUILD_PUBLICSIGN=$BUILD_PUBLICSIGN"
- { printeval "$cmd"; } || failwith "'$cmd' failed"
-fi
-
-build_status "Main part of build finished, completing parts of build needed for Mono setup"
-
-if [ "$BUILD_NET40" = '1' ]; then
- { printeval "./autogen.sh --prefix=/usr"; } || failwith "./autogen.sh failed"
-
- { printeval "make"; } || failwith "make failed"
-fi
-
-build_status "Done with build, starting update/prepare"
-
-if [ "$BUILD_NET40" = '1' ]; then
-
- { printeval "sudo make install"; } || failwith "sudo make install failed"
-
-# WINDOWS:
-# src/update.sh $BUILD_CONFIG
-# rc=$?;
-# if [ $rc -ne 0 ]; then
-# printf "src/update script failed.\n"
-# exit $rc
-# fi
-fi
-
-NUNITPATH="packages/NUnit.Console.3.0.0/tools/"
-printf "set NUNITPATH=%s\n" "$NUNITPATH"
-if [ ! -d "$NUNITPATH" ]; then
- failwith "Could not find $NUNITPATH"
-fi
-
-{ printeval "cp -R $NUNITPATH ${_scriptdir}tests/fsharpqa/testenv/bin/nunit"; } || failwith "unable to copy nunit binaries to fsharpqa"
-{ printeval "cp -R ${_scriptdir}tests/fsharpqa/testenv/src/nunit ${_scriptdir}tests/fsharpqa/testenv/bin/nunit"; } || failwith "unable to copy nunit binaries to fsharpqa"
-
-# TODO: Define location of ildasm/monodis and sn
-
-if [ "$TEST_NET40_COMPILERUNIT_SUITE" = '0' ] && [ "$TEST_PORTABLE_COREUNIT_SUITE" = '0' ] && [ "$TEST_CORECLR_COREUNIT_SUITE" = '0' ] && [ "$TEST_VS_IDEUNIT_SUITE" = '0' ] && [ "$TEST_NET40_FSHARP_SUITE" = '0' ] && [ "$TEST_NET40_FSHARPQA_SUITE" = '0' ]; then
- # Successful build; not running tests so exit now.
- exit 0
-fi
-
-if [ $no_test -eq 1 ]; then
- # Successful build; not running tests so exit now.
- exit 0
-fi
-
-build_status "Done with update, starting tests"
-
-if [ -n "$INCLUDE_TEST_SPEC_NUNIT" ]; then
- export WHERE_ARG_NUNIT="--where $INCLUDE_TEST_SPEC_NUNIT"
-fi
-
-if [ -n "$INCLUDE_TEST_TAGS" ]; then
- export TTAGS_ARG_RUNALL="-ttags:$INCLUDE_TEST_TAGS"
-fi
-
-printf "WHERE_ARG_NUNIT=%s\n" "$WHERE_ARG_NUNIT"
-
-export NUNITPATH="tests/fsharpqa/testenv/bin/nunit/"
-export NUNIT3_CONSOLE="${NUNITPATH}nunit3-console.exe"
-export link_exe="${_scriptdir}packages/VisualCppTools.14.0.24519-Pre/lib/native/bin/link.exe"
-if [ ! -f "$link_exe" ]; then
- failwith "failed to find '$link_exe' use nuget to restore the VisualCppTools package"
-fi
-
-#if /I not '$single_threaded' == 'true' (set PARALLEL_ARG=-procs:$NUMBER_OF_PROCESSORS) else set PARALLEL_ARG=-procs:0
-
-export FSCBINPATH="${_scriptdir}$BUILD_CONFIG/net40/bin"
-export RESULTSDIR="${_scriptdir}tests/TestResults"
-if [ ! -d "$RESULTSDIR" ]; then
- mkdir "$RESULTSDIR"
-fi
-
-printf "FSCBINPATH=%s\n" "$FSCBINPATH"
-printf "RESULTSDIR=%s\n" "$RESULTSDIR"
-printf "link_exe=%s\n" "$link_exe"
-printf "NUNIT3_CONSOLE=%s\n" "$NUNIT3_CONSOLE"
-printf "NUNITPATH=%s\n" "$NUNITPATH"
-
-# ---------------- net40-fsharp -----------------------
-
-if [ "$TEST_NET40_FSHARP_SUITE" = '1' ]; then
- OUTPUTARG=""
- ERRORARG=""
- OUTPUTFILE=""
- ERRORFILE=""
- XMLFILE="$RESULTSDIR/test-net40-fsharp-results.xml"
- if [ "$CI" = '1' ]; then
- OUTPUTFILE="$RESULTSDIR/test-net40-fsharp-output.log"
- OUTPUTARG="--output:\"$OUTPUTFILE\""
- ERRORFILE="$RESULTSDIR/test-net40-fsharp-errors.log"
- ERRORARG="--err:\"$ERRORFILE\""
- fi
-
- if ! printeval "mono $NUNIT3_CONSOLE --verbose \"$FSCBINPATH/FSharp.Tests.FSharpSuite.dll\" --framework:V4.0 --work:\"$FSCBINPATH\" $OUTPUTARG $ERRORARG --result:\"$XMLFILE;format=nunit3\" $WHERE_ARG_NUNIT"; then
- if [ -f "$ERRORFILE" ]; then
- echo -----------------------------------------------------------------
- cat "$ERRORFILE"
- fi
- echo -----------------------------------------------------------------
- echo Error: Running tests net40-fsharp failed, see log above -- FAILED
- echo -----------------------------------------------------------------
- exit 1
- fi
-fi
-
-# ---------------- net40-compilerunit -----------------------
-
-if [ "$TEST_NET40_COMPILERUNIT_SUITE" = '1' ]; then
-
- OUTPUTARG=""
- ERRORARG=""
- OUTPUTFILE=""
- ERRORFILE="$RESULTSDIR/test-net40-compilerunit-errors.log"
- XMLFILE="$RESULTSDIR/test-net40-compilerunit-results.xml"
- if [ "$CI" = '1' ]; then
- OUTPUTFILE="$RESULTSDIR/test-net40-compilerunit-output.log"
- ERRORARG="--err:\"$ERRORFILE\""
- OUTPUTARG="--output:\"$OUTPUTFILE\""
- fi
-
- if ! printeval "mono $NUNIT3_CONSOLE --verbose --framework:V4.0 --result:\"$XMLFILE;format=nunit3\" $OUTPUTARG $ERRORARG --work:\"$FSCBINPATH\" \"$FSCBINPATH/../../net40/bin/FSharp.Compiler.Unittests.dll\" $WHERE_ARG_NUNIT"; then
- if [ -f "$OUTPUTFILE" ]; then
- echo -----------------------------------------------------------------
- cat "$OUTPUTFILE"
- fi
- if [ -f "$ERRORFILE" ]; then
- echo -----------------------------------------------------------------
- cat "$ERRORFILE"
- fi
- echo -----------------------------------------------------------------
- echo Error: Running tests net40-compilerunit failed, see logs above -- FAILED
- echo -----------------------------------------------------------------
- exit 1
- fi
-fi
-
-# ---------------- net40-coreunit -----------------------
-
-if [ "$TEST_NET40_COREUNIT_SUITE" = '1' ]; then
-
- OUTPUTARG=""
- ERRORARG=""
- OUTPUTFILE=""
- ERRORFILE=""
- XMLFILE="$RESULTSDIR/test-net40-coreunit-results.xml"
- if [ "$CI" = '1' ]; then
- ERRORFILE="$RESULTSDIR/test-net40-coreunit-errors.log"
- OUTPUTFILE="$RESULTSDIR/test-net40-coreunit-output.log"
- ERRORARG="--err:\"$ERRORFILE\""
- OUTPUTARG="--output:\"$OUTPUTFILE\""
- fi
-
- if ! printeval "mono $NUNIT3_CONSOLE --verbose --framework:V4.0 --result:\"$XMLFILE;format=nunit3\" $OUTPUTARG $ERRORARG --work:\"$FSCBINPATH\" \"$FSCBINPATH/FSharp.Core.Unittests.dll\" $WHERE_ARG_NUNIT"; then
- if [ -f "$OUTPUTFILE" ]; then
- echo -----------------------------------------------------------------
- cat "$OUTPUTFILE"
- fi
- if [ -f "$ERRORFILE" ]; then
- echo -----------------------------------------------------------------
- cat "$ERRORFILE"
- fi
- echo -----------------------------------------------------------------
- echo Error: Running tests net40-coreunit failed, see logs above -- FAILED
- echo -----------------------------------------------------------------
- exit 1
- fi
-fi
-
-# ---------------- portable-coreunit -----------------------
-
-if [ "$TEST_PORTABLE_COREUNIT_SUITE" = '1' ]; then
-
- OUTPUTARG=""
- ERRORARG=""
- OUTPUTFILE=""
- ERRORFILE=""
- XMLFILE="$RESULTSDIR/test-portable-coreunit-results.xml"
-
- if [ "$CI" = '1' ]; then
- OUTPUTFILE="$RESULTSDIR/test-portable-coreunit-output.log"
- ERRORFILE="$RESULTSDIR/test-portable-coreunit-errors.log"
- ERRORARG="--err:\"$ERRORFILE\""
- OUTPUTARG="--output:\"$OUTPUTFILE\""
- fi
-
- if ! printeval "mono $NUNIT3_CONSOLE /framework:V4.0 /result=\"$XMLFILE;format=nunit3\" $OUTPUTARG $ERRORARG /work=\"$FSCBINPATH\" \"$FSCBINPATH/../../portable7/bin/FSharp.Core.Unittests.dll\" \"$FSCBINPATH/../../portable47/bin/FSharp.Core.Unittests.dll\" \"$FSCBINPATH/../../portable78/bin/FSharp.Core.Unittests.dll\" \"$FSCBINPATH/../../portable259/bin/FSharp.Core.Unittests.dll\" $WHERE_ARG_NUNIT"; then
- if [ -f "$OUTPUTFILE" ]; then
- echo -----------------------------------------------------------------
- cat "$OUTPUTFILE"
- fi
- if [ -f "$ERRORFILE" ]; then
- echo -----------------------------------------------------------------
- cat "$ERRORFILE"
- fi
- echo -----------------------------------------------------------------
- echo Error: Running tests portable-coreunit failed, see logs above -- FAILED
- echo -----------------------------------------------------------------
- exit 1
- fi
-fi
-
-# ---------------- coreclr-coreunit -----------------------
-
-if [ "$TEST_CORECLR_COREUNIT_SUITE" = '1' ]; then
-
- XMLFILE="$RESULTSDIR/test-coreclr-coreunit-results.xml"
- OUTPUTFILE="$RESULTSDIR/test-coreclr-coreunit-output.log"
- ERRORFILE="$RESULTSDIR/test-coreclr-coreunit-errors.log"
-
- if ! printeval "$_dotnetexe \"${_scriptdir}tests/testbin/$BUILD_CONFIG/coreclr/FSharp.Core.Unittests/FSharp.Core.Unittests.dll\" $WHERE_ARG_NUNIT"; then
- echo -----------------------------------------------------------------
- echo Error: Running tests coreclr-coreunit failed, see logs above-- FAILED
- echo -----------------------------------------------------------------
- exit 1
- fi
-fi
-
-# ---------------- coreclr-fsharp -----------------------
-
-if [ "$TEST_CORECLR_FSHARP_SUITE" = '1' ]; then
-
- export single_threaded=true
- export permutations=FSC_CORECLR
-
- OUTPUTARG=""
- ERRORARG=""
- OUTPUTFILE=""
- ERRORFILE=""
- XMLFILE="$RESULTSDIR/test-coreclr-fsharp-results.xml"
- if ! printeval "$_dotnetexe \"${_scriptdir}tests/testbin/$BUILD_CONFIG/coreclr/FSharp.Tests.FSharpSuite.DrivingCoreCLR/FSharp.Tests.FSharpSuite.DrivingCoreCLR.dll\" $WHERE_ARG_NUNIT"; then
- echo -----------------------------------------------------------------
- echo Error: Running tests coreclr-fsharp failed, see logs above-- FAILED
- echo -----------------------------------------------------------------
- exit 1
- fi
-fi
-
-# ---------------- net40-fsharpqa -----------------------
-
-OSARCH="${PROCESSOR_ARCHITECTURE:-x64}"
-
-# Set this to 1 in order to use an external compiler host process
-# This only has an effect when running the FSHARPQA tests, but can
-# greatly speed up execution since fsc.exe does not need to be spawned thousands of times
-HOSTED_COMPILER=1
-
-if [ "$TEST_NET40_FSHARPQA_SUITE" = '1' ]; then
-
- export FSC="$FSCBINPATH/fsc.exe"
- export FSCOREDLLPATH="$FSCBINPATH/FSharp.Core.dll"
- export PATH="$FSCBINPATH;$PATH"
-
- if ! command -v perl > /dev/null; then
- failwith "perl is not in the PATH, it is required for the net40-fsharpqa test suite"
- fi
-
- OUTPUTFILE=test-net40-fsharpqa-results.log
- ERRORFILE=test-net40-fsharpqa-errors.log
- FAILENV=test-net40-fsharpqa-errors
-
- { pushd "${_scriptdir}tests/fsharpqa/source" && \
- printeval "perl tests/fsharpqa/testenv/bin/runall.pl -resultsroot $RESULTSDIR -results $OUTPUTFILE -log $ERRORFILE -fail $FAILENV -cleanup:no $TTAGS_ARG_RUNALL $PARALLEL_ARG" && \
- popd; } || {
- if [ -f "$RESULTSDIR/$OUTPUTFILE" ]; then
- echo -----------------------------------------------------------------
- cat "$RESULTSDIR/$OUTPUTFILE"
- fi
- if [ -f "$RESULTSDIR/$ERRORFILE" ]; then
- echo -----------------------------------------------------------------
- cat "$RESULTSDIR/$ERRORFILE"
- fi
- echo -----------------------------------------------------------------
- echo Error: Running tests net40-fsharpqa failed, see logs above -- FAILED
- echo -----------------------------------------------------------------
- exit 1
- }
-fi
+make Configuration=release
diff --git a/build/config/AssemblySignToolData.json b/build/config/AssemblySignToolData.json
new file mode 100644
index 00000000000..6857a57f0dd
--- /dev/null
+++ b/build/config/AssemblySignToolData.json
@@ -0,0 +1,73 @@
+{
+ "sign": [
+ {
+ "certificate": "Microsoft",
+ "strongName": "StrongName",
+ "values": [
+ "net40\\bin\\FSharp.Core.dll",
+ "net40\\bin\\*\\FSharp.Core.resources.dll",
+ "net40\\bin\\FSharp.Build.dll",
+ "net40\\bin\\*\\FSharp.Build.resources.dll",
+ "net40\\bin\\FSharp.Compiler.Private.dll",
+ "net40\\bin\\*\\FSharp.Compiler.Private.resources.dll",
+ "net40\\bin\\FSharp.Compiler.Server.Shared.dll",
+ "net40\\bin\\FSharp.Compiler.Interactive.Settings.dll",
+ "net40\\bin\\*\\FSharp.Compiler.Interactive.Settings.resources.dll",
+ "net40\\bin\\fsc.exe",
+ "net40\\bin\\fsi.exe",
+ "net40\\bin\\fsiAnyCpu.exe",
+ "net40\\bin\\FSharp.VS.FSI.dll",
+ "net40\\bin\\*\\FSharp.VS.FSI.resources.dll",
+ "net40\\bin\\FSharp.LanguageService.Base.dll",
+ "net40\\bin\\*\\FSharp.LanguageService.Base.resources.dll",
+ "net40\\bin\\FSharp.LanguageService.dll",
+ "net40\\bin\\*\\FSharp.LanguageService.resources.dll",
+ "net40\\bin\\FSharp.UIResources.dll",
+ "net40\\bin\\*\\FSharp.UIResources.resources.dll",
+ "net40\\bin\\FSharp.Editor.dll",
+ "net40\\bin\\*\\FSharp.Editor.resources.dll",
+ "net40\\bin\\FSharp.ProjectSystem.Base.dll",
+ "net40\\bin\\*\\FSharp.ProjectSystem.Base.resources.dll",
+ "net40\\bin\\FSharp.ProjectSystem.PropertyPages.dll",
+ "net40\\bin\\*\\FSharp.ProjectSystem.PropertyPages.resources.dll",
+ "net40\\bin\\FSharp.ProjectSystem.FSharp.dll",
+ "net40\\bin\\*\\FSharp.ProjectSystem.FSharp.resources.dll",
+ "net40\\bin\\FSharp.PatternMatcher.dll",
+ "coreclr\\bin\\FSharp.Core.dll",
+ "coreclr\\bin\\*\\FSharp.Core.resources.dll",
+ "coreclr\\bin\\FSharp.Build.dll",
+ "coreclr\\bin\\*\\FSharp.Build.resources.dll",
+ "coreclr\\bin\\FSharp.Compiler.Private.dll",
+ "coreclr\\bin\\*\\FSharp.Compiler.Private.resources.dll",
+ "coreclr\\bin\\FSharp.Compiler.Interactive.Settings.dll",
+ "coreclr\\bin\\*\\FSharp.Compiler.Interactive.Settings.resources.dll",
+ "coreclr\\bin\\fsc.exe",
+ "coreclr\\bin\\fsi.exe"
+ ]
+ },
+ {
+ "certificate": "VsixSHA2",
+ "strongName": null,
+ "values": [
+ "net40\\bin\\VisualFSharpFull.vsix",
+ "net40\\bin\\VisualFSharpTemplate.vsix",
+ "insertion\\Microsoft.FSharp.Dependencies.vsix",
+ "insertion\\Microsoft.FSharp.VSIX.Full.Resources.*.vsix"
+ ]
+ }
+ ],
+ "exclude": [
+ "e_sqlite3.dll",
+ "FSharp.Core.4.5.2.nupkg",
+ "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
new file mode 100644
index 00000000000..ec8432ca9ad
--- /dev/null
+++ b/build/config/InsertionSignToolData.json
@@ -0,0 +1,37 @@
+{
+ "sign": [
+ {
+ "certificate": "VsixSHA2",
+ "strongName": null,
+ "values": [
+ "insertion\\Microsoft.FSharp.Compiler.vsix",
+ "insertion\\Microsoft.FSharp.Compiler.Resources.*.vsix",
+ "insertion\\Microsoft.FSharp.Dependencies.vsix",
+ "insertion\\Microsoft.FSharp.IDE.vsix",
+ "insertion\\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
new file mode 100644
index 00000000000..20007f59e36
--- /dev/null
+++ b/build/config/PackageSignToolData.json
@@ -0,0 +1,24 @@
+{
+ "sign": [
+ {
+ "certificate": "NuGet",
+ "strongName": null,
+ "values": [
+ "artifacts\\*.nupkg",
+ "artifacts\\*\\*.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",
+ "fsi.exe"
+ ]
+}
\ No newline at end of file
diff --git a/build/config/packages.config b/build/config/packages.config
new file mode 100644
index 00000000000..e131ae53c92
--- /dev/null
+++ b/build/config/packages.config
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/build/projects/PrepareDependencyUptake.proj b/build/projects/PrepareDependencyUptake.proj
new file mode 100644
index 00000000000..78ded8de2ad
--- /dev/null
+++ b/build/projects/PrepareDependencyUptake.proj
@@ -0,0 +1,33 @@
+
+
+
+ $(MSBuildThisFileDirectory)..\..\Tools\dependencyUptake
+ $(DependencyUptakeDirectory)\PackageVersions.props
+ $(DependencyUptakeDirectory)\packages.config
+ $(DependencyUptakeDirectory)\NuGet.config
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/scripts/run-signtool.cmd b/build/scripts/run-signtool.cmd
new file mode 100644
index 00000000000..15ae3420693
--- /dev/null
+++ b/build/scripts/run-signtool.cmd
@@ -0,0 +1,69 @@
+@echo off
+:: Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
+setlocal enableDelayedExpansion
+set scriptdir=%~dp0
+set MSBuild=
+set SignType=
+set ConfigFile=
+
+::
+:: Validate arguments
+::
+
+:parsearg
+if "%1" == "" goto doneargs
+set arg=%1
+set argv=%2
+
+if /i "%arg%" == "/?" goto help
+if /i "%arg%" == "-h" goto help
+if /i "%arg%" == "--help" goto help
+if /i "%arg%" == "-MSBuild" (
+ set MSBuild=%argv%
+ shift
+)
+if /i "%arg%" == "-SignType" (
+ set SignType=%argv%
+ shift
+)
+if /i "%arg%" == "-Configuration" (
+ set Configuration=%argv%
+ shift
+)
+if /i "%arg%" == "-ConfigFile" (
+ set ConfigFile=%argv%
+ shift
+)
+
+shift
+goto parsearg
+
+:doneargs
+
+if not defined MSBuild echo Location of MSBuild.exe not specified. && goto error
+if not defined ConfigFile echo Configuration file not specified. && goto error
+if not exist "%MSBuild%" echo The specified MSBuild.exe does not exist. && goto error
+
+set NUGET_PACKAGES=%USERPROFILE%\.nuget\packages
+set _signtoolexe=%NUGET_PACKAGES%\RoslynTools.SignTool\1.0.0-beta2-dev3\tools\SignTool.exe
+set SignToolArgs=-msbuildPath %MSBuild% -config "%ConfigFile%" -nugetPackagesPath "%NUGET_PACKAGES%"
+if /i "%SignType%" == "real" goto runsigntool
+if /i "%SignType%" == "test" set SignToolArgs=%SignToolArgs% -testSign && goto runsigntool
+set SignToolArgs=%SignToolArgs% -test
+
+:runsigntool
+
+if not exist "%_signtoolexe%" echo The signing tool could not be found at location '%_signtoolexe%' && goto error
+set SignToolArgs=%SignToolArgs% "%scriptdir%..\..\%Configuration%"
+echo "%_signtoolexe%" %SignToolArgs%
+ "%_signtoolexe%" %SignToolArgs%
+if errorlevel 1 goto error
+goto :EOF
+
+:help
+echo Usage: %0 -MSBuild path\to\msbuild.exe -ConfigFile path\to\SignToolData.json [-SignType ^]
+goto :EOF
+
+:error
+echo Error running the sign tool.
+exit /b 1
diff --git a/build/targets/AssemblyVersions.props b/build/targets/AssemblyVersions.props
new file mode 100644
index 00000000000..5e82721efa6
--- /dev/null
+++ b/build/targets/AssemblyVersions.props
@@ -0,0 +1,68 @@
+
+
+
+
+ $([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
+ $(FSCoreMajorVersion).3
+ $(FSCoreMajorVersion).0.0
+
+ 10.2
+ $(FSPackageMajorVersion).3
+ $(FSPackageVersion).0
+
+ 15
+ 8
+ $(VSMajorVersion).0
+ $(VSMajorVersion).$(VSMinorVersion).0.0
+
+ $(FSCoreVersion)
+
+
+ $(FSProductVersion)
+
+
+ $(VSAssemblyVersion)
+
+
+ $(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
new file mode 100644
index 00000000000..fad7b976127
--- /dev/null
+++ b/build/targets/CommonPackages.targets
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/build/targets/ConvertPortablePdbs.targets b/build/targets/ConvertPortablePdbs.targets
new file mode 100644
index 00000000000..0965566db0c
--- /dev/null
+++ b/build/targets/ConvertPortablePdbs.targets
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+ $(FinalOutputPath)\ConvertedPdbs
+ $(NuGetPackageRoot)Microsoft.DiaSymReader.Pdb2Pdb\$(MicrosoftDiaSymReaderPdb2PdbPackageVersion)\tools\Pdb2Pdb.exe
+ "$(TargetPath)" /out "$(ConvertedPdbsDirectory)\$(TargetName).pdb" /verbose /srcsvrvar SRC_INDEX=public
+
+
+
+
+
+
+
diff --git a/build/targets/GenerateAssemblyAttributes.targets b/build/targets/GenerateAssemblyAttributes.targets
new file mode 100644
index 00000000000..11206a9b76d
--- /dev/null
+++ b/build/targets/GenerateAssemblyAttributes.targets
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+ $(IntermediateOutputPath)$(MSBuildProjectName).AssemblyLevelAttributes$(DefaultLanguageSourceExtension)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(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
new file mode 100644
index 00000000000..ca4bb15e7ea
--- /dev/null
+++ b/build/targets/GenerateInternalsVisibleTo.targets
@@ -0,0 +1,44 @@
+
+
+
+ $(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)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/targets/GitHash.props b/build/targets/GitHash.props
new file mode 100644
index 00000000000..30f2d03b915
--- /dev/null
+++ b/build/targets/GitHash.props
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+ $(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/PackageVersions.props b/build/targets/PackageVersions.props
new file mode 100644
index 00000000000..2f68181bd5f
--- /dev/null
+++ b/build/targets/PackageVersions.props
@@ -0,0 +1,91 @@
+
+
+
+
+
+ $([System.IO.File]::ReadAllText('$(MSBuildThisFileDirectory)..\..\RoslynPackageVersion.txt').Trim())
+
+
+ 1.5.0
+ 4.3.0
+ 1.5.0
+ 1.6.0
+ 4.3.0
+
+
+ $(RoslynPackageVersion)
+ $(RoslynPackageVersion)
+ $(RoslynPackageVersion)
+ $(RoslynPackageVersion)
+ $(RoslynPackageVersion)
+
+
+ 15.8.166
+ $(MicrosoftBuildOverallPackagesVersion)
+ $(MicrosoftBuildOverallPackagesVersion)
+ $(MicrosoftBuildOverallPackagesVersion)
+ $(MicrosoftBuildOverallPackagesVersion)
+ 1.0.1
+
+
+ 8.0.1
+ 14.0.25420
+ 15.6.27740
+ 15.0.26201-alpha
+ 1.1.4322
+ 15.0.26201
+ 15.0.26201
+ 15.6.27740
+ 15.6.27740
+ 15.6.27740
+ 8.0.50727
+ 7.10.6071
+ 15.0.26201
+ 8.0.50727
+ 2.3.6152103
+ 14.3.25407
+ 15.0.26201
+ 15.0.26201
+ 15.0.26201
+ 10.0.30319
+ 11.0.50727
+ 15.0.25123-Dev15Preview
+ 7.10.6072
+ 8.0.50727
+ 9.0.30729
+ 10.0.30319
+ 11.0.61030
+ 12.0.30110
+ 15.6.27740
+ 7.10.6071
+ 8.0.50727
+ 10.0.30319
+ 12.0.30112
+ 15.6.27740
+ 15.6.27740
+ 15.3.23
+ 15.0.26201
+ 15.3.15
+ 9.0.30729
+ 15.6.170
+ 12.0.4
+ 7.0.4
+ 8.0.4
+ 11.0.4
+ 7.0.4
+
+
+ 1.0.30
+ 1.1.0-roslyn-62714-01
+ 8.0.0-alpha
+ 1.0.0
+ 9.0.1
+ 3.5.0
+ 0.2.0-beta-000081
+
+
+
+
+
+
+
diff --git a/code b/code
deleted file mode 100644
index a22238d717d..00000000000
--- a/code
+++ /dev/null
@@ -1,46 +0,0 @@
-# Contributor Covenant Code of Conduct
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment include:
-
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at opensource@microsoft.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
-
-[homepage]: http://contributor-covenant.org
-[version]: http://contributor-covenant.org/version/1/4/
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index ec3df2198f6..00000000000
--- a/configure.ac
+++ /dev/null
@@ -1,76 +0,0 @@
-# -*- Autoconf -*-
-# Process this file with autoconf to produce a configure script.
-
-AC_PREREQ([2.61])
-AC_INIT([fsharp], [4.0], [https://github.com/fsharp/fsharp/issues])
-
-# Checks for programs.
-AC_PROG_MAKE_SET
-
-AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-
-# pkg-config precedence: 1) our prefix 2) the system Mono location 3) the PATH
-prefix_pkg_config="$prefix"/bin/pkg-config
-osx_pkg_config=/Library/Frameworks/Mono.framework/Versions/Current/bin/pkg-config
-
-if test -e $prefix_pkg_config; then
- PKG_CONFIG=$prefix_pkg_config
-elif test -e $osx_pkg_config; then
- PKG_CONFIG=$osx_pkg_config
-elif test "x$PKG_CONFIG" = "xno"; then
- AC_MSG_ERROR([You need to install pkg-config])
-fi
-
-AC_MSG_NOTICE("pkg-config: $PKG_CONFIG")
-AC_MSG_NOTICE("PKG_CONFIG_LIBDIR: $PKG_CONFIG_LIBDIR")
-
-MONO_REQUIRED_VERSION=4.0
-MONO_RECOMMENDED_VERSION=4.2
-MONO_RECOMMENDED_REASON="as it is newer and already considered a stable version"
-
-if ! $PKG_CONFIG --atleast-version=$MONO_REQUIRED_VERSION mono; then
- AC_MSG_ERROR("You need mono $MONO_REQUIRED_VERSION")
-fi
-
-if ! $PKG_CONFIG --atleast-version=$MONO_RECOMMENDED_VERSION mono; then
- AC_MSG_WARN([Mono $MONO_RECOMMENDED_VERSION or higher is recommended, $MONO_RECOMMENDED_REASON])
-fi
-
-AC_ARG_WITH([gacdir],
- [ --with-gacdir=/path/to/gac Specify the gac directory (ex: /usr/lib/mono/gac)],
- [],
- [with_gacdir=no]
- )
-
-MONOPREFIX=$(cd `$PKG_CONFIG --variable=prefix mono` && pwd)
-MONOBINDIR="$MONOPREFIX"/bin
-MONOLIBDIR="$MONOPREFIX"/lib
-
-AC_PATH_PROG(MSBUILD, msbuild, no)
-msbuild_from_pkg_config="$MONOBINDIR"/msbuild
-if test -e $msbuild_from_pkg_config; then
- MSBUILD=$msbuild_from_pkg_config
-elif test "x$MSBUILD" == "xno"; then
- AC_MSG_ERROR([Could not find msbuild])
-fi
-AC_MSG_NOTICE(msbuild: $MSBUILD)
-
-AC_SUBST(MONOBINDIR)
-AC_SUBST(MONOLIBDIR)
-
-AC_CONFIG_FILES([
-mono/launcher
-mono/config.make
-])
-AC_OUTPUT
-
-CONFIGURE_FILE=autogen.sh
-if ! test -e $CONFIGURE_FILE; then
- CONFIGURE_FILE=configure
-fi
-CONFIGURE_COMMAND="`dirname $0`/$CONFIGURE_FILE"
-
-if ! test "x$MONOPREFIX" = "x$prefix"; then
- AC_WARN([Prefix to use is not the same as mono's: $prefix
- Consider using: $CONFIGURE_COMMAND --prefix=$MONOPREFIX])
-fi
diff --git a/fcs/.gitignore b/fcs/.gitignore
new file mode 100644
index 00000000000..51023f1bf50
--- /dev/null
+++ b/fcs/.gitignore
@@ -0,0 +1,11 @@
+FSharp.Compiler.Service.Tests/TestResults/*
+FSharp.Compiler.Service.netstandard/illex.fs
+FSharp.Compiler.Service.netstandard/ilpars.fs
+FSharp.Compiler.Service.netstandard/ilpars.fsi
+FSharp.Compiler.Service.netstandard/lex.fs
+FSharp.Compiler.Service.netstandard/pars.fs
+FSharp.Compiler.Service.netstandard/pars.fsi
+FSharp.Compiler.Service.netstandard/pplex.fs
+FSharp.Compiler.Service.netstandard/pppars.fs
+FSharp.Compiler.Service.netstandard/pppars.fsi
+
diff --git a/fcs/.paket/paket.exe b/fcs/.paket/paket.exe
index ef3ea32af2a..b98e000b232 100644
Binary files a/fcs/.paket/paket.exe and b/fcs/.paket/paket.exe differ
diff --git a/fcs/FSharp.Compiler.Service.MSBuild.v12/FSharp.Compiler.Service.MSBuild.v12.fsproj b/fcs/FSharp.Compiler.Service.MSBuild.v12/FSharp.Compiler.Service.MSBuild.v12.fsproj
index f66cda2f775..8128ab15731 100644
--- a/fcs/FSharp.Compiler.Service.MSBuild.v12/FSharp.Compiler.Service.MSBuild.v12.fsproj
+++ b/fcs/FSharp.Compiler.Service.MSBuild.v12/FSharp.Compiler.Service.MSBuild.v12.fsproj
@@ -1,47 +1,25 @@
-
-
-
+
$(MSBuildProjectDirectory)\..\..\src
+
- Debug
- AnyCPU
- $(MSBuildProjectDirectory)\..\..\..\
- Library
- FSharp.Compiler.Service.MSBuild.v12
- $(NoWarn);44;62;9
- {8157b50e-397d-4232-a4e0-1977afc7076d}
- true
- 0x06800000
- true
- true
- $(OtherFlags) --times
- $(NoWarn);69;65;54;61;75
- true
- ..\..\$(Configuration)\fcs\net45\
-
- false
- true
- AnyCPU
+ net45
+ true
+ ..\..\$(Configuration.ToLower())\fcs
$(DefineConstants);CROSS_PLATFORM_COMPILER
$(DefineConstants);ENABLE_MONO_SUPPORT
- $(OtherFlags) /warnon:1182
- $(OtherFlags) --version:$(VersionPrefix).0
-
- v4.5
-
-
- DEBUG; $(DefineConstants)
- false
- $(OtherFlags) --no-jit-optimize --jit-tracking
-
-
- true
+
+ Additional DLL for legacy compat for the F# compiler service.
+ Additional DLL for legacy compat for the F# compiler service.
+ false
+ Microsoft Corporation; F# community contributors
+ https://github.com/fsharp/FSharp.Compiler.Service/blob/master/LICENSE
+ https://github.com/fsharp/FSharp.Compiler.Service
+ https://raw.github.com/fsharp/FSharp.Compiler.Service/master/misc/logo.png
+ F#, compiler, msbuild
@@ -49,35 +27,33 @@
-
-
-
-
-
-
+
+
+
+
- $(FSharpSourcesRoot)/../fcs/dependencies/MSBuild.v12.0/Microsoft.Build.Framework.dll
+ $(FSharpSourcesRoot)\..\fcs\dependencies\MSBuild.v12.0\Microsoft.Build.Framework.dll
false
- $(FSharpSourcesRoot)/../fcs/dependencies/MSBuild.v12.0/Microsoft.Build.Engine.dll
+ $(FSharpSourcesRoot)\..\fcs\dependencies\MSBuild.v12.0\Microsoft.Build.Engine.dll
false
- $(FSharpSourcesRoot)/../fcs/dependencies/MSBuild.v12.0/Microsoft.Build.dll
+ $(FSharpSourcesRoot)\..\fcs\dependencies\MSBuild.v12.0\Microsoft.Build.dll
false
- $(FSharpSourcesRoot)/../fcs/dependencies/MSBuild.v12.0/Microsoft.Build.Utilities.v12.0.dll
+ $(FSharpSourcesRoot)\..\fcs\dependencies\MSBuild.v12.0\Microsoft.Build.Utilities.v12.0.dll
false
- $(FSharpSourcesRoot)/../fcs/dependencies/MSBuild.v12.0/Microsoft.Build.Tasks.v12.0.dll
+ $(FSharpSourcesRoot)\..\fcs\dependencies\MSBuild.v12.0\Microsoft.Build.Tasks.v12.0.dll
false
- $(FSharpSourcesRoot)\..\packages\Microsoft.Portable.FSharp.Core.4.1.20\lib\profiles\net40\FSharp.Core.dll
+ $(FSharpSourcesRoot)\..\packages\Microsoft.Portable.FSharp.Core.$(FSharpCoreFrozenPortablePackageVersion)\lib\profiles\net40\FSharp.Core.dll
false
@@ -87,6 +63,6 @@
{2e4d67b4-522d-4cf7-97e4-ba940f0b18f3}
True
+
-
-
+
\ No newline at end of file
diff --git a/fcs/FSharp.Compiler.Service.ProjectCracker/FSharp.Compiler.Service.ProjectCracker.fsproj b/fcs/FSharp.Compiler.Service.ProjectCracker/FSharp.Compiler.Service.ProjectCracker.fsproj
index b75f912c983..86296dcea04 100644
--- a/fcs/FSharp.Compiler.Service.ProjectCracker/FSharp.Compiler.Service.ProjectCracker.fsproj
+++ b/fcs/FSharp.Compiler.Service.ProjectCracker/FSharp.Compiler.Service.ProjectCracker.fsproj
@@ -1,67 +1,37 @@
-
-
+
$(MSBuildProjectDirectory)\..\..\src
+
- Debug
- AnyCPU
- $(MSBuildProjectDirectory)\..\..\..\
- 2.0
- 893c3cd9-5af8-4027-a667-21e62fc2c703
- FSharp.Compiler.Service.ProjectCracker
- FSharp.Compiler.Service.ProjectCracker
- FSharp.Compiler.Service.ProjectCracker
- Library
- ..\..\$(Configuration)\fcs\net45\
- $(OutputPath)$(AssemblyName).xml
- false
-
- v4.5
- true
- AnyCPU
- 3
- $(OtherFlags) --version:$(VersionPrefix).0
+ net45
+ true
+ ..\..\$(Configuration.ToLower())\fcs
-
- true
- full
- false
- false
- DEBUG;TRACE
-
-
- pdbonly
- true
- true
- TRACE
+
+ Legacy project file cracker for the F# compiler service.
+ Legacy project file cracker for the F# compiler service.
+ false
+ Microsoft Corporation; F# community contributors
+ https://github.com/fsharp/FSharp.Compiler.Service/blob/master/LICENSE
+ https://github.com/fsharp/FSharp.Compiler.Service
+ https://raw.github.com/fsharp/FSharp.Compiler.Service/master/misc/logo.png
+ F#, compiler, msbuild
-
-
-
-
-
-
-
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Portable.FSharp.Core.4.1.20\lib\profiles\net40\FSharp.Core.dll
- false
-
-
ProjectCrackerOptions.fs
+
+
+
-
- FSharp.Compiler.Service
- {2e4d67b4-522d-4cf7-97e4-ba940f0b18f3}
- True
-
+
+
+
+
-
\ No newline at end of file
diff --git a/fcs/FSharp.Compiler.Service.ProjectCracker/ProjectCracker.fs b/fcs/FSharp.Compiler.Service.ProjectCracker/ProjectCracker.fs
index 7a36085de06..72e34499678 100644
--- a/fcs/FSharp.Compiler.Service.ProjectCracker/ProjectCracker.fs
+++ b/fcs/FSharp.Compiler.Service.ProjectCracker/ProjectCracker.fs
@@ -38,6 +38,7 @@ module Utils =
logMap := Map.add opts.ProjectFile opts.LogOutput !logMap
{ ProjectFileName = opts.ProjectFile
+ ProjectId = None
SourceFiles = sourceFiles
OtherOptions = otherOptions
ReferencedProjects = referencedProjects()
diff --git a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/FSharp.Compiler.Service.ProjectCrackerTool.fsproj b/fcs/FSharp.Compiler.Service.ProjectCrackerTool/FSharp.Compiler.Service.ProjectCrackerTool.fsproj
index 66d196a1d54..d7f29459dee 100644
--- a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/FSharp.Compiler.Service.ProjectCrackerTool.fsproj
+++ b/fcs/FSharp.Compiler.Service.ProjectCrackerTool/FSharp.Compiler.Service.ProjectCrackerTool.fsproj
@@ -1,44 +1,19 @@
-
-
+
$(MSBuildProjectDirectory)\..\..\src
+
- Debug
- AnyCPU
- $(MSBuildProjectDirectory)\..\..\..\
- 2.0
- b1bdd96d-47e1-4e65-8107-fbae23a06db4
Exe
- ..\..\$(Configuration)\fcs\net45\
- $(OutputPath)$(AssemblyName).xml
- FSharp.Compiler.Service.ProjectCrackerTool
- FSharp.Compiler.Service.ProjectCrackerTool
- FSharp.Compiler.Service.ProjectCrackerTool
+ net45
+ true
+ $(DefineConstants);CROSS_PLATFORM_COMPILER
+ $(DefineConstants);ENABLE_MONO_SUPPORT
$(OtherFlags) --staticlink:FSharp.Core
- $(NoWarn);40;44;2011
true
- false
-
- v4.5
- 3
- AnyCPU
- true
- $(OtherFlags) --version:$(VersionPrefix).0
-
-
- true
- full
- false
- false
- DEBUG;TRACE
-
-
- pdbonly
- true
- true
- TRACE
+ false
+ ..\..\$(Configuration.ToLower())\fcs
@@ -47,84 +22,32 @@
-
-
-
-
-
-
-
-
-
-
+
+
- $(FSharpSourcesRoot)\..\packages\Microsoft.Portable.FSharp.Core.4.1.20\lib\profiles\net40\FSharp.Core.dll
+ $(FSharpSourcesRoot)\..\packages\Microsoft.Portable.FSharp.Core.$(FSharpCoreFrozenPortablePackageVersion)\lib\profiles\net40\FSharp.Core.dll
+ false
+
+
+
+ $(FSharpSourcesRoot)\..\fcs\dependencies\MSBuild.v12.0\Microsoft.Build.Framework.dll
+ false
+
+
+ $(FSharpSourcesRoot)\..\fcs\dependencies\MSBuild.v12.0\Microsoft.Build.Engine.dll
+ false
+
+
+ $(FSharpSourcesRoot)\..\fcs\dependencies\MSBuild.v12.0\Microsoft.Build.dll
+ false
+
+
+ $(FSharpSourcesRoot)\..\fcs\dependencies\MSBuild.v12.0\Microsoft.Build.Utilities.v12.0.dll
+ false
+
+
+ $(FSharpSourcesRoot)\..\fcs\dependencies\MSBuild.v12.0\Microsoft.Build.Tasks.v12.0.dll
false
-
-
-
-
-
- ..\packages\Microsoft.Build\lib\net45\Microsoft.Build.dll
- True
- True
-
-
-
-
-
-
-
-
- ..\packages\Microsoft.Build.Engine\lib\net45\Microsoft.Build.Engine.dll
- True
- True
-
-
-
-
-
-
-
-
- ..\packages\Microsoft.Build.Framework\lib\net45\Microsoft.Build.Framework.dll
- True
- True
-
-
-
-
-
-
-
-
- ..\packages\Microsoft.Build.Utilities.Core\lib\net45\Microsoft.Build.Utilities.Core.dll
- True
- True
-
-
-
-
-
-
-
-
- True
-
-
-
-
-
-
-
-
- ..\packages\System.Threading.Tasks.Dataflow\lib\portable-net45+win8+wpa81\System.Threading.Tasks.Dataflow.dll
- True
- True
-
-
-
-
-
\ No newline at end of file
+
diff --git a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/Program.fs b/fcs/FSharp.Compiler.Service.ProjectCrackerTool/Program.fs
index 7ce360c312f..e3de75d0d1b 100644
--- a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/Program.fs
+++ b/fcs/FSharp.Compiler.Service.ProjectCrackerTool/Program.fs
@@ -6,12 +6,12 @@ open System.Runtime.Serialization.Json
module Program =
-#if !DOTNETCORE
+#if !NETCOREAPP2_0
let addMSBuildv14BackupResolution () =
let onResolveEvent = new ResolveEventHandler(fun sender evArgs ->
let requestedAssembly = AssemblyName(evArgs.Name)
- if requestedAssembly.Name.StartsWith("Microsoft.Build") &&
- not (requestedAssembly.Name.EndsWith(".resources")) &&
+ if requestedAssembly.Name.StartsWith("Microsoft.Build", StringComparison.Ordinal) &&
+ not (requestedAssembly.Name.EndsWith(".resources", StringComparison.Ordinal)) &&
not (requestedAssembly.Version.ToString().Contains("12.0.0.0"))
then
// If the version of MSBuild that we're using wasn't present on the machine, then
@@ -40,7 +40,7 @@ module Program =
let asText = Array.exists (fun (s: string) -> s = "--text") argv
let argv = Array.filter (fun (s: string) -> s <> "--text") argv
-#if !DOTNETCORE
+#if !NETCOREAPP2_0
addMSBuildv14BackupResolution ()
#endif
crackAndSendOutput asText argv
diff --git a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/ProjectCrackerTool.fs b/fcs/FSharp.Compiler.Service.ProjectCrackerTool/ProjectCrackerTool.fs
index a20c7a33c0e..daa5c3c9e05 100644
--- a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/ProjectCrackerTool.fs
+++ b/fcs/FSharp.Compiler.Service.ProjectCrackerTool/ProjectCrackerTool.fs
@@ -11,7 +11,7 @@ module internal ProjectCrackerTool =
open Microsoft.Build.Evaluation
let runningOnMono =
-#if DOTNETCORE
+#if NETCOREAPP2_0
false
#else
try match System.Type.GetType("Mono.Runtime") with null -> false | _ -> true
@@ -128,7 +128,7 @@ module internal ProjectCrackerTool =
outFileOpt, directory, getItems, references, projectReferences, getprop project, project.FullPath
-#if !DOTNETCORE
+#if !NETCOREAPP2_0
let CrackProjectUsingOldBuildAPI (fsprojFile:string) properties logOpt =
let engine = new Microsoft.Build.BuildEngine.Engine()
Option.iter (fun l -> engine.RegisterLogger(l)) logOpt
@@ -201,7 +201,7 @@ module internal ProjectCrackerTool =
let outFileOpt, directory, getItems, references, projectReferences, getProp, fsprojFullPath =
try
-#if DOTNETCORE
+#if NETCOREAPP2_0
CrackProjectUsingNewBuildAPI fsprojFileName properties logOpt
with
#else
diff --git a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/paket.references b/fcs/FSharp.Compiler.Service.ProjectCrackerTool/paket.references
deleted file mode 100644
index 3ad1f9662c7..00000000000
--- a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/paket.references
+++ /dev/null
@@ -1,4 +0,0 @@
-Microsoft.Build.Utilities.Core
-Microsoft.Build.Engine
-Microsoft.Build
-System.Threading.Tasks.Dataflow
\ No newline at end of file
diff --git a/fcs/FSharp.Compiler.Service.Tests.netcore/FSharp.Compiler.Service.Tests.netcore.fsproj b/fcs/FSharp.Compiler.Service.Tests.netcore/FSharp.Compiler.Service.Tests.netcore.fsproj
deleted file mode 100644
index 71f5341bb71..00000000000
--- a/fcs/FSharp.Compiler.Service.Tests.netcore/FSharp.Compiler.Service.Tests.netcore.fsproj
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
- netcoreapp1.0
- $(DefineConstants);DOTNETCORE;FX_ATLEAST_45;FX_ATLEAST_PORTABLE;FX_NO_RUNTIMEENVIRONMENT;FX_RESHAPED_REFLECTION;TODO_REWORK_ASSEMBLY_LOAD;
- $(NoWarn);44;
- true
- true
- true
- false
-
-
-
- ReshapedReflection.fs
-
-
- FsUnit.fs
-
-
- Common.fs
-
-
- EditorTests.fs
-
-
- ExprTests.fs
-
-
- TokenizerTests.fs
-
-
- PerfTests.fs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/fcs/FSharp.Compiler.Service.Tests/App.config b/fcs/FSharp.Compiler.Service.Tests/App.config
index 1e7989fe8cf..fb0bc6286b1 100644
--- a/fcs/FSharp.Compiler.Service.Tests/App.config
+++ b/fcs/FSharp.Compiler.Service.Tests/App.config
@@ -4,12 +4,8 @@
-
-
-
-
-
-
+
+
diff --git a/fcs/FSharp.Compiler.Service.Tests/CSharp_Analysis/CSharp_Analysis.csproj b/fcs/FSharp.Compiler.Service.Tests/CSharp_Analysis/CSharp_Analysis.csproj
new file mode 100644
index 00000000000..49585864e4d
--- /dev/null
+++ b/fcs/FSharp.Compiler.Service.Tests/CSharp_Analysis/CSharp_Analysis.csproj
@@ -0,0 +1,10 @@
+
+
+
+ net45;netstandard2.0
+ false
+
+
+
+
+
\ No newline at end of file
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 e83bc805c00..8d09c3a26f1 100644
--- a/fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj
+++ b/fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj
@@ -1,51 +1,41 @@
-
-
+
$(MSBuildProjectDirectory)\..\..\src
+
- Debug
- AnyCPU
- $(MSBuildProjectDirectory)\..\..\..\
- 2.0
- EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F
- Library
- FSharp
- FSharp.Compiler.Service.Tests
- FSharp.Compiler.Service.Tests
- LIBRARY
- 58;75
- v4.6
- false
- ..\..\$(Configuration)\fcs\net45\
- true
- 3
- true
+ net46;netcoreapp2.0
+ true
+ $(NoWarn);44;75;
+ true
+ true
+ false
+ true
-
- true
- full
- false
- AnyCPU
- true
-
-
- pdbonly
- true
- AnyCPU
- true
+
+ $(DefineConstants);FX_NO_RUNTIMEENVIRONMENT
+ $(DefineConstants);NO_PROJECTCRACKER
+
+ ReshapedReflection.fs
+
FsUnit.fs
Common.fs
+
+ AssemblyReaderShim.fs
+
EditorTests.fs
+
+ Symbols.fs
+
FileSystemTests.fs
@@ -73,19 +63,26 @@
StructureTests.fs
-
- FSharp.Core.optdata
- PreserveNewest
-
-
- FSharp.Core.sigdata
- PreserveNewest
-
+
+ TokenizerTests.fs
+
+
+ Program.fs
+
-
+
+
+
+
+
+
+
+
+
+
@@ -98,98 +95,7 @@
+
+
-
-
- $(FSharpSourcesRoot)\..\packages\System.Collections.Immutable.$(SystemCollectionsImmutableVersion)\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll
- True
-
-
- True
- ..\..\packages\NUnit.3.5.0\lib\net45\nunit.framework.dll
-
-
-
- $(FSharpSourcesRoot)\..\packages\FSharp.Compiler.Tools.4.1.27\tools\FSharp.Core.dll
- true
-
-
- CSharp_Analysis
- {887630A3-4B1D-40EA-B8B3-2D842E9C40DB}
- True
-
-
- {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}
- FSharp.Compiler.Service
- True
-
-
- FSharp.Compiler.Service.ProjectCracker
- {893c3cd9-5af8-4027-a667-21e62fc2c703}
- True
-
-
-
-
-
-
-
- ..\packages\Microsoft.Build\lib\net45\Microsoft.Build.dll
- True
- True
-
-
-
-
-
-
-
-
- ..\packages\Microsoft.Build.Engine\lib\net45\Microsoft.Build.Engine.dll
- True
- True
-
-
-
-
-
-
-
-
- ..\packages\Microsoft.Build.Framework\lib\net45\Microsoft.Build.Framework.dll
- True
- True
-
-
-
-
-
-
-
-
- ..\packages\Microsoft.Build.Utilities.Core\lib\net45\Microsoft.Build.Utilities.Core.dll
- True
- True
-
-
-
-
-
-
-
-
- True
-
-
-
-
-
-
-
-
- True
-
-
-
-
\ No newline at end of file
diff --git a/fcs/FSharp.Compiler.Service.Tests/paket.references b/fcs/FSharp.Compiler.Service.Tests/paket.references
deleted file mode 100644
index c64e284f16b..00000000000
--- a/fcs/FSharp.Compiler.Service.Tests/paket.references
+++ /dev/null
@@ -1,3 +0,0 @@
-Microsoft.Build.Utilities.Core
-Microsoft.Build.Engine
-Microsoft.Build
\ No newline at end of file
diff --git a/fcs/FSharp.Compiler.Service.netstandard.sln b/fcs/FSharp.Compiler.Service.netstandard.sln
deleted file mode 100644
index 5cb21d46635..00000000000
--- a/fcs/FSharp.Compiler.Service.netstandard.sln
+++ /dev/null
@@ -1,50 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26730.8
-MinimumVisualStudioVersion = 15.0.26124.0
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Service.netstandard", "FSharp.Compiler.Service.netstandard\FSharp.Compiler.Service.netstandard.fsproj", "{36B9F520-14B1-4431-AAF2-75433B87D851}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FSharp.Compiler.Service.Tests.netcore", "FSharp.Compiler.Service.Tests.netcore\FSharp.Compiler.Service.Tests.netcore.fsproj", "{1004CE3D-0CCB-47F5-8DBF-657D1B9C19D7}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|Any CPU = Release|Any CPU
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {36B9F520-14B1-4431-AAF2-75433B87D851}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {36B9F520-14B1-4431-AAF2-75433B87D851}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {36B9F520-14B1-4431-AAF2-75433B87D851}.Debug|x64.ActiveCfg = Debug|x64
- {36B9F520-14B1-4431-AAF2-75433B87D851}.Debug|x64.Build.0 = Debug|x64
- {36B9F520-14B1-4431-AAF2-75433B87D851}.Debug|x86.ActiveCfg = Debug|x86
- {36B9F520-14B1-4431-AAF2-75433B87D851}.Debug|x86.Build.0 = Debug|x86
- {36B9F520-14B1-4431-AAF2-75433B87D851}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {36B9F520-14B1-4431-AAF2-75433B87D851}.Release|Any CPU.Build.0 = Release|Any CPU
- {36B9F520-14B1-4431-AAF2-75433B87D851}.Release|x64.ActiveCfg = Release|x64
- {36B9F520-14B1-4431-AAF2-75433B87D851}.Release|x64.Build.0 = Release|x64
- {36B9F520-14B1-4431-AAF2-75433B87D851}.Release|x86.ActiveCfg = Release|x86
- {36B9F520-14B1-4431-AAF2-75433B87D851}.Release|x86.Build.0 = Release|x86
- {1004CE3D-0CCB-47F5-8DBF-657D1B9C19D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1004CE3D-0CCB-47F5-8DBF-657D1B9C19D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1004CE3D-0CCB-47F5-8DBF-657D1B9C19D7}.Debug|x64.ActiveCfg = Debug|x64
- {1004CE3D-0CCB-47F5-8DBF-657D1B9C19D7}.Debug|x64.Build.0 = Debug|x64
- {1004CE3D-0CCB-47F5-8DBF-657D1B9C19D7}.Debug|x86.ActiveCfg = Debug|x86
- {1004CE3D-0CCB-47F5-8DBF-657D1B9C19D7}.Debug|x86.Build.0 = Debug|x86
- {1004CE3D-0CCB-47F5-8DBF-657D1B9C19D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1004CE3D-0CCB-47F5-8DBF-657D1B9C19D7}.Release|Any CPU.Build.0 = Release|Any CPU
- {1004CE3D-0CCB-47F5-8DBF-657D1B9C19D7}.Release|x64.ActiveCfg = Release|x64
- {1004CE3D-0CCB-47F5-8DBF-657D1B9C19D7}.Release|x64.Build.0 = Release|x64
- {1004CE3D-0CCB-47F5-8DBF-657D1B9C19D7}.Release|x86.ActiveCfg = Release|x86
- {1004CE3D-0CCB-47F5-8DBF-657D1B9C19D7}.Release|x86.Build.0 = Release|x86
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {DEDB1900-EFFF-4691-89B1-6DBEE6B77491}
- EndGlobalSection
-EndGlobal
diff --git a/fcs/FSharp.Compiler.Service.netstandard/FSharp.Compiler.Service.netstandard.fsproj b/fcs/FSharp.Compiler.Service.netstandard/FSharp.Compiler.Service.netstandard.fsproj
deleted file mode 100644
index 0ebd29eea3d..00000000000
--- a/fcs/FSharp.Compiler.Service.netstandard/FSharp.Compiler.Service.netstandard.fsproj
+++ /dev/null
@@ -1,668 +0,0 @@
-
-
- $(MSBuildProjectDirectory)\..\..\src
-
-
-
- netstandard1.6
- FSharp.Compiler.Service
- $(DefineConstants);BUILDING_WITH_LKG
- $(DefineConstants);COMPILER_PUBLIC_API
- $(DefineConstants);COMPILER_SERVICE_AS_DLL
- $(DefineConstants);COMPILER
- $(DefineConstants);COMPILER_SERVICE
- $(DefineConstants);COMPILER_SERVICE_ASSUMES_FSHARP_CORE_4_4_0_0
- $(DefineConstants);EXTENSIBLE_DUMPER
- $(DefineConstants);NO_EXTENSIONTYPING
- $(DefineConstants);FSHARP_CORE_4_5
- $(DefineConstants);FX_PORTABLE_OR_NETSTANDARD
- $(DefineConstants);FX_ATLEAST_PORTABLE
- $(DefineConstants);NETSTANDARD1_6
- $(DefineConstants);PREFERRED_UI_LANG
- $(DefineConstants);FX_EVENTWAITHANDLE_NO_IDISPOSABLE
- $(DefineConstants);FX_NO_APP_DOMAINS
- $(DefineConstants);FX_NO_ARRAY_LONG_LENGTH
- $(DefineConstants);FX_NO_BEGINEND_READWRITE
- $(DefineConstants);FX_NO_BINARY_SERIALIZATION
- $(DefineConstants);FX_NO_CONVERTER
- $(DefineConstants);FX_NO_CORHOST_SIGNER
- $(DefineConstants);FX_NO_CUSTOMATTRIBUTEDATA
- $(DefineConstants);FX_NO_DEFAULT_DEPENDENCY_TYPE
- $(DefineConstants);FX_NO_EXIT_CONTEXT_FLAGS
- $(DefineConstants);FX_NO_HEAPTERMINATION
- $(DefineConstants);FX_NO_LINKEDRESOURCES
- $(DefineConstants);FX_NO_PARAMETERIZED_THREAD_START
- $(DefineConstants);FX_NO_PDB_READER
- $(DefineConstants);FX_NO_PDB_WRITER
- $(DefineConstants);FX_NO_REFLECTION_MODULE_HANDLES
- $(DefineConstants);FX_NO_RUNTIMEENVIRONMENT
- $(DefineConstants);FX_NO_SECURITY_PERMISSIONS
- $(DefineConstants);FX_NO_SERVERCODEPAGES
- $(DefineConstants);FX_NO_SYMBOLSTORE
- $(DefineConstants);FX_NO_SYSTEM_CONFIGURATION
- $(DefineConstants);FX_NO_THREAD
- $(DefineConstants);FX_NO_THREADABORT
- $(DefineConstants);FX_NO_WAITONE_MILLISECONDS
- $(DefineConstants);FX_NO_WEB_CLIENT
- $(DefineConstants);FX_NO_WINFORMS
- $(DefineConstants);FX_NO_WIN_REGISTRY
- $(DefineConstants);FX_NO_INDENTED_TEXT_WRITER
- $(DefineConstants);FX_REDUCED_CONSOLE
- $(DefineConstants);FX_REDUCED_EXCEPTIONS
- $(DefineConstants);FX_RESHAPED_CONSOLE
- $(DefineConstants);FX_RESHAPED_GLOBALIZATION
- $(DefineConstants);FX_RESHAPED_REFEMIT
- $(DefineConstants);FX_RESHAPED_REFLECTION
- $(DefineConstants);FX_RESHAPED_REFLECTION_CORECLR
- $(DefineConstants);FSI_TODO_NETCORE
- $(DefineConstants);INCLUDE_METADATA_READER
- $(DefineConstants);INCLUDE_METADATA_WRITER
- $(DefineConstants);NO_DEBUG_LOG
- $(DefineConstants);NO_INLINE_IL_PARSER
- $(DefineConstants);NO_LOADER_OPTIMIZATION
- $(DefineConstants);NO_LOGGING_GUI
- $(DefineConstants);FX_RESHAPED_MSBUILD
- $(DefineConstants);SIGNED
- $(DefineConstants);TODO_REWORK_ASSEMBLY_LOAD
- $(DefineConstants);TODO_REWORK_SERVER
- $(NoWarn);44;69;65;54;61;75;62;9;2003;
- true
- true
- true
-
-
-
- AssemblyInfo/assemblyinfo.FSharp.Compiler.Service.dll.fs
-
-
- FSComp.txt
-
-
- FSIstrings.txt
-
-
- FSStrings.resx
-
-
- --module Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser --open Microsoft.FSharp.Compiler.AbstractIL --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing
- ilpars.fsy
-
-
- --module Microsoft.FSharp.Compiler.Parser --open Microsoft.FSharp.Compiler --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing
- pars.fsy
-
-
- Reshaped/reshapedreflection.fs
-
-
- ErrorText/sformat.fsi
-
-
- ErrorText/sformat.fs
-
-
- ErrorText/sr.fsi
-
-
- ErrorText/sr.fs
-
-
- LexYaccRuntime/prim-lexing.fsi
-
-
- LexYaccRuntime/prim-lexing.fs
-
-
- LexYaccRuntime/prim-parsing.fsi
-
-
- LexYaccRuntime/prim-parsing.fs
-
-
- Utilities/ResizeArray.fsi
-
-
- Utilities/ResizeArray.fs
-
-
- Utilities/HashMultiMap.fsi
-
-
- Utilities/HashMultiMap.fs
-
-
- Utilities/EditDistance.fs
-
-
- Utilities/TaggedCollections.fsi
-
-
- Utilities/TaggedCollections.fs
-
-
- Utilities/QueueList.fs
-
-
- Utilities/ildiag.fsi
-
-
- Utilities/ildiag.fs
-
-
- Utilities/illib.fs
-
-
- Utilities/filename.fsi
-
-
- Utilities/filename.fs
-
-
- Utilities/zmap.fsi
-
-
- Utilities/zmap.fs
-
-
- Utilities/zset.fsi
-
-
- Utilities/zset.fs
-
-
- Utilities/bytes.fsi
-
-
- Utilities/bytes.fs
-
-
- Utilities/lib.fs
-
-
- Utilities/InternalCollections.fsi
-
-
- Utilities/InternalCollections.fs
-
-
- Utilities/rational.fsi
-
-
- Utilities/rational.fs
-
-
- ErrorLogging/range.fsi
-
-
- ErrorLogging/range.fs
-
-
- ErrorLogging/ErrorLogger.fs
-
-
- ErrorLogging/ErrorResolutionHints.fs
-
-
- ReferenceResolution/ReferenceResolver.fs
-
-
- AbsIL/il.fsi
-
-
- AbsIL/il.fs
-
-
- AbsIL/ilx.fsi
-
-
- AbsIL/ilx.fs
-
-
- AbsIL/ilascii.fsi
-
-
- AbsIL/ilascii.fs
-
-
- AbsIL/ilprint.fsi
-
-
- AbsIL/ilprint.fs
-
-
- AbsIL/ilmorph.fsi
-
-
- AbsIL/ilmorph.fs
-
-
- AbsIL/ilsign.fs
-
-
- AbsIL/ilsupp.fsi
-
-
- AbsIL/ilsupp.fs
-
-
- AbsIL/ilpars.fs
-
-
- AbsIL/illex.fs
-
-
- AbsIL/ilbinary.fsi
-
-
- AbsIL/ilbinary.fs
-
-
- AbsIL/ilread.fsi
-
-
- AbsIL/ilread.fs
-
-
- AbsIL/ilwritepdb.fsi
-
-
- AbsIL/ilwritepdb.fs
-
-
- AbsIL/ilwrite.fsi
-
-
- AbsIL/ilwrite.fs
-
-
- AbsIL/ilreflect.fs
-
-
- CompilerLocation/CompilerLocationUtils.fs
-
-
- PrettyNaming/PrettyNaming.fs
-
-
- ILXErase/ilxsettings.fs
-
-
- ILXErase/EraseClosures.fsi
-
-
- ILXErase/EraseClosures.fs
-
-
- ILXErase/EraseUnions.fsi
-
-
- ILXErase/EraseUnions.fs
-
-
- --unicode --lexlib Internal.Utilities.Text.Lexing
- AbsIL/illex.fsl
-
-
- --unicode --lexlib Internal.Utilities.Text.Lexing
- ParserAndUntypedAST/lex.fsl
-
-
- --unicode --lexlib Internal.Utilities.Text.Lexing
- ParserAndUntypedAST/pplex.fsl
-
-
- --module Microsoft.FSharp.Compiler.PPParser --open Microsoft.FSharp.Compiler --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing
- ParserAndUntypedAST/pppars.fsy
-
-
- ParserAndUntypedAST/UnicodeLexing.fsi
-
-
- ParserAndUntypedAST/UnicodeLexing.fs
-
-
- ParserAndUntypedAST/layout.fsi
-
-
- ParserAndUntypedAST/layout.fs
-
-
- ParserAndUntypedAST/ast.fs
-
-
- ParserAndUntypedAST/pppars.fs
-
-
- ParserAndUntypedAST/pars.fs
-
-
- ParserAndUntypedAST/lexhelp.fsi
-
-
- ParserAndUntypedAST/lexhelp.fs
-
-
- ParserAndUntypedAST/pplex.fs
-
-
- ParserAndUntypedAST/lex.fs
-
-
- ParserAndUntypedAST/LexFilter.fs
-
-
- TypedAST/tainted.fsi
-
-
- TypedAST/tainted.fs
-
-
- TypedAST/ExtensionTyping.fsi
-
-
- TypedAST/ExtensionTyping.fs
-
-
- TypedAST/QuotationPickler.fsi
-
-
- TypedAST/QuotationPickler.fs
-
-
- TypedAST/tast.fs
-
-
- TypedAST/TcGlobals.fs
-
-
- TypedAST/TastOps.fsi
-
-
- TypedAST/TastOps.fs
-
-
- TypedAST/TastPickle.fsi
-
-
- TypedAST/TastPickle.fs
-
-
- Logic/import.fsi
-
-
- Logic/import.fs
-
-
- Logic/infos.fs
-
-
- Logic/AccessibilityLogic.fs
-
-
- Logic/AttributeChecking.fs
-
-
- Logic/InfoReader.fs
-
-
- Logic/NicePrint.fs
-
-
- Logic/AugmentWithHashCompare.fsi
-
-
- Logic/AugmentWithHashCompare.fs
-
-
- Logic/NameResolution.fsi
-
-
- Logic/NameResolution.fs
-
-
- Logic/TypeRelations.fs
-
-
- Logic/SignatureConformance.fs
-
-
- Logic/MethodOverrides.fs
-
-
- Logic/MethodCalls.fs
-
-
- Logic/PatternMatchCompilation.fsi
-
-
- Logic/PatternMatchCompilation.fs
-
-
- Logic/ConstraintSolver.fsi
-
-
- Logic/ConstraintSolver.fs
-
-
- Logic/CheckFormatStrings.fsi
-
-
- Logic/CheckFormatStrings.fs
-
-
- Logic/FindUnsolved.fs
-
-
- Logic/QuotationTranslator.fsi
-
-
- Logic/QuotationTranslator.fs
-
-
- Logic/PostInferenceChecks.fsi
-
-
- Logic/PostInferenceChecks.fs
-
-
- Logic/TypeChecker.fsi
-
-
- Logic/TypeChecker.fs
-
-
- Optimize/Optimizer.fsi
-
-
- Optimize/Optimizer.fs
-
-
- Optimize/DetupleArgs.fsi
-
-
- Optimize/DetupleArgs.fs
-
-
- Optimize/InnerLambdasToTopLevelFuncs.fsi
-
-
- Optimize/InnerLambdasToTopLevelFuncs.fs
-
-
- Optimize/LowerCallsAndSeqs.fs
-
-
- Optimize/autobox.fs
-
-
- CodeGen/IlxGen.fsi
-
-
- CodeGen/IlxGen.fs
-
-
- Driver/CompileOps.fsi
-
-
- Driver/CompileOps.fs
-
-
- Driver/CompileOptions.fsi
-
-
- Driver/CompileOptions.fs
-
-
- Driver/fsc.fsi
-
-
- Driver/fsc.fs
-
-
- Symbols/SymbolHelpers.fsi
-
-
- Symbols/SymbolHelpers.fs
-
-
- Symbols/Symbols.fsi
-
-
- Symbols/Symbols.fs
-
-
- Symbols/Exprs.fsi
-
-
- Symbols/Exprs.fs
-
-
- Symbols/SymbolPatterns.fsi
-
-
- Symbols/SymbolPatterns.fs
-
-
- Service/IncrementalBuild.fsi
-
-
- Service/IncrementalBuild.fs
-
-
- Service/Reactor.fsi
-
-
- Service/Reactor.fs
-
-
- Service/ServiceConstants.fs
-
-
- Service/ServiceLexing.fsi
-
-
- Service/ServiceLexing.fs
-
-
- Service/ServiceParseTreeWalk.fs
-
-
- Service/ServiceNavigation.fsi
-
-
- Service/ServiceNavigation.fs
-
-
- Service/ServiceParamInfoLocations.fsi
-
-
- Service/ServiceParamInfoLocations.fs
-
-
- Service/ServiceUntypedParse.fsi
-
-
- Service/ServiceUntypedParse.fs
-
-
- Service/reshapedmsbuild.fs
-
-
- Service/SimulatedMSBuildReferenceResolver.fs
-
-
- Service/ServiceDeclarationLists.fsi
-
-
- Service/ServiceDeclarationLists.fs
-
-
- Service/ServiceAssemblyContent.fsi
-
-
- Service/ServiceAssemblyContent.fs
-
-
- Service/ServiceXmlDocParser.fsi
-
-
- Service/ServiceXmlDocParser.fs
-
-
- Service/ExternalSymbol.fsi
-
-
- Service/ExternalSymbol.fs
-
-
- Service/QuickParse.fsi
-
-
- Service/QuickParse.fs
-
-
- Service/service.fsi
-
-
- Service/service.fs
-
-
- Service/ServiceInterfaceStubGenerator.fsi
-
-
- Service/ServiceInterfaceStubGenerator.fs
-
-
- Service/ServiceStructure.fsi
-
-
- Service/ServiceStructure.fs
-
-
- Service/ServiceAnalysis.fsi
-
-
- Service/ServiceAnalysis.fs
-
-
- Service/fsi.fsi
-
-
- Service/fsi.fs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/fcs/FSharp.Compiler.Service.sln b/fcs/FSharp.Compiler.Service.sln
index 2fe403a3e36..192f8bd6242 100644
--- a/fcs/FSharp.Compiler.Service.sln
+++ b/fcs/FSharp.Compiler.Service.sln
@@ -51,7 +51,7 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "UntypedTree", "samples\Unty
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FscExe", "samples\FscExe\FscExe.fsproj", "{C94C257C-3C0A-4858-B5D8-D746498D1F08}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharp_Analysis", "..\tests\service\data\CSharp_Analysis\CSharp_Analysis.csproj", "{887630A3-4B1D-40EA-B8B3-2D842E9C40DB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharp_Analysis", "FSharp.Compiler.Service.Tests\CSharp_Analysis\CSharp_Analysis.csproj", "{887630A3-4B1D-40EA-B8B3-2D842E9C40DB}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FsiExe", "samples\FsiExe\FsiExe.fsproj", "{F9540CA8-1CE0-4546-A23A-A461E416E95B}"
EndProject
diff --git a/fcs/FSharp.Compiler.Service/.gitignore b/fcs/FSharp.Compiler.Service/.gitignore
new file mode 100644
index 00000000000..722f2e9b839
--- /dev/null
+++ b/fcs/FSharp.Compiler.Service/.gitignore
@@ -0,0 +1,2 @@
+net4*/
+netstandard*/
diff --git a/fcs/FSharp.Compiler.Service/AssemblyInfo.fs b/fcs/FSharp.Compiler.Service/AssemblyInfo.fs
new file mode 100644
index 00000000000..90521fefd5a
--- /dev/null
+++ b/fcs/FSharp.Compiler.Service/AssemblyInfo.fs
@@ -0,0 +1,62 @@
+// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
+
+namespace Microsoft.FSharp
+open System.Reflection
+open System.Runtime.InteropServices
+
+[]
+[]
+[]
+[]
+[]
+[]
+
+#if NO_STRONG_NAMES
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+
+// Note: internals visible to unit test DLLs in Retail (and all) builds.
+[]
+[]
+[]
+[]
+[]
+#endif
+
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+[]
+
+// Until dotnet sdk can version assemblies, use this
+#if BUILD_FROM_SOURCE
+[]
+[]
+[]
+#endif
+
+do()
\ No newline at end of file
diff --git a/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj b/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj
index eebbaa0a931..a16f39b084c 100644
--- a/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj
+++ b/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj
@@ -1,56 +1,50 @@
-
-
-
-
+
$(MSBuildProjectDirectory)\..\..\src
+
- Debug
- AnyCPU
- $(MSBuildProjectDirectory)\..\..\
- Library
- FSharp.Compiler.Service
- $(NoWarn);44;62;9
- {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}
- true
- 0x06800000
- true
- $(NoWarn);69;65;54;61;75
- true
- ..\..\$(Configuration)\fcs\net45\
- $(OutputPath)$(AssemblyName).xml
-
- v4.5
-
- $(DefineConstants);CROSS_PLATFORM_COMPILER
- $(DefineConstants);ENABLE_MONO_SUPPORT
- $(DefineConstants);COMPILER
+ net45;netstandard2.0
+ true
$(DefineConstants);COMPILER_SERVICE_AS_DLL
- $(DefineConstants);COMPILER_PUBLIC_API
+ $(DefineConstants);COMPILER
+ $(DefineConstants);ENABLE_MONO_SUPPORT
$(DefineConstants);NO_STRONG_NAMES
+ ..\..\$(Configuration.ToLower())\fcs
+ $(TargetFramework)\
+ $(TargetFramework)\
$(OtherFlags) /warnon:1182
$(OtherFlags) --times
- $(OtherFlags) --version:$(VersionPrefix).0
- false
- true
-
+ $(NoWarn);44;62;69;65;54;61;75;62;9;2003;
+ true
+ true
+ true
-
- true
- full
- false
- AnyCPU
+
+ The F# compiler as library. For editors, for tools, for scripting. For you.
+ The F# compiler services package contains a custom build of the F# compiler that exposes additional functionality for implementing F# language bindings, additional tools based on the compiler or refactoring tools. The package also includes F# interactive service that can be used for embedding F# scripting into your applications.
+ false
+ Microsoft Corporation; F# community contributors
+ https://github.com/fsharp/FSharp.Compiler.Service/blob/master/LICENSE
+ https://github.com/fsharp/FSharp.Compiler.Service
+ https://raw.github.com/fsharp/FSharp.Compiler.Service/master/misc/logo.png
+ F#, fsharp, interactive, compiler, editor
-
- pdbonly
- true
- AnyCPU
+
+ $(DefineConstants);FX_NO_PDB_READER
+ $(DefineConstants);FX_NO_PDB_WRITER
+ $(DefineConstants);FX_NO_SYMBOLSTORE
+ $(DefineConstants);FX_NO_LINKEDRESOURCES
+ $(DefineConstants);FX_NO_APP_DOMAINS
+ $(DefineConstants);FX_NO_RUNTIMEENVIRONMENT
+ $(DefineConstants);FX_NO_WIN_REGISTRY
+ $(DefineConstants);FX_NO_SYSTEM_CONFIGURATION
+ $(DefineConstants);FX_RESHAPED_REFEMIT
-
- AssemblyInfo/assemblyinfo.FSharp.Compiler.Service.dll.fs
+
+ AssemblyInfo/AssemblyInfo.fs
FSComp.txt
@@ -58,8 +52,9 @@
FSIstrings.txt
-
+
FSStrings.resx
+ FSStrings.resources
--module Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser --open Microsoft.FSharp.Compiler.AbstractIL --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing
@@ -69,212 +64,225 @@
--module Microsoft.FSharp.Compiler.Parser --open Microsoft.FSharp.Compiler --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing
pars.fsy
-
+
+ Logger.fsi
+
+
+ Logger.fs
+
+
Reshaped/reshapedreflection.fs
-
+
ErrorText/sformat.fsi
-
+
ErrorText/sformat.fs
-
+
ErrorText/sr.fsi
-
+
ErrorText/sr.fs
-
+
LexYaccRuntime/prim-lexing.fsi
-
+
LexYaccRuntime/prim-lexing.fs
-
+
LexYaccRuntime/prim-parsing.fsi
-
+
LexYaccRuntime/prim-parsing.fs
-
- Utilities\ResizeArray.fsi
+
+ Utilities/ResizeArray.fsi
-
- Utilities\ResizeArray.fs
+
+ Utilities/ResizeArray.fs
-
+
Utilities/HashMultiMap.fsi
-
+
Utilities/HashMultiMap.fs
-
- Utilities\EditDistance.fs
+
+ Utilities/EditDistance.fs
-
+
Utilities/TaggedCollections.fsi
-
+
Utilities/TaggedCollections.fs
-
+
Utilities/QueueList.fs
-
+
Utilities/ildiag.fsi
-
+
Utilities/ildiag.fs
-
+
Utilities/illib.fs
-
+
Utilities/filename.fsi
-
+
Utilities/filename.fs
-
+
Utilities/zmap.fsi
-
+
Utilities/zmap.fs
-
+
Utilities/zset.fsi
-
+
Utilities/zset.fs
-
+
Utilities/bytes.fsi
-
+
Utilities/bytes.fs
-
+
Utilities/lib.fs
-
+
Utilities/InternalCollections.fsi
-
+
Utilities/InternalCollections.fs
-
+
Utilities/rational.fsi
-
+
Utilities/rational.fs
-
+
ErrorLogging/range.fsi
-
+
ErrorLogging/range.fs
-
+
ErrorLogging/ErrorLogger.fs
-
+
ErrorLogging/ErrorResolutionHints.fs
-
+
ReferenceResolution/ReferenceResolver.fs
--unicode --lexlib Internal.Utilities.Text.Lexing
AbsIL/illex.fsl
-
+
AbsIL/il.fsi
-
+
AbsIL/il.fs
-
+
AbsIL/ilx.fsi
-
+
AbsIL/ilx.fs
-
+
AbsIL/ilascii.fsi
-
+
AbsIL/ilascii.fs
-
+
AbsIL/ilprint.fsi
-
+
AbsIL/ilprint.fs
-
+
AbsIL/ilmorph.fsi
-
+
AbsIL/ilmorph.fs
-
+
+
+
+ AbsIL/ilsign.fs
+
+
+
+
AbsIL/ilsupp.fsi
-
+
AbsIL/ilsupp.fs
-
+
AbsIL/ilpars.fs
-
+
AbsIL/illex.fs
-
+
AbsIL/ilbinary.fsi
-
+
AbsIL/ilbinary.fs
-
+
AbsIL/ilread.fsi
-
+
AbsIL/ilread.fs
-
+
AbsIL/ilwritepdb.fsi
-
+
AbsIL/ilwritepdb.fs
-
+
AbsIL/ilwrite.fsi
-
+
AbsIL/ilwrite.fs
-
+
AbsIL/ilreflect.fs
-
+
CompilerLocation/CompilerLocationUtils.fs
-
+
PrettyNaming/PrettyNaming.fs
-
+
ILXErase/ilxsettings.fs
-
+
ILXErase/EraseClosures.fsi
-
+
ILXErase/EraseClosures.fs
-
+
ILXErase/EraseUnions.fsi
-
+
ILXErase/EraseUnions.fs
@@ -289,208 +297,208 @@
--module Microsoft.FSharp.Compiler.PPParser --open Microsoft.FSharp.Compiler --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing
ParserAndUntypedAST/pppars.fsy
-
+
ParserAndUntypedAST/UnicodeLexing.fsi
-
+
ParserAndUntypedAST/UnicodeLexing.fs
-
+
ParserAndUntypedAST/layout.fsi
-
+
ParserAndUntypedAST/layout.fs
-
+
ParserAndUntypedAST/ast.fs
-
+
ParserAndUntypedAST/pppars.fs
-
+
ParserAndUntypedAST/pars.fs
-
+
ParserAndUntypedAST/lexhelp.fsi
-
+
ParserAndUntypedAST/lexhelp.fs
-
+
ParserAndUntypedAST/pplex.fs
-
+
ParserAndUntypedAST/lex.fs
-
+
ParserAndUntypedAST/LexFilter.fs
-
+
TypedAST/tainted.fsi
-
+
TypedAST/tainted.fs
-
+
TypedAST/ExtensionTyping.fsi
-
+
TypedAST/ExtensionTyping.fs
-
+
TypedAST/QuotationPickler.fsi
-
+
TypedAST/QuotationPickler.fs
-
+
TypedAST/tast.fs
-
+
TypedAST/TcGlobals.fs
-
+
TypedAST/TastOps.fsi
-
+
TypedAST/TastOps.fs
-
+
TypedAST/TastPickle.fsi
-
+
TypedAST/TastPickle.fs
-
+
Logic/import.fsi
-
+
Logic/import.fs
-
+
Logic/infos.fs
-
+
Logic/AccessibilityLogic.fs
-
+
Logic/AttributeChecking.fs
-
+
Logic/InfoReader.fs
-
+
Logic/NicePrint.fs
-
+
Logic/AugmentWithHashCompare.fsi
-
+
Logic/AugmentWithHashCompare.fs
-
+
Logic/NameResolution.fsi
-
+
Logic/NameResolution.fs
-
+
Logic/TypeRelations.fs
-
+
Logic/SignatureConformance.fs
-
+
Logic/MethodOverrides.fs
-
+
Logic/MethodCalls.fs
-
+
Logic/PatternMatchCompilation.fsi
-
+
Logic/PatternMatchCompilation.fs
-
+
Logic/ConstraintSolver.fsi
-
+
Logic/ConstraintSolver.fs
-
+
Logic/CheckFormatStrings.fsi
-
+
Logic/CheckFormatStrings.fs
-
+
Logic/FindUnsolved.fs
-
+
Logic/QuotationTranslator.fsi
-
+
Logic/QuotationTranslator.fs
-
+
Logic/PostInferenceChecks.fsi
-
+
Logic/PostInferenceChecks.fs
-
+
Logic/TypeChecker.fsi
-
+
Logic/TypeChecker.fs
-
+
Optimize/Optimizer.fsi
-
+
Optimize/Optimizer.fs
-
+
Optimize/DetupleArgs.fsi
-
+
Optimize/DetupleArgs.fs
-
+
Optimize/InnerLambdasToTopLevelFuncs.fsi
-
+
Optimize/InnerLambdasToTopLevelFuncs.fs
-
+
Optimize/LowerCallsAndSeqs.fs
-
- Optimize\autobox.fs
+
+ Optimize/autobox.fs
-
+
CodeGen/IlxGen.fsi
-
+
CodeGen/IlxGen.fs
-
+
Driver/CompileOps.fsi
-
+
Driver/CompileOps.fs
-
+
Driver/CompileOptions.fsi
-
+
Driver/CompileOptions.fs
-
+
Driver/fsc.fsi
-
+
Driver/fsc.fs
@@ -517,46 +525,46 @@
Symbols/SymbolPatterns.fs
-
+
Service/IncrementalBuild.fsi
-
+
Service/IncrementalBuild.fs
-
+
Service/Reactor.fsi
-
+
Service/Reactor.fs
-
+
Service/ServiceConstants.fs
-
+
Service/ServiceLexing.fsi
-
+
Service/ServiceLexing.fs
-
+
Service/ServiceParseTreeWalk.fs
-
+
Service/ServiceNavigation.fsi
-
+
Service/ServiceNavigation.fs
-
+
Service/ServiceParamInfoLocations.fsi
-
+
Service/ServiceParamInfoLocations.fs
-
+
Service/ServiceUntypedParse.fsi
-
+
Service/ServiceUntypedParse.fs
@@ -565,58 +573,58 @@
Service/SimulatedMSBuildReferenceResolver.fs
-
+
Service/ServiceDeclarationLists.fsi
-
+
Service/ServiceDeclarationLists.fs
-
+
Service/ServiceAssemblyContent.fsi
-
+
Service/ServiceAssemblyContent.fs
-
+
Service/ServiceXmlDocParser.fsi
-
+
Service/ServiceXmlDocParser.fs
-
+
Service/ExternalSymbol.fsi
-
+
Service/ExternalSymbol.fs
-
+
Service/QuickParse.fsi
-
+
Service/QuickParse.fs
-
+
Service/service.fsi
-
+
Service/service.fs
-
+
Service/ServiceInterfaceStubGenerator.fsi
-
+
Service/ServiceInterfaceStubGenerator.fs
-
+
Service/ServiceStructure.fsi
-
+
Service/ServiceStructure.fs
-
+
Service/ServiceAnalysis.fsi
-
+
Service/ServiceAnalysis.fs
@@ -625,38 +633,29 @@
Service/fsi.fs
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.DiaSymReader.PortablePdb.1.2.0\lib\portable-net45+win8\Microsoft.DiaSymReader.PortablePdb.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.DiaSymReader.1.1.0\lib\portable-net45+win8\Microsoft.DiaSymReader.dll
-
-
- $(FSharpSourcesRoot)\..\packages\System.Reflection.Metadata.1.4.2\lib\portable-net45+win8\System.Reflection.Metadata.dll
-
-
- $(FSharpSourcesRoot)\..\packages\System.Collections.Immutable.1.3.1\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll
-
- $(FSharpSourcesRoot)\..\packages\System.ValueTuple.4.3.1\lib\netstandard1.0\System.ValueTuple.dll
-
-
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Portable.FSharp.Core.4.1.20\lib\profiles\net40\FSharp.Core.dll
- false
+ $(FSharpSourcesRoot)\..\packages\System.ValueTuple.4.4.0\lib\netstandard1.0\System.ValueTuple.dll
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/fcs/README.md b/fcs/README.md
index 51aa24fbbef..8f86342739e 100644
--- a/fcs/README.md
+++ b/fcs/README.md
@@ -1,11 +1,11 @@
-# The FSharp.Compiler.Service components and nuget package
+# The FSharp.Compiler.Service components and NuGet package
-This directory contains the build, packaging, test and documentation-generation logic for the nuget package ``FSharp.Compiler.Service``. The source for this nuget
+This directory contains the build, packaging, test and documentation-generation logic for the NuGet package ``FSharp.Compiler.Service``. The source for this NuGet
package is in ``..\src``.
-Basically we are packaging up the compiler as a DLL and publishing it as a nuget package.
+Basically we are packaging up the compiler as a DLL and publishing it as a NuGet package.
## FSharp.Compiler.Service v. FSharp.Compiler.Private
@@ -13,7 +13,7 @@ There are subtle differences between FSharp.Compiler.Service and FSharp.Compiler
- FCS has a public API
- FCS is built against **.NET 4.5** and **FSharp.Core 4.0.0.0** to give broader reach
-- FCS has a Nuget package
+- FCS has a NuGet package
- FCS has a .NET Standard 1.6 version in the nuget package
- FCS testing also tests the "Project Cracker" (see below)
- FCS doesn't add the System.ValueTuple.dll reference by default, see ``#if COMPILER_SERVICE_AS_DLL`` in compiler codebase
@@ -57,17 +57,17 @@ which does things like:
### Manual push of packages
-Yu can push the packages if you have permissions, either automatically using ``build Release`` or manually
+You can push the packages if you have permissions, either automatically using ``build Release`` or manually
set APIKEY=...
- .nuget\nuget.exe push Release\FSharp.Compiler.Service.16.0.3.nupkg %APIKEY% -Source https://nuget.org
- .nuget\nuget.exe push Release\FSharp.Compiler.Service.MSBuild.v12.16.0.3.nupkg %APIKEY% -Source https://nuget.org
- .nuget\nuget.exe push Release\FSharp.Compiler.Service.ProjectCracker.16.0.3.nupkg %APIKEY% -Source https://nuget.org
+ ..\fsharp\.nuget\nuget.exe push %HOMEDRIVE%%HOMEPATH%\Downloads\FSharp.Compiler.Service.22.0.3.nupkg %APIKEY% -Source https://nuget.org
+ ..\fsharp\.nuget\nuget.exe push %HOMEDRIVE%%HOMEPATH%\Downloads\FSharp.Compiler.Service.MSBuild.v12.22.0.3.nupkg %APIKEY% -Source https://nuget.org
+ ..\fsharp\.nuget\nuget.exe push %HOMEDRIVE%%HOMEPATH%\Downloads\FSharp.Compiler.Service.ProjectCracker.22.0.3.nupkg %APIKEY% -Source https://nuget.org
### Use of Paket and FAKE
-Paket is only used to get fake and formating tools. Eventually we will likely remove this once we update the project files to .NET SDK 2.0.
+Paket is only used to get FAKE and FSharp.Formatting tools. Eventually we will likely remove this once we update the project files to .NET SDK 2.0.
FAKE is only used to run build.fsx. Eventually we will likely remove this once we update the project files to .NET SDK 2.0.
@@ -83,7 +83,7 @@ Testing reuses the test files from ..\tests\service which were are also FCS test
Output is in ``docs``. In the ``FSharp.Compiler.Service`` repo this is checked in and hosted as http://fsharp.github.io/FSharp.Compiler.Service.
-## The two other nuget packages
+## The two other NuGet packages
It also contains both the source, build, packaging and test logic for
diff --git a/fcs/RELEASE_NOTES.md b/fcs/RELEASE_NOTES.md
index 44eeb9ef347..67ac7bcc6b9 100644
--- a/fcs/RELEASE_NOTES.md
+++ b/fcs/RELEASE_NOTES.md
@@ -1,3 +1,28 @@
+#### 22.0.3
+ * [Add entity.DeclaringEntity](https://github.com/Microsoft/visualfsharp/pull/4633), [FCS feature request](https://github.com/fsharp/FSharp.Compiler.Service/issues/830)
+
+#### 22.0.2
+ * Use correct version number in DLLs (needed until https://github.com/Microsoft/visualfsharp/issues/3113 is fixed)
+
+#### 22.0.1
+ * Integrate visualfsharp master
+ * Includes recent memory usage reduction work for ByteFile and ILAttributes
+
+#### 21.0.1
+ * Use new .NET SDK project files
+ * FSharp.Compiler.Service nuget now uses net45 and netstandard2.0
+ * FSharp.Compiler.Service netstandard2.0 now supports type providers
+
+#### 19.0.1
+ * Rename ``LogicalEnclosingEntity`` to ``ApparentEnclosingEntity`` for consistency int he F# codebase terminology.
+ * Rename ``EnclosingEntity`` to ``DeclaringEntity``. In the case of extension properties, ``EnclosingEntity`` was incorrectly returning the logical enclosing entity (i.e. the type the property appears to extend), and in this case ``ApparentEnclosingEntity`` should be used instead.
+
+#### 18.0.1
+ * Integrate visualfsharp master
+
+#### 17.0.2
+ * Integrate visualfsharp master
+
#### 16.0.3
* [File name deduplication not working with ParseAndCheckFileInProject](https://github.com/fsharp/FSharp.Compiler.Service/issues/819)
@@ -404,7 +429,7 @@
* Return additional 'property' and 'event' methods for F#-defined types to regularize symbols (#108, #143)
* Add IsPropertySetterMethod and IsPropertyGetterMethod which only return true for getter/setter methods, not properties. Deprecate IsSetterMethod and IsGetterMethod in favour of these.
* Add IsEventAddMethod and IsEventRemoveMethod which return true for add/remove methods with an associated event
-* Change IsProperty and IsEvent to only return true for the symbols for properties and events, rather than the methods assocaited with these
+* Change IsProperty and IsEvent to only return true for the symbols for properties and events, rather than the methods associated with these
* Fix value of Assembly for some symbols (e.g. property symbols)
#### 0.0.45 -
diff --git a/fcs/build.cmd b/fcs/build.cmd
index c18c0a1f227..731fc76abb7 100644
--- a/fcs/build.cmd
+++ b/fcs/build.cmd
@@ -1,7 +1,7 @@
@echo off
setlocal
-cd fcs
+pushd %~dp0%
if errorlevel 1 (
endlocal
diff --git a/fcs/build.fsx b/fcs/build.fsx
index 1e39de8bbb9..145d4c88e8f 100644
--- a/fcs/build.fsx
+++ b/fcs/build.fsx
@@ -13,12 +13,18 @@ open Fake.ReleaseNotesHelper
#if MONO
// prevent incorrect output encoding (e.g. https://github.com/fsharp/FAKE/issues/1196)
System.Console.OutputEncoding <- System.Text.Encoding.UTF8
-
CleanDir (__SOURCE_DIRECTORY__ + "/../tests/TestResults")
File.WriteAllText(__SOURCE_DIRECTORY__ + "/../tests/TestResults/notestsyet.txt","No tests yet")
+let isMono = true
+#else
+let isMono = false
#endif
-let dotnetExePath = DotNetCli.InstallDotNetSDK "2.0.2"
+// --------------------------------------------------------------------------------------
+// Utilities
+// --------------------------------------------------------------------------------------
+
+let dotnetExePath = DotNetCli.InstallDotNetSDK "2.1.201"
let runDotnet workingDir args =
let result =
@@ -29,11 +35,8 @@ let runDotnet workingDir args =
if result <> 0 then failwithf "dotnet %s failed" args
-// --------------------------------------------------------------------------------------
-// Utilities
-// --------------------------------------------------------------------------------------
-
let assertExitCodeZero x = if x = 0 then () else failwithf "Command failed with exit code %i" x
+
let runCmdIn workDir (exe:string) = Printf.ksprintf (fun (args:string) ->
#if MONO
let exe = exe.Replace("\\","/")
@@ -51,33 +54,16 @@ let runCmdIn workDir (exe:string) = Printf.ksprintf (fun (args:string) ->
// The rest of the code is standard F# build script
// --------------------------------------------------------------------------------------
-let releaseDir = Path.Combine(__SOURCE_DIRECTORY__, "../Release")
-
+let releaseDir = Path.Combine(__SOURCE_DIRECTORY__, "../release/fcs")
// Read release notes & version info from RELEASE_NOTES.md
let release = LoadReleaseNotes (__SOURCE_DIRECTORY__ + "/RELEASE_NOTES.md")
let isAppVeyorBuild = buildServer = BuildServer.AppVeyor
+let isJenkinsBuild = buildServer = BuildServer.Jenkins
let isVersionTag tag = Version.TryParse tag |> fst
let hasRepoVersionTag = isAppVeyorBuild && AppVeyorEnvironment.RepoTag && isVersionTag AppVeyorEnvironment.RepoTagName
let assemblyVersion = if hasRepoVersionTag then AppVeyorEnvironment.RepoTagName else release.NugetVersion
-let nugetVersion = release.NugetVersion
-open SemVerHelper
-let nugetDebugVersion =
- let semVer = SemVerHelper.parse nugetVersion
- let debugPatch, debugPreRelease =
- match semVer.PreRelease with
- | None -> semVer.Patch + 1, { Origin = "alpha001"; Name = "alpha"; Number = Some 1; Parts = [AlphaNumeric "alpha001"] }
- | Some pre ->
- let num = match pre.Number with Some i -> i + 1 | None -> 1
- let name = pre.Name
- let newOrigin = sprintf "%s%03d" name num
- semVer.Patch, { Origin = newOrigin; Name = name; Number = Some num; Parts = [AlphaNumeric newOrigin] }
- let debugVer =
- { semVer with
- Patch = debugPatch
- PreRelease = Some debugPreRelease }
- debugVer.ToString()
-let buildDate = DateTime.UtcNow
+
let buildVersion =
if hasRepoVersionTag then assemblyVersion
else if isAppVeyorBuild then sprintf "%s-b%s" assemblyVersion AppVeyorEnvironment.BuildNumber
@@ -88,92 +74,39 @@ Target "Clean" (fun _ ->
)
Target "Restore" (fun _ ->
- for p in (!! "./../**/packages.config") do
- let result =
- ExecProcess (fun info ->
+ // We assume a paket restore has already been run
+ runDotnet __SOURCE_DIRECTORY__ "restore FSharp.Compiler.Service.sln -v n"
+ for p in [ "../packages.config" ] do
+ let rec executeProcess count =
+ let result = ExecProcess (fun info ->
info.FileName <- FullName @"./../.nuget/NuGet.exe"
info.WorkingDirectory <- FullName @"./.."
- info.Arguments <- sprintf "restore %s -PackagesDirectory \"%s\" -ConfigFile \"%s\"" (FullName p) (FullName "./../packages") (FullName "./../.nuget/NuGet.Config")) TimeSpan.MaxValue
- if result <> 0 then failwithf "nuget restore %s failed" p
-
- runDotnet __SOURCE_DIRECTORY__ "restore tools.fsproj"
+ info.Arguments <- sprintf "restore %s -PackagesDirectory \"%s\" -ConfigFile \"%s\"" (FullName p) (FullName "./../packages") (FullName "./../NuGet.Config")) TimeSpan.MaxValue
+ if result <> 0 && count > 1 then executeProcess (count - 1) else result
+ (executeProcess 5) |> assertExitCodeZero
)
Target "BuildVersion" (fun _ ->
Shell.Exec("appveyor", sprintf "UpdateBuild -Version \"%s\"" buildVersion) |> ignore
)
-// --------------------------------------------------------------------------------------
-// Clean build results & restore NuGet packages
-
-
-Target "Build.NetFx" (fun _ ->
- !! "FSharp.Compiler.Service.sln"
- |> MSBuild "" "Build" ["Configuration","Release" ]
- |> Log (".NETFxBuild-Output: ")
-)
-
-
-// --------------------------------------------------------------------------------------
-// Run the unit tests using test runner
-
-Target "Test.NetFx" (fun _ ->
- let testDir = __SOURCE_DIRECTORY__ + "/../tests/fcs"
- CleanDir testDir
-
- let outDir = releaseDir + "/fcs"
-
- !! (outDir + "/**/*.*")
- |> CopyFiles testDir
-
- let toolPath = __SOURCE_DIRECTORY__ + "/../packages/NUnit.Console.3.0.0/tools"
- !! (toolPath + "/*.*")
- |> CopyFiles testDir
-
- !! (testDir + "/**/FSharp.Compiler.Service.Tests.dll")
- |> Fake.Testing.NUnit3.NUnit3 (fun p ->
- { p with
- ToolPath = testDir + "/nunit3-console.exe"
- ShadowCopy = false
- WorkingDir = FullName testDir
- TimeOut = TimeSpan.FromMinutes 20. })
-)
-
-// --------------------------------------------------------------------------------------
-// Build a NuGet package
-Target "NuGet.NetFx" (fun _ ->
- runCmdIn __SOURCE_DIRECTORY__ "../.nuget/NuGet.exe" @"pack nuget/FSharp.Compiler.Service.nuspec -OutputDirectory %s" releaseDir
- runCmdIn __SOURCE_DIRECTORY__ "../.nuget/NuGet.exe" @"pack nuget/FSharp.Compiler.Service.MSBuild.v12.nuspec -OutputDirectory %s" releaseDir
- runCmdIn __SOURCE_DIRECTORY__ "../.nuget/NuGet.exe" @"pack nuget/FSharp.Compiler.Service.ProjectCracker.nuspec -OutputDirectory %s" releaseDir
+Target "Build" (fun _ ->
+ runDotnet __SOURCE_DIRECTORY__ "build FSharp.Compiler.Service.sln -v n -c Release"
)
+Target "Test" (fun _ ->
+ // This project file is used for the netcoreapp2.0 tests to work out reference sets
+ runDotnet __SOURCE_DIRECTORY__ "restore ../tests/projects/Sample_NETCoreSDK_FSharp_Library_netstandard2_0/Sample_NETCoreSDK_FSharp_Library_netstandard2_0.fsproj -v n"
+ runDotnet __SOURCE_DIRECTORY__ "build ../tests/projects/Sample_NETCoreSDK_FSharp_Library_netstandard2_0/Sample_NETCoreSDK_FSharp_Library_netstandard2_0.fsproj -v n"
-
-// --------------------------------------------------------------------------------------
-// .NET Core and .NET Core SDK
-
-
-Target "Build.NetStd" (fun _ ->
- runDotnet __SOURCE_DIRECTORY__ (sprintf "pack %s -v n -c Release" "FSharp.Compiler.Service.netstandard.sln")
-)
-
-
-Target "Test.NetStd" (fun _ ->
- runDotnet __SOURCE_DIRECTORY__ (sprintf "run -p FSharp.Compiler.Service.Tests.netcore/FSharp.Compiler.Service.Tests.netcore.fsproj -c Release -- --result:TestResults.NetStd.xml;format=nunit3")
+ // Now run the tests
+ runDotnet __SOURCE_DIRECTORY__ "test FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj -v n -c Release"
)
-
-//use dotnet-mergenupkg to merge the .NETstandard nuget package into the default one
-Target "Nuget.AddNetStd" (fun _ ->
- let nupkg = sprintf "%s/FSharp.Compiler.Service.%s.nupkg" releaseDir release.AssemblyVersion
- let netcoreNupkg = sprintf "FSharp.Compiler.Service.netstandard/bin/Release/FSharp.Compiler.Service.%s.nupkg" release.AssemblyVersion
- runDotnet __SOURCE_DIRECTORY__ (sprintf "mergenupkg --source %s --other %s --framework netstandard1.6" nupkg netcoreNupkg)
+Target "NuGet" (fun _ ->
+ runDotnet __SOURCE_DIRECTORY__ "pack FSharp.Compiler.Service.sln -v n -c Release"
)
-
-// --------------------------------------------------------------------------------------
-// Generate the documentation
-
Target "GenerateDocsEn" (fun _ ->
executeFSIWithArgs "docsrc/tools" "generate.fsx" [] [] |> ignore
)
@@ -182,9 +115,6 @@ Target "GenerateDocsJa" (fun _ ->
executeFSIWithArgs "docsrc/tools" "generate.ja.fsx" [] [] |> ignore
)
-// --------------------------------------------------------------------------------------
-// Release Scripts
-
Target "PublishNuGet" (fun _ ->
Paket.Push (fun p ->
let apikey =
@@ -199,47 +129,28 @@ Target "PublishNuGet" (fun _ ->
// --------------------------------------------------------------------------------------
// Run all targets by default. Invoke 'build ' to override
+Target "Start" DoNothing
Target "Release" DoNothing
-Target "NuGet" DoNothing
-Target "Build" DoNothing
Target "GenerateDocs" DoNothing
Target "TestAndNuGet" DoNothing
-"Clean"
- =?> ("BuildVersion", isAppVeyorBuild)
- ==> "Restore"
- ==> "Build.NetStd"
-
-"Clean"
+"Start"
=?> ("BuildVersion", isAppVeyorBuild)
==> "Restore"
- ==> "Build.NetFx"
-
-"Build.NetFx"
- ==> "Test.NetFx"
-
-"Build.NetStd"
- ==> "Test.NetStd"
-
-"Build.NetFx"
- ==> "Build.NetStd"
==> "Build"
-"Build.NetStd"
- ==> "Nuget.AddNetStd"
+"Build"
+ ==> "Test"
-"Build.NetFx"
- ==> "NuGet.NetFx"
- ==> "Nuget.AddNetStd"
+"Build"
==> "NuGet"
-"Test.NetFx"
+"Test"
==> "TestAndNuGet"
"NuGet"
==> "TestAndNuGet"
-
"Build"
==> "NuGet"
==> "PublishNuGet"
diff --git a/fcs/cibuild.sh b/fcs/cibuild.sh
new file mode 100755
index 00000000000..ddc49d8ff34
--- /dev/null
+++ b/fcs/cibuild.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+# note: expects to run from top directory
+./mono/latest-mono-stable.sh
+./fcs/build.sh NuGet
diff --git a/fcs/docsrc/content/fsharp-readme.md b/fcs/docsrc/content/fsharp-readme.md
deleted file mode 100644
index 5cf3c67e36d..00000000000
--- a/fcs/docsrc/content/fsharp-readme.md
+++ /dev/null
@@ -1,218 +0,0 @@
-F# Compiler README
-=============================================================================================
-
-> **NOTE:** This readme file is the original `README.md` document from the F# compiler
-source code ([github.com/fsharp/fsharp](https://github.com/fsharp/fsharp)). This project is a fork of the F# compiler
-source, with several minor changes that expose certain services. The readme is included
-here for reference.
-
-This is the F# compiler, core library and core tools (open source edition).
-The `master` branch is for the latest version of F# (currently F# 3.0).
-To bootstrap the compiler, binaries built from an earlier version of this project are used.
-
-## Requirements
-
-Requires mono 2.9 or higher. Prefer Mono 3.0.
-
-On OSX, requires automake 2.69. To install from [homebrew](http://mxcl.github.com/homebrew):
-
- [lang=text]
- brew install automake
-
-
-## Building
-
-### On Linux and other Unix systems:
-The usual:
-
- [lang=text]
- ./autogen.sh
- make
- sudo make install
-
-By default that makes optimized binaries. To make debug, use `make CONFIG=debug`
-
-
-### On MacOS (OSX)
-
-Use a prefix to your version of Mono:
-
- [lang=text]
- ./autogen.sh --prefix=/Library/Frameworks/Mono.framework/Versions/Current/
- make
- sudo make install
-
-By default that makes optimized binaries. To make debug, use `make CONFIG=debug`
-
-### On Windows, using msbuild (e.g.. if .NET is installed)
-If you have only VS2012 installed, and not VS2010, you'll need to install the F# 2.0 Runtime (http://www.microsoft.com/en-us/download/details.aspx?id=13450)
-
- [lang=text]
- cd src
- msbuild fsharp-proto-build.proj
- ngen install ..\lib\proto\4.0\fsc-proto.exe (optional)
- msbuild fsharp-library-build.proj /p:Configuration=Release
- msbuild fsharp-compiler-build.proj /p:Configuration=Release
-
-You can also build the FSharp.Core for .NET 2.0, Mono 2.1, MonoTouch, Silverlight 5.0, Windows Phone 7.1, Portable Profile47 (net45+sl5+win8), Portable Profile88 (net4+sl4+wp71+win8) and XNA 4.0 for Xbox 360 profiles:
-
- [lang=text]
- msbuild fsharp-library-build.proj /p:TargetFramework=net20 /p:Configuration=Release
- msbuild fsharp-library-build.proj /p:TargetFramework=mono21 /p:Configuration=Release
- msbuild fsharp-library-build.proj /p:TargetFramework=monotouch /p:Configuration=Release
- msbuild fsharp-library-build.proj /p:TargetFramework=portable-net45+sl5+win8 /p:Configuration=Release
- msbuild fsharp-library-build.proj /p:TargetFramework=portable-net4+sl4+wp71+win8 /p:Configuration=Release
- msbuild fsharp-library-build.proj /p:TargetFramework=sl5 /p:Configuration=Release
- msbuild fsharp-library-build.proj /p:TargetFramework=wp7 /p:Configuration=Release
- msbuild fsharp-library-build.proj /p:TargetFramework=net40-xna40-xbox360 /p:Configuration=Release
-
-You can also build the FSharp.Core and FSharp.Compiler.Silverlight.dll for Silverlight 5.0:
-
- [lang=text]
- msbuild fsharp-library-build.proj /p:TargetFramework=sl5-compiler /p:Configuration=Release
- msbuild fsharp-compiler-build.proj /p:TargetFramework=sl5-compiler /p:Configuration=Release
-
-Change to ` /p:Configuration=Debug` for debug binaries.
-
-### On Windows, using xbuild (e.g. if no .NET is installed and only Mono 3.0 is installed):
-
- [lang=text]
- cd src
- xbuild fsharp-proto-build.proj
- xbuild fsharp-library-build.proj
- xbuild fsharp-compiler-build.proj
-
-Building using xbuild does not yet lay down a Mono-ready distribution (see src/fsharp/targets.make), so should only
-be used for private development rather than preparing distributions.
-
-
-## Strong Names
-
-The FSharp.Core.dll produced is only delay-signed (Mono does not require strong names).
-If a strong-name signed FSharp.Core.dll is needed then use the one in
-
- [lang=text]
- lib\bootstrap\signed\3.0\v4.0\FSharp.Core.dll
-
-## What you get
-
-Once built the main compiler binaries go in
-
- [lang=text]
- lib/release/4.0
-
-There are versions of FSharp.Core for .NET 2.0, MonoAndroid, MonoTouch (Mono profile 2.1) in
-
- [lang=text]
- lib/release/2.0
- lib/release/2.1
- lib/release/2.1monotouch
-
-On `make install` the binaries etc. go in the prefix, e.g.
-
- [lang=text]
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/2.0/FSharp.Core.dll
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/2.1/FSharp.Core.dll
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.0/fsc.exe
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.0/FSharp.Compiler.dll
- ...
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.5/fsc.exe
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.5/FSharp.Compiler.dll
- ...
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/gac/.../FSharp.Compiler.dll
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/gac/.../FSharp.Compiler.dll
- ...
-
-plus some files for xbuild support
-
- [lang=text]
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/Microsoft\ F#/v4.0/*
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/Microsoft\ SDKs/F#/3.0/Framework/*
-
-(these names are the canonical names for Microsoft.FSharp.Targets used by project files coming from Visual Studio)
-
-plus scripts
-
- /usr/bin/fsharpc (F# compiler)
- /usr/bin/fsharpi (F# Interactive)
-
-## Development notes
-
-###Continuous Integration Build
-
-We have a CI build set up with the JetBrains/Teamcity server as part of the F# community projects there:
-
-http://teamcity.codebetter.com/project.html?projectId=project61&tab=projectOverview
-
-@forki controls access. Right now this builds both a Mono 'make' install and a Windows 'cd src; msbuild fsharp-build.proj' build. No binaries are saved from the build, it is just for sanity checking.
-
-
-###Editing the Compiler with Visual Studio or MonoDevelop
-
-Open `all-vs2012.sln`, and edit in modes Debug or Release. The compiler takes a good while to compile and that
-can be a bit invasive to the work flow, so it's normally better to do the actual compilation from
-the command line, see above.
-
-The F# support in MonoDevelop uses an in-process background compiler. On the Mac this causes pausing garbage
-collections to kick in which makes editing the compiler in MonoDevelop awkward.
-
-### Building F# Core Unit Tests for .NET 4.x (optional)
-
-This uses the proto compiler to build the unit tests that check some parts of `FSharp.Core.dll` and `FSharp.Compiler.dll`. There is also another set of tests under `tests\fsharp`.
-
- [lang=text]
- msbuild fsharp-library-unittests-build.proj /p:TargetFramework=net40
-
-*Note: You must have NUnit installed to build the unit tests.*
-
-
-
-### Validation and Use
-
-Here are some simple tests to validate what you have built by checking `fsi.exe` (F# Interactive) starts up:
-
-
- [lang=text]
- lib\debug\4.0\fsi.exe
- 1 + 1;;
- \#q;;
- lib\debug\4.0\fsi.exe /help
- lib\debug\4.0\fsc.exe /help
- echo printfn "hello world" > hello.fs
- lib\debug\4.0\fsc.exe hello.fs
- hello.exe
-
-
-### Running Compiler tests (on Windows)
-
-There are language tests under `tests\fsharp\core`. The test apparatus is primitive and unfortunately uses batch files. You can run these on Windows using:
-
- [lang=text]
- cd ..\tests\fsharp\core
- ..\..\build-and-run-all-installed-ilx-configs.bat results.log
-
-
-The results file will contain one entry for each test directory, plus any reported errors.
-
-
- [lang=text]
- tests\fsharp\core
- tests\fsharp\core\queriesCustomQueryOps
- tests\fsharp\core\queriesLeafExpressionConvert
- tests\fsharp\core\queriesNullableOperators
- tests\fsharp\core\queriesOverIEnumerable
- ...
-
-Some tests for LINQ queries require SQL Server be installed. A failing test will look like this:
-
- [lang=text]
- ERRORLEVEL=1: in tests\fsharp\core\csfromfs\build.bat
-
-You can then go to the relevant directory and run `build.bat` and `run.bat`.
-
-
-## History
-
-F# compiler sources dropped by Microsoft are available from [fsharppowerpack.codeplex.com](http://fsharppowerpack.codeplex.com).
-
-Uses bootstrapping libraries, tools and F# compiler. The `lib/bootstrap/X.0` directories contain mono-built libraries, compiler and tools that can be used to bootstrap a build. You can also supply your own via the `--with-bootstrap` option.
\ No newline at end of file
diff --git a/fcs/docsrc/content/ja/compiler.fsx b/fcs/docsrc/content/ja/compiler.fsx
index d21e63b8ef0..393f837cb5f 100644
--- a/fcs/docsrc/content/ja/compiler.fsx
+++ b/fcs/docsrc/content/ja/compiler.fsx
@@ -1,5 +1,5 @@
(*** hide ***)
-#I "../../../bin/v4.5/"
+#I "../../../../debug/bin/net45/"
(**
コンパイラの組み込み
====================
diff --git a/fcs/docsrc/content/ja/editor.fsx b/fcs/docsrc/content/ja/editor.fsx
index 014be2e86c5..7bd61da5189 100644
--- a/fcs/docsrc/content/ja/editor.fsx
+++ b/fcs/docsrc/content/ja/editor.fsx
@@ -1,5 +1,5 @@
(*** hide ***)
-#I "../../../bin/v4.5/"
+#I "../../../../debug/bin/net45/"
(**
コンパイラサービス: エディタサービス
====================================
@@ -14,7 +14,7 @@
今回も `FSharpChecker` オブジェクトを作成するところから始めます。
> **注意:** 以下で使用しているAPIは試験的なもので、最新バージョンのnugetパッケージの
- 公開に伴って変更されることがあります。
+公開に伴って変更されることがあります。
サンプルソースコードの型チェック
--------------------------------
@@ -44,14 +44,14 @@ let checker = FSharpChecker.Create()
*)
// サンプルの入力となる複数行文字列
let input =
- """
- open System
-
- let foo() =
- let msg = String.Concat("Hello"," ","world")
- if true then
- printfn "%s" msg.
- """
+"""
+open System
+
+let foo() =
+let msg = String.Concat("Hello"," ","world")
+if true then
+printfn "%s" msg.
+"""
// 入力値の分割とファイル名の定義
let inputLines = input.Split('\n')
let file = "/home/user/Test.fsx"
@@ -73,8 +73,8 @@ let parsingOptions, _errors = checker.GetParsingOptionsFromProjectOptions(projOp
*)
// パースを実行
let parseFileResults =
- checker.ParseFile(file, input, parsingOptions)
- |> Async.RunSynchronously
+checker.ParseFile(file, input, parsingOptions)
+|> Async.RunSynchronously
(**
`TypeCheckResults` に備えられた興味深い機能の紹介に入る前に、
サンプル入力に対して型チェッカーを実行する必要があります。
@@ -84,25 +84,25 @@ F#コードにエラーがあった場合も何らかの型チェックの結果
// 型チェックを実行
let checkFileAnswer =
- checker.CheckFileInProject(parseFileResults, file, 0, input, projOptions)
- |> Async.RunSynchronously
+checker.CheckFileInProject(parseFileResults, file, 0, input, projOptions)
+|> Async.RunSynchronously
(**
あるいは `ParseAndCheckFileInProject` を使用すれば1つの操作で両方のチェックを行うことができます:
*)
let parseResults2, checkFileAnswer2 =
- checker.ParseAndCheckFileInProject(file, 0, input, projOptions)
- |> Async.RunSynchronously
+checker.ParseAndCheckFileInProject(file, 0, input, projOptions)
+|> Async.RunSynchronously
(**
この返り値は `CheckFileAnswer` 型で、この型に機能的に興味深いものが揃えられています...
*)
let checkFileResults =
- match checkFileAnswer with
- | FSharpCheckFileAnswer.Succeeded(res) -> res
- | res -> failwithf "パースが完了していません... (%A)" res
+match checkFileAnswer with
+| FSharpCheckFileAnswer.Succeeded(res) -> res
+| res -> failwithf "パースが完了していません... (%A)" res
(**
@@ -147,7 +147,7 @@ printfn "%A" tip
(**
> **注意:** `GetToolTipTextAlternate` は古い関数 `GetToolTipText` に代わるものです。
- `GetToolTipText` は0から始まる行番号を受け取るようになっていたため、非推奨になりました。
+`GetToolTipText` は0から始まる行番号を受け取るようになっていたため、非推奨になりました。
この関数には位置とトークンの種類の他にも、
(ソースコードの変更時に役立つように)特定行の現在の内容と、
@@ -178,19 +178,19 @@ printfn "%A" tip
*)
// 特定の位置における宣言(自動補完)を取得する
let decls =
- checkFileResults.GetDeclarationListInfo
- (Some parseFileResults, 7, 23, inputLines.[6], [], "msg", fun _ -> false)
- |> Async.RunSynchronously
+checkFileResults.GetDeclarationListInfo
+(Some parseFileResults, 7, 23, inputLines.[6], [], "msg", fun _ -> false)
+|> Async.RunSynchronously
// 利用可能な項目を表示
for item in decls.Items do
- printfn " - %s" item.Name
+printfn " - %s" item.Name
(**
> **注意:** `GetDeclarationListInfo` は古い関数 `GetDeclarations` に代わるものです。
- `GetDeclarations` は0から始まる行番号を受け取るようになっていたため、非推奨になりました。
- また、将来的には現在の `GetDeclarations` が削除され、 `GetDeclarationListInfo` が
- `GetDeclarations` になる予定です。
+`GetDeclarations` は0から始まる行番号を受け取るようになっていたため、非推奨になりました。
+また、将来的には現在の `GetDeclarations` が削除され、 `GetDeclarationListInfo` が
+`GetDeclarations` になる予定です。
コードを実行してみると、 `Substring` や `ToUpper` 、 `ToLower` といった
文字列に対するいつものメソッドのリストが取得できていることでしょう。
@@ -214,13 +214,13 @@ for item in decls.Items do
*)
//String.Concatメソッドのオーバーロードを取得する
let methods =
- checkFileResults.GetMethodsAlternate(5, 27, inputLines.[4], Some ["String"; "Concat"]) |> Async.RunSynchronously
+checkFileResults.GetMethodsAlternate(5, 27, inputLines.[4], Some ["String"; "Concat"]) |> Async.RunSynchronously
// 連結された引数リストを表示
for mi in methods.Methods do
- [ for p in mi.Parameters -> p.Display ]
- |> String.concat ", "
- |> printfn "%s(%s)" methods.MethodName
+[ for p in mi.Parameters -> p.Display ]
+|> String.concat ", "
+|> printfn "%s(%s)" methods.MethodName
(**
ここでは `Display` プロパティを使用することで各引数に対する
アノテーションを取得しています。
@@ -247,9 +247,9 @@ F#コンパイラは型チェックを(自動的に)バックグラウンドで
ファイルに対する型チェックを諦めるか、どちらか選択することになります。
> [fsharpbinding](https://github.com/fsharp/fsharpbinding) プロジェクトには
- 1つのF#エージェント経由ですべてのリクエストをバックグラウンドワークとして
- 処理するような、より複雑な具体例も含まれています。
- エディタの機能を実装する方法としてはこちらのほうが適切です。
+1つのF#エージェント経由ですべてのリクエストをバックグラウンドワークとして
+処理するような、より複雑な具体例も含まれています。
+エディタの機能を実装する方法としてはこちらのほうが適切です。
*)
diff --git a/fcs/docsrc/content/ja/filesystem.fsx b/fcs/docsrc/content/ja/filesystem.fsx
index 2c18c95fa9a..1646b49ccff 100644
--- a/fcs/docsrc/content/ja/filesystem.fsx
+++ b/fcs/docsrc/content/ja/filesystem.fsx
@@ -1,5 +1,5 @@
(*** hide ***)
-#I "../../../bin/v4.5/"
+#I "../../../../debug/bin/net45/"
(**
コンパイラサービス: ファイルシステム仮想化
==========================================
diff --git a/fcs/docsrc/content/ja/fsharp-readme.md b/fcs/docsrc/content/ja/fsharp-readme.md
deleted file mode 100644
index f7b5238400d..00000000000
--- a/fcs/docsrc/content/ja/fsharp-readme.md
+++ /dev/null
@@ -1,249 +0,0 @@
-F# コンパイラのREADME
-=============================================================================================
-
-> **注意:** このreadmeファイルはF# コンパイラソースコード
-([github.com/fsharp/fsharp](https://github.com/fsharp/fsharp))
-に付属していたオリジナルのファイルのコピーです。
-F# Compiler Servicesプロジェクトは元々F# Compilerプロジェクトから派生したもので、
-いくつかのサービスを公開するために若干の変更が加えられています。
-ここに含まれるreadmeファイルは参考程度にとどめてください。
-
-このプロジェクトには(オープンソース版の)F# コンパイラ、コアライブラリ、コアツールが含まれます。
-いずれもMITライセンスが適用されます。
-`master` ブランチは最新バージョンのF#(現時点ではF# 3.0)に対応します。
-なおコンパイラをブートストラップするために、
-このプロジェクトの以前のバージョンでビルドされたバイナリが使用されます。
-
-## 必須要件
-
-Mono 2.9以上のバージョンが必要です。Mono 3.0が推奨されます。
-
-OS Xの場合、automake 2.69が必要です。
-[homebrew](http://brew.sh/) 経由でインストールする場合は
-以下のようにします:
-
- [lang=text]
- brew install automake
-
-## ビルド
-
-### Linuxおよびその他のUnixシステムの場合
-
-通常の手順は以下の通りです:
-
- [lang=text]
- ./autogen.sh
- make
- sudo make install
-
-デフォルトでは最適化されたバイナリが生成されます。
-デバッグ版をビルドする場合は `make CONFIG=debug` とします。
-
-### MacOS (OSX)の場合
-
-Monoのバージョンを指定するprefixを設定します:
-
- [lang=text]
- ./autogen.sh --prefix=/Library/Frameworks/Mono.framework/Versions/Current/
- make
- sudo make install
-
-デフォルトでは最適化されたバイナリが生成されます。
-デバッグ版をビルドする場合は `make CONFIG=debug` とします。
-
-### Windows上でmsbuildを使用する(つまり.NETがインストールされている)場合
-
-VS2010がインストールされておらず、VS2012しかインストールされていない場合には
-[F# 2.0 ランタイム](http://www.microsoft.com/en-us/download/details.aspx?id=13450)
-のインストールが必要です:
-
- [lang=text]
- cd src
- msbuild fsharp-proto-build.proj
- ngen install ..\lib\proto\4.0\fsc-proto.exe (optional)
- msbuild fsharp-library-build.proj /p:Configuration=Release
- msbuild fsharp-compiler-build.proj /p:Configuration=Release
-
-また、.NET 2.0やMono 2.1、MonoTouch、Silverlight 5.0、
-Windows Phone 7.1、ポータブルプロファイル47(.NET4.5+Silverlight5+Windows8)、
-ポータブルプロファイル88(.NET4+Silverlight4+WindowsPhone7.1+Windows8)、
-Xbox 360用XNA 4.0のプロファイルに対応するFSharp.Coreをビルドすることもできます:
-
- [lang=text]
- msbuild fsharp-library-build.proj /p:TargetFramework=net20 /p:Configuration=Release
- msbuild fsharp-library-build.proj /p:TargetFramework=mono21 /p:Configuration=Release
- msbuild fsharp-library-build.proj /p:TargetFramework=monotouch /p:Configuration=Release
- msbuild fsharp-library-build.proj /p:TargetFramework=portable-net45+sl5+win8 /p:Configuration=Release
- msbuild fsharp-library-build.proj /p:TargetFramework=portable-net4+sl4+wp71+win8 /p:Configuration=Release
- msbuild fsharp-library-build.proj /p:TargetFramework=sl5 /p:Configuration=Release
- msbuild fsharp-library-build.proj /p:TargetFramework=wp7 /p:Configuration=Release
- msbuild fsharp-library-build.proj /p:TargetFramework=net40-xna40-xbox360 /p:Configuration=Release
-
-Silverlight 5.0用にFSharp.CoreとFSharp.Compiler.Silverlight.dll
-をビルドすることもできます:
-
- [lang=text]
- msbuild fsharp-library-build.proj /p:TargetFramework=sl5-compiler /p:Configuration=Release
- msbuild fsharp-compiler-build.proj /p:TargetFramework=sl5-compiler /p:Configuration=Release
-
-デバッグ版バイナリを出力する場合は ` /p:Configuration=Debug` に変更します。
-
-### Windows上でxbuildを使用する(つまり.NETがインストールされておらず、Mono 3.0だけがインストールされている)場合
-
- [lang=text]
- cd src
- xbuild fsharp-proto-build.proj
- xbuild fsharp-library-build.proj
- xbuild fsharp-compiler-build.proj
-
-xbuildを使用したビルドはMono準拠の公開用バイナリ生成にはまだ対応していないため
-(src/fsharp/targets.make を参照)、個人的な使用にとどめ、
-公開用のビルドには使用してはいけません。
-
-## 厳密名
-
-生成されたFSharp.Core.dllには遅延署名だけが行われます
-(Monoでは厳密名が必須ではありません)。
-厳密名で署名されたFSharp.Core.dllが必要であれば以下を使用してください:
-
- [lang=text]
- lib\bootstrap\signed\3.0\v4.0\FSharp.Core.dll
-
-## 生成されるファイル
-
-ビルドが完了すると、メインのコンパイラバイナリは以下の場所に生成されます:
-
- [lang=text]
- lib/release/4.0
-
-.NET 2.0やMonoAndroid、MonoTouch(Monoプロファイル2.1)は以下の場所に生成されます:
-
- [lang=text]
- lib/release/2.0
- lib/release/2.1
- lib/release/2.1monotouch
-
-`make install` を実行した場合のプレフィックスは以下のようになります:
-
- [lang=text]
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/2.0/FSharp.Core.dll
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/2.1/FSharp.Core.dll
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.0/fsc.exe
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.0/FSharp.Compiler.dll
- ...
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.5/fsc.exe
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.5/FSharp.Compiler.dll
- ...
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/gac/.../FSharp.Compiler.dll
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/gac/.../FSharp.Compiler.dll
- ...
-
-またxbuildをサポートする場合は以下のプレフィックスになります:
-
- [lang=text]
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/Microsoft\ F#/v4.0/*
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/Microsoft\ SDKs/F#/3.0/Framework/*
-
-(これらの名前はVisual Studio由来のプロジェクトファイルで使用されている
-Microsoft.FSharp.Targetsファイル内における正式名です)
-
-また、以下のスクリプトが配置されます:
-
- [lang=text]
- /usr/bin/fsharpc (F# コンパイラ)
- /usr/bin/fsharpi (F# Interactive)
-
-## 開発者用メモ
-
-### 継続的インテグレーションビルド
-
-このプロジェクトはJetBrains/Teamcityサーバー上において、
-F#コミュニティプロジェクトの一部として継続的インテグレーション
-(CI:continuous integration)ビルドが行われています:
-
-[http://teamcity.codebetter.com/project.html?projectId=project61&tab=projectOverview](http://teamcity.codebetter.com/project.html?projectId=project61&tab=projectOverview)
-
-主な管理者は @forki です。
-今のところMono用に'make' installと、
-Windows用に 'cd src; msbuild fsharp-build.proj' のビルドが行われています。
-ビルドされたバイナリは保存されておらず、
-単にサニティチェックだけが対象になっています。
-
-### Visual StudioまたはMonoDevelop上でコンパイラを編集する
-
-`all-vs2012.sln` を開いてモードをDebugまたはReleaseに設定します。
-コンパイラはコンパイル中でも気を利かせてワークフローに若干介入することがあるため、
-実際にコンパイルを実行するには上記にあるようなコマンドライン経由で
-コンパイルするとよいでしょう。
-
-MonoDevelopでサポートされているF#ではプロセス内バックグラウンドコンパイラが
-使用されます。
-Mac上ではこれが原因でガベージコレクションを止めることがあり、
-MonoDevelop上でのコンパイラの編集がしづらくなる場合があります。
-
-### .NET 4.x用にF# Coreの単体テストをビルドする(省略可)
-
-このプロジェクトでは、 `FSharp.Core.dll` や `FSharp.Compiler.dll` の一部を
-チェックする単体テストをビルドするためにprotoコンパイラを使用しています。
-また、 `tests\fsharp` 以下にもいくつかのテストがあります。
-
- [lang=text]
- msbuild fsharp-library-unittests-build.proj /p:TargetFramework=net40
-
-*注意: 単体テストをビルドする場合、NUnitをインストールしておく必要があります。*
-
-### 検証および使用方法
-
-ビルドされたバイナリを簡単に検証するには、以下のようにして `fsi.exe`
-(F# Interactive) を起動してみるとよいでしょう:
-
- [lang=text]
- lib\debug\4.0\fsi.exe
- 1 + 1;;
- \#q;;
- lib\debug\4.0\fsi.exe /help
- lib\debug\4.0\fsc.exe /help
- echo printfn "hello world" > hello.fs
- lib\debug\4.0\fsc.exe hello.fs
- hello.exe
-
-
-### (Windows上で)コンパイラのテストを実行する
-
-`tests\fsharp\core` 以下には言語機能のテストがあります。
-テスト機構は素朴なもので、残念なことにバッチファイルを使用しています。
-これらのテストをWindows上で実行するには以下のようにします:
-
- [lang=text]
- cd ..\tests\fsharp\core
- ..\..\build-and-run-all-installed-ilx-configs.bat results.log
-
-それぞれのテストディレクトリには1つのテスト結果ファイルが生成され、
-発生したエラーも記録されます。
-
- [lang=text]
- tests\fsharp\core
- tests\fsharp\core\queriesCustomQueryOps
- tests\fsharp\core\queriesLeafExpressionConvert
- tests\fsharp\core\queriesNullableOperators
- tests\fsharp\core\queriesOverIEnumerable
- ...
-
-LINQクエリに対するいくつかのテストではSQL Serverのインストールが必要です。
-テストが失敗すると、たとえば以下のように出力されます:
-
- [lang=text]
- ERRORLEVEL=1: in tests\fsharp\core\csfromfs\build.bat
-
-この場合、関連するディレクトリに移動した後、
-`build.bat` および `run.bat` を実行します。
-
-## 歴史
-
-Microsoftから公開されたF#コンパイラのソースは
-[fsharppowerpack.codeplex.com](http://fsharppowerpack.codeplex.com) にあります。
-
-ブートストラップ用ライブラリ、ツール、F#コンパイラが利用できます。
-`lib/bootstrap/X.0` ディレクトリにはMonoビルド用ライブラリやコンパイラ、
-ビルドをブートストラップするために使用するツールなどが含まれています。
-ブートストラップを独自に指定する場合は `--with-bootstrap` オプションを使用します。
diff --git a/fcs/docsrc/content/ja/interactive.fsx b/fcs/docsrc/content/ja/interactive.fsx
index 3344b41958b..63240cd98fd 100644
--- a/fcs/docsrc/content/ja/interactive.fsx
+++ b/fcs/docsrc/content/ja/interactive.fsx
@@ -1,5 +1,5 @@
(*** hide ***)
-#I "../../../bin/v4.5/"
+#I "../../../../debug/bin/net45/"
(**
インタラクティブサービス: F# Interactiveの組み込み
==================================================
diff --git a/fcs/docsrc/content/ja/project.fsx b/fcs/docsrc/content/ja/project.fsx
index 78cf6eff3e0..3e2895b9f38 100644
--- a/fcs/docsrc/content/ja/project.fsx
+++ b/fcs/docsrc/content/ja/project.fsx
@@ -1,5 +1,5 @@
(*** hide ***)
-#I "../../../bin/v4.5/"
+#I "../../../../debug/bin/net45/"
(**
コンパイラサービス: プロジェクトの分析
======================================
diff --git a/fcs/docsrc/content/ja/symbols.fsx b/fcs/docsrc/content/ja/symbols.fsx
index 15ebfab65b0..2e3f53bdba4 100644
--- a/fcs/docsrc/content/ja/symbols.fsx
+++ b/fcs/docsrc/content/ja/symbols.fsx
@@ -1,5 +1,5 @@
(*** hide ***)
-#I "../../../bin/v4.5/"
+#I "../../../../debug/bin/net45/"
(**
コンパイラサービス: シンボルの処理
==================================
@@ -113,8 +113,8 @@ fnVal.CurriedParameterGroups.[0].[0].Name // "x"
fnVal.CurriedParameterGroups.[0].[1].Name // "y"
fnVal.DeclarationLocation.StartLine // 3
fnVal.DisplayName // "foo"
-fnVal.EnclosingEntity.DisplayName // "Test"
-fnVal.EnclosingEntity.DeclarationLocation.StartLine // 1
+fnVal.DeclaringEntity.DisplayName // "Test"
+fnVal.DeclaringEntity.DeclarationLocation.StartLine // 1
fnVal.GenericParameters.Count // 0
fnVal.InlineAnnotation // FSharpInlineAnnotation.OptionalInline
fnVal.IsActivePattern // false
diff --git a/fcs/docsrc/content/ja/tokenizer.fsx b/fcs/docsrc/content/ja/tokenizer.fsx
index abcbb222c48..589061e0b0a 100644
--- a/fcs/docsrc/content/ja/tokenizer.fsx
+++ b/fcs/docsrc/content/ja/tokenizer.fsx
@@ -1,5 +1,5 @@
(*** hide ***)
-#I "../../../bin/v4.5/"
+#I "../../../../debug/bin/net45/"
(**
コンパイラサービス:F#トークナイザを使用する
============================================
diff --git a/fcs/docsrc/content/ja/untypedtree.fsx b/fcs/docsrc/content/ja/untypedtree.fsx
index df6b6f4deb8..38f6e0b0e9c 100644
--- a/fcs/docsrc/content/ja/untypedtree.fsx
+++ b/fcs/docsrc/content/ja/untypedtree.fsx
@@ -1,5 +1,5 @@
(*** hide ***)
-#I "../../../bin/v4.5/"
+#I "../../../../debug/bin/net45/"
(**
コンパイラサービス:型無し構文木の処理
======================================
@@ -88,7 +88,7 @@ let getUntypedTree (file, input) =
`FSharpChecker` の詳細については
[ APIドキュメント](../reference/microsoft-fsharp-compiler-sourcecodeservices-FSharpChecker.html)
の他に、F# ソースコードのインラインコメントも参考になるでしょう
-( [`service.fsi` のソースコードを参照](https://github.com/fsharp/fsharp/blob/fsharp_31/src/fsharp/vs/service.fsi) )。
+( [`service.fsi` のソースコードを参照](https://github.com/fsharp/fsharp/blob/fsharp_31/src/fsharp/service/service.fsi) )。
ASTの走査
---------
diff --git a/fcs/docsrc/content/queue.fsx b/fcs/docsrc/content/queue.fsx
index e49fb006c33..f3d61f19bb3 100644
--- a/fcs/docsrc/content/queue.fsx
+++ b/fcs/docsrc/content/queue.fsx
@@ -19,7 +19,7 @@ To disable implicit background checking completely, set ``checker.ImplicitlyStar
To change the time before background work starts, set ``checker.PauseBeforeBackgroundWork`` to the required number of milliseconds.
Most calls to the FSharpChecker API enqueue an operation in the FSharpChecker compiler queue. These correspond to the
-calls to EnqueueAndAwaitOpAsync in [service.fs](https://github.com/fsharp/FSharp.Compiler.Service/blob/master/src/fsharp/vs/service.fs).
+calls to EnqueueAndAwaitOpAsync in [service.fs](https://github.com/fsharp/FSharp.Compiler.Service/blob/master/src/fsharp/service/service.fs).
* For example, calling `ParseAndCheckProject` enqueues a `ParseAndCheckProjectImpl` operation. The time taken for the
operation will depend on how much work is required to bring the project analysis up-to-date.
diff --git a/fcs/docsrc/content/symbols.fsx b/fcs/docsrc/content/symbols.fsx
index a4e118df1b0..fb6275fd37c 100644
--- a/fcs/docsrc/content/symbols.fsx
+++ b/fcs/docsrc/content/symbols.fsx
@@ -109,8 +109,8 @@ fnVal.CurriedParameterGroups.[0].[0].Name // "x"
fnVal.CurriedParameterGroups.[0].[1].Name // "y"
fnVal.DeclarationLocation.StartLine // 3
fnVal.DisplayName // "foo"
-fnVal.EnclosingEntity.DisplayName // "Test"
-fnVal.EnclosingEntity.DeclarationLocation.StartLine // 1
+fnVal.DeclaringEntity.DisplayName // "Test"
+fnVal.DeclaringEntity.DeclarationLocation.StartLine // 1
fnVal.GenericParameters.Count // 0
fnVal.InlineAnnotation // FSharpInlineAnnotation.OptionalInline
fnVal.IsActivePattern // false
diff --git a/fcs/docsrc/tools/generate.fsx b/fcs/docsrc/tools/generate.fsx
index 59bd10187af..000f25f6a47 100644
--- a/fcs/docsrc/tools/generate.fsx
+++ b/fcs/docsrc/tools/generate.fsx
@@ -32,7 +32,7 @@ open FSharp.MetadataFormat
let root = "."
// Paths with template/source/output locations
-let bin = __SOURCE_DIRECTORY__ @@ "../../../Release/fcs/net45"
+let bin = __SOURCE_DIRECTORY__ @@ "../../../release/fcs/net45"
let content = __SOURCE_DIRECTORY__ @@ "../content"
let output = __SOURCE_DIRECTORY__ @@ "../../../docs"
let files = __SOURCE_DIRECTORY__ @@ "../files"
diff --git a/fcs/docsrc/tools/generate.ja.fsx b/fcs/docsrc/tools/generate.ja.fsx
index 8044db885d3..feaeb592d35 100644
--- a/fcs/docsrc/tools/generate.ja.fsx
+++ b/fcs/docsrc/tools/generate.ja.fsx
@@ -41,7 +41,7 @@ open FSharp.MetadataFormat
let root = "."
// Paths with template/source/output locations
-let bin = __SOURCE_DIRECTORY__ @@ "../../../Release/fcs/net45"
+let bin = __SOURCE_DIRECTORY__ @@ "../../../release/fcs/net45"
let content = __SOURCE_DIRECTORY__ @@ "../content/ja"
let outputJa = __SOURCE_DIRECTORY__ @@ "../../../docs/ja"
let files = __SOURCE_DIRECTORY__ @@ "../files"
diff --git a/fcs/fcs.props b/fcs/fcs.props
index 88fb2f42ac1..470ea0b88da 100644
--- a/fcs/fcs.props
+++ b/fcs/fcs.props
@@ -3,14 +3,12 @@
- 16.0.3
+ 22.0.3
+ --version:$(VersionPrefix)
+ false
$(FSharpSourcesRoot)\..\packages\FSharp.Compiler.Tools.4.1.27\tools
fsi.exe
-
- 1.3.1
- {HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}
-
\ No newline at end of file
diff --git a/fcs/netfx.props b/fcs/netfx.props
new file mode 100644
index 00000000000..064f29b1809
--- /dev/null
+++ b/fcs/netfx.props
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ true
+
+
+ /Library/Frameworks/Mono.framework/Versions/Current/lib/mono
+ /usr/lib/mono
+ /usr/local/lib/mono
+
+
+ $(BaseFrameworkPathOverrideForMono)/4.5-api
+ $(BaseFrameworkPathOverrideForMono)/4.5.1-api
+ $(BaseFrameworkPathOverrideForMono)/4.5.2-api
+ $(BaseFrameworkPathOverrideForMono)/4.6-api
+ $(BaseFrameworkPathOverrideForMono)/4.6.1-api
+ $(BaseFrameworkPathOverrideForMono)/4.6.2-api
+ $(BaseFrameworkPathOverrideForMono)/4.7-api
+ $(BaseFrameworkPathOverrideForMono)/4.7.1-api
+ true
+
+
+ $(FrameworkPathOverride)/Facades;$(AssemblySearchPaths)
+
+
\ No newline at end of file
diff --git a/fcs/nuget/FSharp.Compiler.Service.MSBuild.v12.nuspec b/fcs/nuget/FSharp.Compiler.Service.MSBuild.v12.nuspec
deleted file mode 100644
index ae9c17a7819..00000000000
--- a/fcs/nuget/FSharp.Compiler.Service.MSBuild.v12.nuspec
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
- FSharp.Compiler.Service.MSBuild.v12
- Adds legacy MSBuild 12.0 support to the F# compiler services package for resolving references such as #r "System, Version=4.1.0.0,..."
- en-US
- false
- 16.0.3
- Microsoft Corporation and F# community contributors
- https://github.com/fsharp/FSharp.Compiler.Service/blob/master/LICENSE
- https://github.com/fsharp/FSharp.Compiler.Service
- https://raw.github.com/fsharp/FSharp.Compiler.Service/master/misc/logo.png
- F#, fsharp, interactive, compiler, editor
- F# compiler services for creating IDE tools, language extensions and for F# embedding.
-
-
-
-
-
-
-
-
-
-
diff --git a/fcs/nuget/FSharp.Compiler.Service.ProjectCracker.nuspec b/fcs/nuget/FSharp.Compiler.Service.ProjectCracker.nuspec
deleted file mode 100644
index e45bb835728..00000000000
--- a/fcs/nuget/FSharp.Compiler.Service.ProjectCracker.nuspec
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
- FSharp.Compiler.Service.ProjectCracker
- The F# compiler services package contains a custom build of the F# compiler that exposes additional functionality for implementing F# language bindings, additional tools based on the compiler or refactoring tools. The package also includes F# interactive service that can be used for embedding F# scripting into your applications.
- en-US
- false
- 16.0.3
- Microsoft Corporation and F# community contributors
- https://github.com/fsharp/FSharp.Compiler.Service/blob/master/LICENSE
- https://github.com/fsharp/FSharp.Compiler.Service
- https://raw.github.com/fsharp/FSharp.Compiler.Service/master/misc/logo.png
- F#, fsharp, interactive, compiler, editor
- F# compiler services for creating IDE tools, language extensions and for F# embedding.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/fcs/nuget/FSharp.Compiler.Service.nuspec b/fcs/nuget/FSharp.Compiler.Service.nuspec
deleted file mode 100644
index ba4c2e7c3d5..00000000000
--- a/fcs/nuget/FSharp.Compiler.Service.nuspec
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
- FSharp.Compiler.Service
- The F# compiler services package contains a custom build of the F# compiler that exposes additional functionality for implementing F# language bindings, additional tools based on the compiler or refactoring tools. The package also includes F# interactive service that can be used for embedding F# scripting into your applications.
- en-US
- false
- 16.0.3
- Microsoft Corporation and F# community contributors
- https://github.com/fsharp/FSharp.Compiler.Service/blob/master/LICENSE
- https://github.com/fsharp/FSharp.Compiler.Service
- https://raw.github.com/fsharp/FSharp.Compiler.Service/master/misc/logo.png
- F#, fsharp, interactive, compiler, editor
- F# compiler services for creating IDE tools, language extensions and for F# embedding.
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/fcs/paket.dependencies b/fcs/paket.dependencies
index 39535eedd9d..ccaead9f031 100644
--- a/fcs/paket.dependencies
+++ b/fcs/paket.dependencies
@@ -4,9 +4,3 @@ source https://www.nuget.org/api/v2/
nuget FAKE
nuget FSharp.Formatting
-
-nuget Microsoft.Build.Utilities.Core 14.3.0
-nuget Microsoft.Build.Framework 14.3.0
-nuget Microsoft.Build.Engine 14.3.0
-nuget Microsoft.Build 14.3.0
-nuget System.Threading.Tasks.Dataflow 4.5.24.0
\ No newline at end of file
diff --git a/fcs/paket.lock b/fcs/paket.lock
index 947bfc412b7..1ead25b452a 100644
--- a/fcs/paket.lock
+++ b/fcs/paket.lock
@@ -1,24 +1,10 @@
RESTRICTION: || (== net45) (== net46)
NUGET
remote: https://www.nuget.org/api/v2
- FAKE (4.63.2)
+ FAKE (4.64.6)
FSharp.Compiler.Service (2.0.0.6)
FSharp.Formatting (2.14.4)
FSharp.Compiler.Service (2.0.0.6)
FSharpVSPowerTools.Core (>= 2.3 < 2.4)
FSharpVSPowerTools.Core (2.3)
FSharp.Compiler.Service (>= 2.0.0.3)
- Microsoft.Build (14.3)
- Microsoft.Build.Framework (14.3)
- Microsoft.Build.Engine (14.3)
- Microsoft.Build.Framework (14.3)
- Microsoft.Build.Framework (14.3)
- System.Collections (>= 4.0.11) - restriction: || (&& (== net45) (>= netstandard1.3)) (== net46)
- System.Runtime (>= 4.1) - restriction: || (&& (== net45) (>= netstandard1.3)) (== net46)
- System.Runtime.InteropServices (>= 4.1) - restriction: || (&& (== net45) (>= netstandard1.3)) (== net46)
- Microsoft.Build.Utilities.Core (14.3)
- Microsoft.Build.Framework (14.3)
- System.Collections (4.3) - restriction: || (&& (== net45) (>= netstandard1.3)) (== net46)
- System.Runtime (4.3) - restriction: || (&& (== net45) (>= netstandard1.3)) (== net46)
- System.Runtime.InteropServices (4.3) - restriction: || (&& (== net45) (>= netstandard1.3)) (== net46)
- System.Threading.Tasks.Dataflow (4.5.24)
diff --git a/fcs/samples/EditorService/EditorService.fsproj b/fcs/samples/EditorService/EditorService.fsproj
index e232d6c5eff..05847e67f90 100644
--- a/fcs/samples/EditorService/EditorService.fsproj
+++ b/fcs/samples/EditorService/EditorService.fsproj
@@ -1,64 +1,23 @@
-
-
-
+
+
+
- Debug
- AnyCPU
- $(MSBuildProjectDirectory)\..\..\
- 2.0
- a40507d6-fa48-43d3-b18a-ae3daace4020
+ net46;netcoreapp2.0
+ true
Exe
- EditorService
- EditorService
- v4.5
- EditorService
-
- true
-
-
- true
- full
- false
- false
- bin\Debug\
- DEBUG;TRACE
- 3
- AnyCPU
- bin\Debug\EditorService.xml
- true
-
-
- pdbonly
- true
- true
- bin\Release\
- TRACE
- 3
- AnyCPU
- bin\Release\EditorService.xml
- true
+ false
-
-
-
- $(SolutionDir)\..\packages\Microsoft.Portable.FSharp.Core.4.1.20\lib\profiles\net40\FSharp.Core.dll
- false
-
-
-
-
-
-
-
- FSharp.Compiler.Service
- {2e4d67b4-522d-4cf7-97e4-ba940f0b18f3}
- True
-
+
+
+
+
+
+
+
-
-
\ No newline at end of file
+
diff --git a/fcs/samples/EditorService/paket.references b/fcs/samples/EditorService/paket.references
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/fcs/samples/FscExe/FscExe.fsproj b/fcs/samples/FscExe/FscExe.fsproj
index 946034ec67c..c482656827f 100644
--- a/fcs/samples/FscExe/FscExe.fsproj
+++ b/fcs/samples/FscExe/FscExe.fsproj
@@ -1,76 +1,24 @@
-
-
-
-
+
+
+
- $(MSBuildProjectDirectory)\..\..\..\src
-
-
- Debug
- AnyCPU
- $(MSBuildProjectDirectory)\..\..\
- x86
- {C94C257C-3C0A-4858-B5D8-D746498D1F08}
+ net46
+ true
Exe
- $(NoWarn);62;44
- FscExe
- FscExe
- COMPILER;$(DefineConstants)
- FX_RESIDENT_COMPILER;$(DefineConstants)
- true
- $(OtherFlags) --warnon:1182
- true
- 4.4.0.0
- v4.5
-
-
-
- true
- full
- false
- false
- bin\Debug\
- TRACE;DEBUG;$(DefineConstants)
- 3
- AnyCPU
- bin\Debug\FsiExe.xml
- true
-
-
-
-
- pdbonly
- true
- true
- bin\Release\
- TRACE;$(DefineConstants)
- 3
- AnyCPU
- bin\Release\FsiExe.xml
- true
+ false
+ $(DefineConstants);RESIDENT_COMPILER
-
- Driver/FscMain.fs
-
+
-
-
- $(FSharpSourcesRoot)\..\packages\FSharp.Compiler.Tools.4.1.27\tools\FSharp.Core.dll
- true
-
-
-
+
+
-
-
- FSharp.Compiler.Service
- {2e4d67b4-522d-4cf7-97e4-ba940f0b18f3}
- True
-
+
+
+
-
-
\ No newline at end of file
+
diff --git a/fcs/samples/FscExe/FscMain.fs b/fcs/samples/FscExe/FscMain.fs
index 6a639ea678d..af8f290df78 100644
--- a/fcs/samples/FscExe/FscMain.fs
+++ b/fcs/samples/FscExe/FscMain.fs
@@ -14,11 +14,7 @@ open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library
open Microsoft.FSharp.Compiler.ErrorLogger
open Microsoft.FSharp.Compiler.Range
-#if FX_RESHAPED_REFLECTION
-open Microsoft.FSharp.Core.ReflectionAdapters
-#endif
-
-#if FX_RESIDENT_COMPILER
+#if RESIDENT_COMPILER
type TypeInThisAssembly() = member x.Dummy = 1
let progress = ref false
@@ -58,19 +54,15 @@ module FSharpResidentCompiler =
// Use different base channel names on mono and CLR as a CLR remoting process can't talk
// to a mono server
static let baseChannelName =
-#if ENABLE_MONO_SUPPORT
if runningOnMono then
"FSCChannelMono"
else
-#endif
"FSCChannel"
static let channelName = baseChannelName + "_" + domainName + "_" + userName
static let serverName =
-#if ENABLE_MONO_SUPPORT
if runningOnMono then
"FSCServerMono"
else
-#endif
"FSCSever"
static let mutable serverExists = true
@@ -131,7 +123,6 @@ module FSharpResidentCompiler =
// On Unix, the file permissions of the implicit socket need to be set correctly to make this
// private to the user.
-#if ENABLE_MONO_SUPPORT
if runningOnMono then
try
let monoPosix = System.Reflection.Assembly.Load(new System.Reflection.AssemblyName("Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"))
@@ -152,7 +143,6 @@ module FSharpResidentCompiler =
#endif
()
// Fail silently
-#endif
server.Run()
static member private ConnectToServer() =
@@ -177,7 +167,6 @@ module FSharpResidentCompiler =
with _ ->
if !progress then printfn "client: error while creating client, starting client instead"
let procInfo =
-#if ENABLE_MONO_SUPPORT
if runningOnMono then
let shellName, useShellExecute =
match System.Environment.GetEnvironmentVariable("FSC_MONO") with
@@ -194,7 +183,6 @@ module FSharpResidentCompiler =
CreateNoWindow = true,
UseShellExecute = useShellExecute)
else
-#endif
ProcessStartInfo(FileName=fscServerExe,
Arguments = "/server",
CreateNoWindow = true,
@@ -274,6 +262,7 @@ module Driver =
System.Console.WriteLine("Press any key to continue...")
System.Console.ReadKey() |> ignore
+#if RESIDENT_COMPILER
if runningOnMono && hasArgument "resident" argv then
let argv = stripArgument "resident" argv
@@ -293,14 +282,13 @@ module Driver =
elif runningOnMono && hasArgument "server" argv then
FSharpResidentCompiler.FSharpCompilationServer.RunServer()
0
-
+#endif
else
let errors, exitCode = FSharpChecker.Create().Compile (argv) |> Async.RunSynchronously
for error in errors do eprintfn "%s" (error.ToString())
exitCode
-#if FX_NO_DEFAULT_DEPENDENCY_TYPE
-#else
+#if !FX_NO_DEFAULT_DEPENDENCY_TYPE
[]
#endif
do ()
diff --git a/fcs/samples/FscExe/paket.references b/fcs/samples/FscExe/paket.references
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/fcs/samples/FsiExe/FsiExe.fsproj b/fcs/samples/FsiExe/FsiExe.fsproj
index ef52e8ee777..7377f2c2912 100644
--- a/fcs/samples/FsiExe/FsiExe.fsproj
+++ b/fcs/samples/FsiExe/FsiExe.fsproj
@@ -1,63 +1,12 @@
-
-
-
+
+
+
- $(MSBuildProjectDirectory)\..\..\..\src
-
-
- Debug
- AnyCPU
- $(MSBuildProjectDirectory)\..\..\
- 2.0
- {f9540ca8-1ce0-4546-a23a-a461e416e95b}
+ net46
+ true
Exe
- FsiExe
- FsiExe
- v4.5
- FsiExe
- 40
-
- true
-
-
- true
- full
- false
- false
- bin\Debug\
- TRACE;DEBUG
- 3
- AnyCPU
- bin\Debug\FsiExe.xml
- true
-
-
-
-
- pdbonly
- true
- true
- bin\Release\
- TRACE
- 3
- AnyCPU
- bin\Release\FsiExe.xml
- true
+ false
-
-
-
- $(FSharpSourcesRoot)\..\packages\FSharp.Compiler.Tools.4.1.27\tools\FSharp.Core.dll
- true
-
-
-
-
-
-
-
-
-
@@ -65,11 +14,13 @@
-
- FSharp.Compiler.Service
- {2e4d67b4-522d-4cf7-97e4-ba940f0b18f3}
- True
-
+
+
+
+
+
+
+
+
-
-
\ No newline at end of file
+
diff --git a/fcs/samples/FsiExe/paket.references b/fcs/samples/FsiExe/paket.references
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/fcs/samples/InteractiveService/InteractiveService.fsproj b/fcs/samples/InteractiveService/InteractiveService.fsproj
index 4efd2a56b12..7aa42497261 100644
--- a/fcs/samples/InteractiveService/InteractiveService.fsproj
+++ b/fcs/samples/InteractiveService/InteractiveService.fsproj
@@ -1,68 +1,22 @@
-
-
-
+
+
+
- $(MSBuildProjectDirectory)\..\..\..\src
-
-
- Debug
- AnyCPU
- $(MSBuildProjectDirectory)\..\..\
- 2.0
- 067e95e5-e3dc-4ca7-813a-4d1e277d2d52
+ net46
+ true
Exe
- InteractiveService
- InteractiveService
- v4.5
- InteractiveService
- 4.4.0.0
-
- true
-
-
- true
- full
- false
- false
- bin\Debug\
- DEBUG;TRACE
- 3
- AnyCPU
- bin\Debug\InteractiveService.xml
- true
-
-
- pdbonly
- true
- true
- bin\Release\
- TRACE
- 3
- AnyCPU
- bin\Release\InteractiveService.xml
- true
+ false
-
-
-
- $(FSharpSourcesRoot)\..\packages\FSharp.Compiler.Tools.4.1.27\tools\FSharp.Core.dll
- true
-
-
-
-
-
-
-
- FSharp.Compiler.Service
- {2e4d67b4-522d-4cf7-97e4-ba940f0b18f3}
- True
-
+
+
+
+
+
+
-
-
\ No newline at end of file
+
diff --git a/fcs/samples/InteractiveService/paket.references b/fcs/samples/InteractiveService/paket.references
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/fcs/samples/Tokenizer/Tokenizer.fsproj b/fcs/samples/Tokenizer/Tokenizer.fsproj
index a58aaf190f4..7aa42497261 100644
--- a/fcs/samples/Tokenizer/Tokenizer.fsproj
+++ b/fcs/samples/Tokenizer/Tokenizer.fsproj
@@ -1,71 +1,22 @@
-
-
-
+
+
+
- $(MSBuildProjectDirectory)\..\..\..\src
-
-
- Debug
- AnyCPU
- $(MSBuildProjectDirectory)\..\..\
- 2.0
- 92793069-816f-4f69-84ac-0966f8275e65
+ net46
+ true
Exe
- Tokenizer
- Tokenizer
- v4.5
- Tokenizer
- 4.4.0.0
-
- true
-
-
- true
- full
- false
- false
- bin\Debug\
- DEBUG;TRACE
- 3
- AnyCPU
- bin\Debug\Tokenizer.xml
- true
-
-
- pdbonly
- true
- true
- bin\Release\
- TRACE
- 3
- AnyCPU
- bin\Release\Tokenizer.xml
- true
+ false
-
-
-
- $(FSharpSourcesRoot)\..\packages\FSharp.Compiler.Tools.4.1.27\tools\FSharp.Core.dll
- true
-
-
-
-
-
-
-
- FSharp.Compiler.Service
- {2e4d67b4-522d-4cf7-97e4-ba940f0b18f3}
- True
-
+
+
-
- 11
-
-
-
\ No newline at end of file
+
+
+
+
+
diff --git a/fcs/samples/Tokenizer/paket.references b/fcs/samples/Tokenizer/paket.references
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/fcs/samples/UntypedTree/UntypedTree.fsproj b/fcs/samples/UntypedTree/UntypedTree.fsproj
index e8818931cdd..7aa42497261 100644
--- a/fcs/samples/UntypedTree/UntypedTree.fsproj
+++ b/fcs/samples/UntypedTree/UntypedTree.fsproj
@@ -1,71 +1,22 @@
-
-
-
+
+
+
- $(MSBuildProjectDirectory)\..\..\..\src
-
-
- Debug
- AnyCPU
- 2.0
- c816728d-bbea-472d-9f6c-e8913957a673
+ net46
+ true
Exe
- UntypedTree
- UntypedTree
- v4.5
- UntypedTree
- 4.4.0.0
-
- true
- $(MSBuildProjectDirectory)\..\..\
-
-
- true
- full
- false
- false
- bin\Debug\
- DEBUG;TRACE
- 3
- AnyCPU
- bin\Debug\UntypedTree.xml
- true
-
-
- pdbonly
- true
- true
- bin\Release\
- TRACE
- 3
- AnyCPU
- bin\Release\UntypedTree.xml
- true
+ false
-
-
-
- $(FSharpSourcesRoot)\..\packages\FSharp.Compiler.Tools.4.1.27\tools\FSharp.Core.dll
- true
-
-
-
-
-
-
-
- FSharp.Compiler.Service
- {2e4d67b4-522d-4cf7-97e4-ba940f0b18f3}
- True
-
+
+
-
- 11
-
-
-
\ No newline at end of file
+
+
+
+
+
diff --git a/fcs/samples/UntypedTree/UntypedTree.sln b/fcs/samples/UntypedTree/UntypedTree.sln
deleted file mode 100644
index a7b50130754..00000000000
--- a/fcs/samples/UntypedTree/UntypedTree.sln
+++ /dev/null
@@ -1,20 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2012
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "UntypedTree", "UntypedTree.fsproj", "{C816728D-BBEA-472D-9F6C-E8913957A673}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {C816728D-BBEA-472D-9F6C-E8913957A673}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C816728D-BBEA-472D-9F6C-E8913957A673}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C816728D-BBEA-472D-9F6C-E8913957A673}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C816728D-BBEA-472D-9F6C-E8913957A673}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/fcs/samples/UntypedTree/paket.references b/fcs/samples/UntypedTree/paket.references
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/fcs/tools.fsproj b/fcs/tools.fsproj
deleted file mode 100644
index 45aa251d767..00000000000
--- a/fcs/tools.fsproj
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
- Exe
- net45
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mono/appveyor.ps1 b/mono/appveyor.ps1
index b26a52d32f9..30445b98db0 100644
--- a/mono/appveyor.ps1
+++ b/mono/appveyor.ps1
@@ -1,6 +1,6 @@
# the version under development, update after a release
-$version = '4.1.28'
+$version = '4.1.31'
function isVersionTag($tag){
$v = New-Object Version
diff --git a/mono/build-mono.sh b/mono/build-mono.sh
index 28ba3622aa9..12e49fae468 100755
--- a/mono/build-mono.sh
+++ b/mono/build-mono.sh
@@ -1,24 +1,8 @@
#!/bin/sh
-# Perform any necessary setup prior to running builds
-# (e.g., restoring NuGet packages).
-echo "prepare-mono.sh..."
-
-./mono/prepare-mono.sh
-
-rc=$?;
-if [ $rc -ne 0 ]; then
- echo "mono/prepare-mono script failed."
- exit $rc
-fi
-echo "done mono/prepare-mono.sh, building..."
-
-chmod +x mono/travis-autogen.sh
-
-# Generate the makefiles
# Bootstrap the compiler
# Install the compiler
-./mono/travis-autogen.sh && \
+./mono/prepare-mono.sh && \
make && \
sudo make install
diff --git a/mono/cibuild.sh b/mono/cibuild.sh
new file mode 100755
index 00000000000..e91b33e7839
--- /dev/null
+++ b/mono/cibuild.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+# note: expects to run from top directory
+./mono/latest-mono-stable.sh
+make Configuration=$@
+#sudo make install Configuration=$@
+#./mono/test-mono.sh
\ No newline at end of file
diff --git a/mono/config.make b/mono/config.make
new file mode 100644
index 00000000000..91351b8ef85
--- /dev/null
+++ b/mono/config.make
@@ -0,0 +1,281 @@
+DEFAULT: all
+
+.PHONY: install-sdk-lib
+
+monocmd = $(shell which mono)
+monocmddir = $(dir $(monocmd))
+prefix = $(shell (cd $(monocmddir)/..; pwd))
+thisdir = $(dir $(realpath $(lastword $(MAKEFILE_LIST))))
+topdir = $(thisdir)../
+builddir = $(topdir)
+libdir = $(prefix)/lib/
+bindir = $(prefix)/bin/
+monobindir = $(bindir)
+monolibdir = $(libdir)
+monodir = $(monolibdir)mono
+
+debugvars:
+ @echo prefix=$(prefix)
+ @echo topdir=$(topdir)
+ @echo monodir=$(monodir)
+ @echo monolibdir=$(monolibdir)
+ @echo monobindir=$(monobindir)
+
+TargetDotnetProfile = net40
+Configuration = Release
+DISTVERSION = 201011
+
+# Version number mappings for various versions of FSharp.Core
+
+
+ifeq (x-$(TargetDotnetProfile)-,x-net40-)
+
+ifeq (x-$(FSharpCoreBackVersion)-,x--)
+VERSION = 4.4.1.0
+PKGINSTALL = yes
+REFASSEMPATH = .NETFramework/v4.0
+outsuffix = $(TargetDotnetProfile)
+endif
+
+ifeq (x-$(FSharpCoreBackVersion)-,x-3.0-)
+VERSION = 4.3.0.0
+REFASSEMPATH = .NETFramework/v4.0
+outsuffix = fsharp30/$(TargetDotnetProfile)
+endif
+
+ifeq (x-$(FSharpCoreBackVersion)-,x-3.1-)
+VERSION = 4.3.1.0
+REFASSEMPATH = .NETFramework/v4.0
+outsuffix = fsharp31/$(TargetDotnetProfile)
+endif
+
+ifeq (x-$(FSharpCoreBackVersion)-,x-4.0-)
+VERSION = 4.4.0.0
+REFASSEMPATH = .NETFramework/v4.0
+outsuffix = fsharp40/$(TargetDotnetProfile)
+endif
+
+endif
+
+ifeq (x-$(TargetDotnetProfile)-,x-monoandroid10+monotouch10+xamarinios10-)
+VERSION = 3.98.41.0
+outsuffix = $(TargetDotnetProfile)
+endif
+
+
+ifeq (x-$(TargetDotnetProfile)-,x-xamarinmacmobile-)
+VERSION = 3.99.41.0
+outsuffix = $(TargetDotnetProfile)
+endif
+
+ifeq (x-$(TargetDotnetProfile)-,x-portable47-)
+VERSION = 3.47.41.0
+PCLPATH = .NETPortable
+outsuffix = $(TargetDotnetProfile)
+endif
+
+ifeq (x-$(TargetDotnetProfile)-,x-portable7-)
+VERSION = 3.7.41.0
+PCLPATH = .NETCore
+outsuffix = $(TargetDotnetProfile)
+endif
+
+ifeq (x-$(TargetDotnetProfile)-,x-portable78-)
+VERSION = 3.78.41.0
+PCLPATH = .NETCore
+outsuffix = $(TargetDotnetProfile)
+endif
+
+ifeq (x-$(TargetDotnetProfile)-,x-portable259-)
+VERSION = 3.259.41.0
+PCLPATH = .NETCore
+outsuffix = $(TargetDotnetProfile)
+endif
+
+
+FSCORE_DELAY_SIGN_TOKEN = b03f5f7f11d50a3a
+SIGN_TOKEN = f536804aa0eb945b
+
+tmpdir = .libs/$(Configuration)/
+outdir = $(builddir)$(Configuration)/$(outsuffix)/bin/
+
+INSTALL = $(SHELL) $(topdir)/mono/install-sh
+INSTALL_BIN = $(INSTALL) -c -m 755
+INSTALL_LIB = $(INSTALL_BIN)
+
+MSBUILD = msbuild
+
+EXTRA_DIST = configure
+NO_DIST = .gitignore lib/debug lib/proto lib/release
+
+
+# Install .optdata/.sigdata if they exist (they go alongside FSharp.Core)
+# Install the .Targets file. The XBuild targets file gets installed into the place(s) expected for standard F# project
+# files. For F# 2.0 project files this is
+# /usr/lib/mono/Microsoft F#/v4.0/Microsoft.FSharp.Targets
+# For F# 3.0 project files this is
+# /usr/lib/mono/Microsoft SDKs/F#/3.0/Framework/v4.0/Microsoft.FSharp.Targets
+# For F# 3.1 project files this is
+# /usr/lib/mono/xbuild/Microsoft/VisualStudio/v12.0/FSharp/Microsoft.FSharp.Targets
+# For F# 4.0 project files this is
+# /usr/lib/mono/xbuild/Microsoft/VisualStudio/v14.0/FSharp/Microsoft.FSharp.Targets
+# For F# 4.1 project files this is
+# /usr/lib/mono/xbuild/Microsoft/VisualStudio/v15.0/FSharp/Microsoft.FSharp.Targets
+#
+# Here 12.0/14.0/15.0 is 'VisualStudioVersion'. xbuild should set this to 11.0/12.0/14.0/15.0, copying MSBuild.
+#
+# We put the F# targets and link the SDK DLLs for all these locations
+#
+# We put a forwarding targets file into all three locations. We also put one in
+# .../lib/mono/xbuild/Microsoft/VisualStudio/v/FSharp/Microsoft.FSharp.Targets
+# since this is the location if 'xbuild' fails to set VisualStudioVersion.
+#
+install-sdk-lib:
+ @echo "Installing $(ASSEMBLY)"
+ @mkdir -p $(DESTDIR)$(monodir)/fsharp
+ @if test "x$(DELAY_SIGN)" = "x1"; then \
+ echo "Signing $(outdir)$(ASSEMBLY) with Mono key"; \
+ $(monobindir)sn -q -R $(outdir)$(ASSEMBLY) $(topdir)mono/mono.snk; \
+ fi
+ @if test x-$(NAME) = x-FSharp.Compiler.Private; then \
+ echo "Installing extra dependency System.Collections.Immutable.dll to $(DESTDIR)$(monodir)/fsharp/"; \
+ $(INSTALL_LIB) $(outdir)System.Collections.Immutable.dll $(DESTDIR)$(monodir)/fsharp/; \
+ echo "Installing extra dependency System.Reflection.Metadata.dll to $(DESTDIR)$(monodir)/fsharp/"; \
+ $(INSTALL_LIB) $(outdir)System.Reflection.Metadata.dll $(DESTDIR)$(monodir)/fsharp/; \
+ fi
+ @if test x-$(NAME) = x-FSharp.Build; then \
+ echo "Installing Microsoft.FSharp.Targets and Microsoft.Portable.FSharp.Targets into install locations matching Visual Studio"; \
+ echo " --> $(DESTDIR)$(monodir)/fsharp/"; \
+ echo " --> $(DESTDIR)$(monodir)/Microsoft\ F#/v4.0/"; \
+ echo " --> $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/3.0/Framework/v4.0/"; \
+ echo " --> $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/3.1/Framework/v4.0/"; \
+ echo " --> $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/4.0/Framework/v4.0/"; \
+ echo " --> $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/4.1/Framework/v4.0/"; \
+ echo " --> $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v/FSharp/"; \
+ echo " --> $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v11.0/FSharp/"; \
+ echo " --> $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/"; \
+ echo " --> $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v14.0/FSharp/"; \
+ echo " --> $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v15.0/FSharp/"; \
+ \
+ mkdir -p $(tmpdir); \
+ mkdir -p $(DESTDIR)$(monodir)/Microsoft\ F#/v4.0/; \
+ mkdir -p $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/3.0/Framework/v4.0/; \
+ mkdir -p $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/3.1/Framework/v4.0/; \
+ mkdir -p $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/4.0/Framework/v4.0/; \
+ mkdir -p $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/4.1/Framework/v4.0/; \
+ mkdir -p $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v/FSharp/; \
+ mkdir -p $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v11.0/FSharp/; \
+ mkdir -p $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \
+ mkdir -p $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v14.0/FSharp/; \
+ mkdir -p $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v15.0/FSharp/; \
+ \
+ $(INSTALL_LIB) $(outdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/fsharp/; \
+ $(INSTALL_LIB) $(outdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/fsharp/; \
+ \
+ echo '' > $(tmpdir)Microsoft.FSharp.Targets; \
+ echo ' ' >> $(tmpdir)Microsoft.FSharp.Targets; \
+ echo '' >> $(tmpdir)Microsoft.FSharp.Targets; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ F#/v4.0/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/3.0/Framework/v4.0/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/3.1/Framework/v4.0/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/4.0/Framework/v4.0/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/4.1/Framework/v4.0/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v/FSharp/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v11.0/FSharp/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v14.0/FSharp/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v15.0/FSharp/; \
+ \
+ echo '' > $(tmpdir)Microsoft.Portable.FSharp.Targets; \
+ echo ' ' >> $(tmpdir)Microsoft.Portable.FSharp.Targets; \
+ echo '' >> $(tmpdir)Microsoft.Portable.FSharp.Targets; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ F#/v4.0/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/3.0/Framework/v4.0/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/3.1/Framework/v4.0/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/4.0/Framework/v4.0/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/4.1/Framework/v4.0/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v/FSharp/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v11.0/FSharp/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v14.0/FSharp/; \
+ $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v15.0/FSharp/; \
+ \
+ $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.props $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v/FSharp/; \
+ $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.props $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v11.0/FSharp/; \
+ $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.props $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \
+ $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.props $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v14.0/FSharp/; \
+ $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.props $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v15.0/FSharp/; \
+ \
+ $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v/FSharp/; \
+ $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v11.0/FSharp/; \
+ $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \
+ $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v14.0/FSharp/; \
+ $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v15.0/FSharp/; \
+ \
+ $(INSTALL_LIB) $(outdir)Microsoft.FSharp.Overrides.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v/FSharp/; \
+ $(INSTALL_LIB) $(outdir)Microsoft.FSharp.Overrides.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v11.0/FSharp/; \
+ $(INSTALL_LIB) $(outdir)Microsoft.FSharp.Overrides.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \
+ $(INSTALL_LIB) $(outdir)Microsoft.FSharp.Overrides.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v14.0/FSharp/; \
+ $(INSTALL_LIB) $(outdir)Microsoft.FSharp.Overrides.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v15.0/FSharp/; \
+ fi
+ @if test x-$(outsuffix) = x-net40; then \
+ if test -e $(outdir)$(NAME).dll; then \
+ echo "Installing $(outdir)$(NAME).dll to $(DESTDIR)$(monodir)/fsharp/"; \
+ mkdir -p $(DESTDIR)$(monodir)/fsharp/; \
+ $(INSTALL_LIB) $(outdir)$(NAME).dll $(DESTDIR)$(monodir)/fsharp/; \
+ fi; \
+ if test -e $(outdir)$(NAME).dll.config; then \
+ echo "Installing $(outdir)$(NAME).dll to $(DESTDIR)$(monodir)/fsharp/"; \
+ mkdir -p $(DESTDIR)$(monodir)/fsharp/; \
+ $(INSTALL_LIB) $(outdir)$(NAME).dll.config $(DESTDIR)$(monodir)/fsharp/; \
+ fi; \
+ if test -e $(outdir)$(NAME).xml; then \
+ echo "Installing $(outdir)$(NAME).xml into $(DESTDIR)$(monodir)/fsharp/"; \
+ mkdir -p $(DESTDIR)$(monodir)/fsharp/; \
+ $(INSTALL_LIB) $(outdir)$(NAME).xml $(DESTDIR)$(monodir)/fsharp/; \
+ fi; \
+ if test -e $(outdir)$(NAME).sigdata; then \
+ echo "Installing $(outdir)$(NAME).sigdata into $(DESTDIR)$(monodir)/fsharp/"; \
+ mkdir -p $(DESTDIR)$(monodir)/fsharp/; \
+ $(INSTALL_LIB) $(outdir)$(NAME).sigdata $(DESTDIR)$(monodir)/fsharp/; \
+ fi; \
+ if test -e $(outdir)$(NAME).optdata; then \
+ echo "Installing $(outdir)$(NAME).optdata into $(DESTDIR)$(monodir)/fsharp/"; \
+ mkdir -p $(DESTDIR)$(monodir)/fsharp/; \
+ $(INSTALL_LIB) $(outdir)$(NAME).optdata $(DESTDIR)$(monodir)/fsharp/; \
+ fi; \
+ fi
+ @if test x-$(NAME) = x-FSharp.Core && test x-$(REFASSEMPATH) != x-; then \
+ echo "Installing FSharp.Core $(VERSION) reference assembly into api location"; \
+ echo " --> $(DESTDIR)$(monodir)/fsharp/api/$(REFASSEMPATH)/$(VERSION)"; \
+ mkdir -p $(DESTDIR)$(monodir)/fsharp/api/$(REFASSEMPATH)/$(VERSION); \
+ $(INSTALL_LIB) $(outdir)$(NAME).xml $(DESTDIR)$(monodir)/fsharp/api/$(REFASSEMPATH)/$(VERSION)/; \
+ $(INSTALL_LIB) $(outdir)$(NAME).sigdata $(DESTDIR)$(monodir)/fsharp/api/$(REFASSEMPATH)/$(VERSION)/; \
+ $(INSTALL_LIB) $(outdir)$(NAME).optdata $(DESTDIR)$(monodir)/fsharp/api/$(REFASSEMPATH)/$(VERSION)/; \
+ $(INSTALL_LIB) $(outdir)$(NAME).dll $(DESTDIR)$(monodir)/fsharp/api/$(REFASSEMPATH)/$(VERSION)/; \
+ fi
+ @if test x-$(NAME) = x-FSharp.Core && test x-$(PCLPATH) != x-; then \
+ echo "Installing FSharp.Core $(VERSION) reference assembly into api location"; \
+ echo " --> $(DESTDIR)$(monodir)/fsharp/$(PCLPATH)/$(VERSION)"; \
+ mkdir -p $(DESTDIR)$(monodir)/fsharp/api/$(PCLPATH)/$(VERSION); \
+ $(INSTALL_LIB) $(outdir)$(NAME).xml $(DESTDIR)$(monodir)/fsharp/api/$(PCLPATH)/$(VERSION)/; \
+ $(INSTALL_LIB) $(outdir)$(NAME).sigdata $(DESTDIR)$(monodir)/fsharp/api/$(PCLPATH)/$(VERSION)/; \
+ $(INSTALL_LIB) $(outdir)$(NAME).optdata $(DESTDIR)$(monodir)/fsharp/api/$(PCLPATH)/$(VERSION)/; \
+ $(INSTALL_LIB) $(outdir)$(NAME).dll $(DESTDIR)$(monodir)/fsharp/api/$(PCLPATH)/$(VERSION)/; \
+ fi
+
+
+
+# The binaries fsc.exe and fsi.exe only get installed for Mono 4.5 profile
+# This also installs 'fsharpc' and 'fsharpi' and 'fsharpiAnyCpu'
+install-bin:
+ chmod +x $(outdir)$(ASSEMBLY)
+ sed -e 's,[@]DIR[@],$(monodir)/fsharp,g' -e 's,[@]TOOL[@],$(ASSEMBLY),g' -e 's,[@]MONOBINDIR[@],$(monobindir),g' < $(topdir)mono/launcher > $(outdir)$(subst fs,fsharp,$(NAME))
+ chmod +x $(outdir)$(subst fs,fsharp,$(NAME))
+ @mkdir -p $(DESTDIR)$(monodir)/fsharp
+ @mkdir -p $(DESTDIR)$(bindir)
+ $(INSTALL_BIN) $(outdir)$(ASSEMBLY) $(DESTDIR)$(monodir)/fsharp
+ $(INSTALL_BIN) $(outdir)$(ASSEMBLY).config $(DESTDIR)$(monodir)/fsharp
+ $(INSTALL_BIN) $(outdir)$(subst fs,fsharp,$(NAME)) $(DESTDIR)$(bindir)
+
+
diff --git a/mono/config.make.in b/mono/config.make.in
deleted file mode 100644
index 3106ab99fd4..00000000000
--- a/mono/config.make.in
+++ /dev/null
@@ -1,267 +0,0 @@
-DEFAULT: all
-
-.PHONY: install-sdk-lib
-
-prefix := @prefix@
-topdir := @abs_top_srcdir@/
-builddir := @abs_top_builddir@/
-libdir := ${prefix}/lib/
-bindir := ${prefix}/bin/
-monobindir := @MONOBINDIR@
-monolibdir := @MONOLIBDIR@
-
-monodir := ${libdir}mono
-
-TargetDotnetProfile = net40
-CONFIG = release
-Configuration = Release
-DISTVERSION = 201011
-
-# Version number mappings for various versions of FSharp.Core
-
-
-ifeq (x-$(TargetDotnetProfile)-,x-net40-)
-
-ifeq (x-$(FSharpCoreBackVersion)-,x--)
-VERSION = 4.4.1.0
-PKGINSTALL = yes
-REFASSEMPATH = .NETFramework/v4.0
-outsuffix = $(TargetDotnetProfile)
-endif
-
-ifeq (x-$(FSharpCoreBackVersion)-,x-3.0-)
-VERSION = 4.3.0.0
-REFASSEMPATH = .NETFramework/v4.0
-outsuffix = fsharp30/$(TargetDotnetProfile)
-endif
-
-ifeq (x-$(FSharpCoreBackVersion)-,x-3.1-)
-VERSION = 4.3.1.0
-REFASSEMPATH = .NETFramework/v4.0
-outsuffix = fsharp31/$(TargetDotnetProfile)
-endif
-
-ifeq (x-$(FSharpCoreBackVersion)-,x-4.0-)
-VERSION = 4.4.0.0
-REFASSEMPATH = .NETFramework/v4.0
-outsuffix = fsharp40/$(TargetDotnetProfile)
-endif
-
-endif
-
-ifeq (x-$(TargetDotnetProfile)-,x-monoandroid10+monotouch10+xamarinios10-)
-VERSION = 3.98.41.0
-outsuffix = $(TargetDotnetProfile)
-endif
-
-
-ifeq (x-$(TargetDotnetProfile)-,x-xamarinmacmobile-)
-VERSION = 3.99.41.0
-outsuffix = $(TargetDotnetProfile)
-endif
-
-ifeq (x-$(TargetDotnetProfile)-,x-portable47-)
-VERSION = 3.47.41.0
-PCLPATH = .NETPortable
-outsuffix = $(TargetDotnetProfile)
-endif
-
-ifeq (x-$(TargetDotnetProfile)-,x-portable7-)
-VERSION = 3.7.41.0
-PCLPATH = .NETCore
-outsuffix = $(TargetDotnetProfile)
-endif
-
-ifeq (x-$(TargetDotnetProfile)-,x-portable78-)
-VERSION = 3.78.41.0
-PCLPATH = .NETCore
-outsuffix = $(TargetDotnetProfile)
-endif
-
-ifeq (x-$(TargetDotnetProfile)-,x-portable259-)
-VERSION = 3.259.41.0
-PCLPATH = .NETCore
-outsuffix = $(TargetDotnetProfile)
-endif
-
-
-FSCORE_DELAY_SIGN_TOKEN = b03f5f7f11d50a3a
-SIGN_TOKEN = f536804aa0eb945b
-
-tmpdir = .libs/$(Configuration)/
-outdir = $(builddir)$(Configuration)/$(outsuffix)/bin/
-
-INSTALL = $(SHELL) $(topdir)/mono/install-sh
-INSTALL_BIN = $(INSTALL) -c -m 755
-INSTALL_LIB = $(INSTALL_BIN)
-
-MSBUILD = @MSBUILD@
-
-EXTRA_DIST = configure
-NO_DIST = .gitignore lib/debug lib/proto lib/release
-
-
-# Install .optdata/.sigdata if they exist (they go alongside FSharp.Core)
-# Install the .Targets file. The XBuild targets file gets installed into the place(s) expected for standard F# project
-# files. For F# 2.0 project files this is
-# /usr/lib/mono/Microsoft F#/v4.0/Microsoft.FSharp.Targets
-# For F# 3.0 project files this is
-# /usr/lib/mono/Microsoft SDKs/F#/3.0/Framework/v4.0/Microsoft.FSharp.Targets
-# For F# 3.1 project files this is
-# /usr/lib/mono/xbuild/Microsoft/VisualStudio/v12.0/FSharp/Microsoft.FSharp.Targets
-# For F# 4.0 project files this is
-# /usr/lib/mono/xbuild/Microsoft/VisualStudio/v14.0/FSharp/Microsoft.FSharp.Targets
-# For F# 4.1 project files this is
-# /usr/lib/mono/xbuild/Microsoft/VisualStudio/v15.0/FSharp/Microsoft.FSharp.Targets
-#
-# Here 12.0/14.0/15.0 is 'VisualStudioVersion'. xbuild should set this to 11.0/12.0/14.0/15.0, copying MSBuild.
-#
-# We put the F# targets and link the SDK DLLs for all these locations
-#
-# We put a forwarding targets file into all three locations. We also put one in
-# .../lib/mono/xbuild/Microsoft/VisualStudio/v/FSharp/Microsoft.FSharp.Targets
-# since this is the location if 'xbuild' fails to set VisualStudioVersion.
-#
-install-sdk-lib:
- @echo "Installing $(ASSEMBLY)"
- @mkdir -p $(DESTDIR)$(monodir)/fsharp
- @if test "x$(DELAY_SIGN)" = "x1"; then \
- echo "Signing $(outdir)$(ASSEMBLY) with Mono key"; \
- $(monobindir)/sn -q -R $(outdir)$(ASSEMBLY) $(topdir)mono/mono.snk; \
- fi
- @if test x-$(NAME) = x-FSharp.Compiler.Private; then \
- echo "Installing extra dependency System.Collections.Immutable.dll to $(DESTDIR)$(monodir)/fsharp/"; \
- $(INSTALL_LIB) $(outdir)System.Collections.Immutable.dll $(DESTDIR)$(monodir)/fsharp/; \
- echo "Installing extra dependency System.Reflection.Metadata.dll to $(DESTDIR)$(monodir)/fsharp/"; \
- $(INSTALL_LIB) $(outdir)System.Reflection.Metadata.dll $(DESTDIR)$(monodir)/fsharp/; \
- fi
- @if test x-$(NAME) = x-FSharp.Build; then \
- echo "Installing Microsoft.FSharp.Targets and Microsoft.Portable.FSharp.Targets into install locations matching Visual Studio"; \
- echo " --> $(DESTDIR)$(monodir)/fsharp/"; \
- echo " --> $(DESTDIR)$(monodir)/Microsoft\ F#/v4.0/"; \
- echo " --> $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/3.0/Framework/v4.0/"; \
- echo " --> $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/3.1/Framework/v4.0/"; \
- echo " --> $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/4.0/Framework/v4.0/"; \
- echo " --> $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/4.1/Framework/v4.0/"; \
- echo " --> $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v/FSharp/"; \
- echo " --> $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v11.0/FSharp/"; \
- echo " --> $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/"; \
- echo " --> $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v14.0/FSharp/"; \
- echo " --> $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v15.0/FSharp/"; \
- \
- mkdir -p $(tmpdir); \
- mkdir -p $(DESTDIR)$(monodir)/Microsoft\ F#/v4.0/; \
- mkdir -p $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/3.0/Framework/v4.0/; \
- mkdir -p $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/3.1/Framework/v4.0/; \
- mkdir -p $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/4.0/Framework/v4.0/; \
- mkdir -p $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/4.1/Framework/v4.0/; \
- mkdir -p $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v/FSharp/; \
- mkdir -p $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v11.0/FSharp/; \
- mkdir -p $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \
- mkdir -p $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v14.0/FSharp/; \
- mkdir -p $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v15.0/FSharp/; \
- \
- $(INSTALL_LIB) $(outdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/fsharp/; \
- $(INSTALL_LIB) $(outdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/fsharp/; \
- \
- echo '' > $(tmpdir)Microsoft.FSharp.Targets; \
- echo ' ' >> $(tmpdir)Microsoft.FSharp.Targets; \
- echo '' >> $(tmpdir)Microsoft.FSharp.Targets; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ F#/v4.0/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/3.0/Framework/v4.0/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/3.1/Framework/v4.0/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/4.0/Framework/v4.0/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/4.1/Framework/v4.0/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v/FSharp/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v11.0/FSharp/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v14.0/FSharp/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v15.0/FSharp/; \
- \
- echo '' > $(tmpdir)Microsoft.Portable.FSharp.Targets; \
- echo ' ' >> $(tmpdir)Microsoft.Portable.FSharp.Targets; \
- echo '' >> $(tmpdir)Microsoft.Portable.FSharp.Targets; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ F#/v4.0/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/3.0/Framework/v4.0/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/3.1/Framework/v4.0/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/4.0/Framework/v4.0/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#/4.1/Framework/v4.0/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v/FSharp/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v11.0/FSharp/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v14.0/FSharp/; \
- $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v15.0/FSharp/; \
- \
- $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.props $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v/FSharp/; \
- $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.props $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v11.0/FSharp/; \
- $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.props $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \
- $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.props $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v14.0/FSharp/; \
- $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.props $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v15.0/FSharp/; \
- \
- $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v/FSharp/; \
- $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v11.0/FSharp/; \
- $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \
- $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v14.0/FSharp/; \
- $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v15.0/FSharp/; \
- fi
- @if test x-$(outsuffix) = x-net40; then \
- if test -e $(outdir)$(NAME).dll; then \
- echo "Installing $(outdir)$(NAME).dll to $(DESTDIR)$(monodir)/fsharp/"; \
- mkdir -p $(DESTDIR)$(monodir)/fsharp/; \
- $(INSTALL_LIB) $(outdir)$(NAME).dll $(DESTDIR)$(monodir)/fsharp/; \
- fi; \
- if test -e $(outdir)$(NAME).dll.config; then \
- echo "Installing $(outdir)$(NAME).dll to $(DESTDIR)$(monodir)/fsharp/"; \
- mkdir -p $(DESTDIR)$(monodir)/fsharp/; \
- $(INSTALL_LIB) $(outdir)$(NAME).dll.config $(DESTDIR)$(monodir)/fsharp/; \
- fi; \
- if test -e $(outdir)$(NAME).xml; then \
- echo "Installing $(outdir)$(NAME).xml into $(DESTDIR)$(monodir)/fsharp/"; \
- mkdir -p $(DESTDIR)$(monodir)/fsharp/; \
- $(INSTALL_LIB) $(outdir)$(NAME).xml $(DESTDIR)$(monodir)/fsharp/; \
- fi; \
- if test -e $(outdir)$(NAME).sigdata; then \
- echo "Installing $(outdir)$(NAME).sigdata into $(DESTDIR)$(monodir)/fsharp/"; \
- mkdir -p $(DESTDIR)$(monodir)/fsharp/; \
- $(INSTALL_LIB) $(outdir)$(NAME).sigdata $(DESTDIR)$(monodir)/fsharp/; \
- fi; \
- if test -e $(outdir)$(NAME).optdata; then \
- echo "Installing $(outdir)$(NAME).optdata into $(DESTDIR)$(monodir)/fsharp/"; \
- mkdir -p $(DESTDIR)$(monodir)/fsharp/; \
- $(INSTALL_LIB) $(outdir)$(NAME).optdata $(DESTDIR)$(monodir)/fsharp/; \
- fi; \
- fi
- @if test x-$(NAME) = x-FSharp.Core && test x-$(REFASSEMPATH) != x-; then \
- echo "Installing FSharp.Core $(VERSION) reference assembly into api location"; \
- echo " --> $(DESTDIR)$(monodir)/fsharp/api/$(REFASSEMPATH)/$(VERSION)"; \
- mkdir -p $(DESTDIR)$(monodir)/fsharp/api/$(REFASSEMPATH)/$(VERSION); \
- $(INSTALL_LIB) $(outdir)$(NAME).xml $(DESTDIR)$(monodir)/fsharp/api/$(REFASSEMPATH)/$(VERSION)/; \
- $(INSTALL_LIB) $(outdir)$(NAME).sigdata $(DESTDIR)$(monodir)/fsharp/api/$(REFASSEMPATH)/$(VERSION)/; \
- $(INSTALL_LIB) $(outdir)$(NAME).optdata $(DESTDIR)$(monodir)/fsharp/api/$(REFASSEMPATH)/$(VERSION)/; \
- $(INSTALL_LIB) $(outdir)$(NAME).dll $(DESTDIR)$(monodir)/fsharp/api/$(REFASSEMPATH)/$(VERSION)/; \
- fi
- @if test x-$(NAME) = x-FSharp.Core && test x-$(PCLPATH) != x-; then \
- echo "Installing FSharp.Core $(VERSION) reference assembly into api location"; \
- echo " --> $(DESTDIR)$(monodir)/fsharp/$(PCLPATH)/$(VERSION)"; \
- mkdir -p $(DESTDIR)$(monodir)/fsharp/api/$(PCLPATH)/$(VERSION); \
- $(INSTALL_LIB) $(outdir)$(NAME).xml $(DESTDIR)$(monodir)/fsharp/api/$(PCLPATH)/$(VERSION)/; \
- $(INSTALL_LIB) $(outdir)$(NAME).sigdata $(DESTDIR)$(monodir)/fsharp/api/$(PCLPATH)/$(VERSION)/; \
- $(INSTALL_LIB) $(outdir)$(NAME).optdata $(DESTDIR)$(monodir)/fsharp/api/$(PCLPATH)/$(VERSION)/; \
- $(INSTALL_LIB) $(outdir)$(NAME).dll $(DESTDIR)$(monodir)/fsharp/api/$(PCLPATH)/$(VERSION)/; \
- fi
-
-
-
-# The binaries fsc.exe and fsi.exe only get installed for Mono 4.5 profile
-# This also installs 'fsharpc' and 'fsharpi' and 'fsharpiAnyCpu'
-install-bin:
- chmod +x $(outdir)$(ASSEMBLY)
- sed -e 's,[@]DIR[@],$(monodir)/fsharp,g' -e 's,[@]TOOL[@],$(ASSEMBLY),g' -e 's,[@]MONOBINDIR[@],$(monobindir),g' < $(topdir)mono/launcher > $(outdir)$(subst fs,fsharp,$(NAME))
- chmod +x $(outdir)$(subst fs,fsharp,$(NAME))
- @mkdir -p $(DESTDIR)$(monodir)/fsharp
- @mkdir -p $(DESTDIR)$(bindir)
- $(INSTALL_BIN) $(outdir)$(ASSEMBLY) $(DESTDIR)$(monodir)/fsharp
- $(INSTALL_BIN) $(outdir)$(ASSEMBLY).config $(DESTDIR)$(monodir)/fsharp
- $(INSTALL_BIN) $(outdir)$(subst fs,fsharp,$(NAME)) $(DESTDIR)$(bindir)
-
-
diff --git a/mono/latest-mono-stable.sh b/mono/latest-mono-stable.sh
new file mode 100755
index 00000000000..045b80f8377
--- /dev/null
+++ b/mono/latest-mono-stable.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+# suitable for Ubuntu 16.04 - get latest Mono stable
+mono --version
+sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
+echo "deb http://download.mono-project.com/repo/ubuntu stable-xenial main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
+sudo apt-get update
+ps -A | grep apt
+#sudo rm /var/lib/dpkg/lock
+#sudo dpkg --configure -a
+sudo apt-get -my install mono-devel
+mono --version
diff --git a/mono/launcher b/mono/launcher
new file mode 100644
index 00000000000..e61b7bba19d
--- /dev/null
+++ b/mono/launcher
@@ -0,0 +1,19 @@
+#!/bin/sh
+EXEC="exec "
+
+if test x"$1" = x--debug; then
+ DEBUG=--debug
+ shift
+fi
+
+if test x"$1" = x--gdb; then
+ shift
+ EXEC="gdb --eval-command=run --args "
+fi
+
+if test x"$1" = x--valgrind; then
+ shift
+ EXEC="valgrind $VALGRIND_OPTIONS"
+fi
+
+$EXEC @MONOBINDIR@/mono $DEBUG $MONO_OPTIONS @DIR@/@TOOL@ --exename:$(basename "$0") "$@"
diff --git a/mono/launcher.in b/mono/launcher.in
deleted file mode 100644
index 047101512e6..00000000000
--- a/mono/launcher.in
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-EXEC="exec "
-
-if test x"$1" = x--debug; then
- DEBUG=--debug
- shift
-fi
-
-if test x"$1" = x--gdb; then
- shift
- EXEC="gdb --eval-command=run --args "
-fi
-
-if test x"$1" = x--valgrind; then
- shift
- EXEC="valgrind $VALGRIND_OPTIONS"
-fi
-
-# Beware this line must match the regular expression " (\/.*)\/fsi\.exe" when @TOOL@ is fsi.exe.
-# That's because the FSharp MonoDevelop addin looks inside the text of this script to determine the installation
-# location of the default FSharp install in order to find the FSharp compiler binaries (see
-# fsharpbinding/MonoDevelop.FSharpBinding/Services/CompilerLocationUtils.fs). That's a pretty unfortunate
-# way of finding those binaries. And really should be changed.
-$EXEC @MONOBINDIR@/mono $DEBUG $MONO_OPTIONS @DIR@/@TOOL@ --exename:$(basename "$0") "$@"
diff --git a/mono/prepare-mono.sh b/mono/prepare-mono.sh
index 77f3e18b99d..229a7eb8492 100755
--- a/mono/prepare-mono.sh
+++ b/mono/prepare-mono.sh
@@ -26,41 +26,6 @@ if [ $OS = 'Linux' ]; then
sudo apt-get -y install mono-devel msbuild
fi
-# Check if SSL certificates have been imported into Mono's certificate store.
-# If certs haven't been installed, some/all of the Nuget packages will fail to restore.
-#if [ $('certmgr -list -c Trust | grep -c -F "X.509"') -le 1 ]; then
-# echo "No SSL certificates installed so unable to restore NuGet packages." >&2;
-# echo "Run 'mozroots --sync --import' to install certificates to Mono's certificate store." >&2;
-# exit 1
-#fi
-
-# Restore NuGet packages (needed for compiler bootstrap and tests).
-mono .nuget/NuGet.exe restore packages.config -PackagesDirectory packages -ConfigFile .nuget/NuGet.Config
-
-(if test x-$BUILD_CORECLR = x-1; then \
- sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list'; \
- sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893; \
- sudo apt-get update; \
- sudo apt-get -y install dotnet-dev-1.0.0-preview2-003131; \
- (cd tests/fsharp; mono ../../.nuget/NuGet.exe restore project.json -PackagesDirectory ../../packages -ConfigFile ../../.nuget/NuGet.Config); \
- ./init-tools.sh; \
- echo "------ start log"; \
- cat ./init-tools.log; echo "------ end log"; \
-fi)
-
-(if test x-$BUILD_PROTO_WITH_CORECLR_LKG = x-1; then \
- (cd lkg/fsc && dotnet restore --packages ../packages && dotnet publish project.json -o ../Tools/lkg -r ubuntu.14.04-x64); \
- (cd lkg/fsi && dotnet restore --packages ../packages && dotnet publish project.json -o ../Tools/lkg -r ubuntu.14.04-x64); \
-fi)
-
-#TODO: work out how to avoid the need for this
-echo "chmod u+x packages/FSharp.Compiler.Tools.4.1.27/tools/fsi.exe"
-echo "chmod u+x packages/FsLexYacc.7.0.6/build/fslex.exe"
-echo "chmod u+x packages/FsLexYacc.7.0.6/build/fsyacc.exe"
-chmod u+x packages/FSharp.Compiler.Tools.4.1.27/tools/fsi.exe
-chmod u+x packages/FsLexYacc.7.0.6/build/fslex.exe
-chmod u+x packages/FsLexYacc.7.0.6/build/fsyacc.exe
-
# The FSharp.Compiler.Tools package doesn't work correctly unless a proper install of F# has been done on the machine.
# OSX can skip this because the OSX Mono installer includes F#.
if [ $OS != 'OSX' ]; then
diff --git a/mono/test-mono.sh b/mono/test-mono.sh
index 8a9033c6710..bbcc8b8705e 100755
--- a/mono/test-mono.sh
+++ b/mono/test-mono.sh
@@ -1,9 +1,10 @@
# Run some project building tests
# Run some a variation of the tests/fsharp suite
-# Run the FSharp.Core.Unittests suite
+# Run the FSharp.Core.UnitTests suite
+# note: expects to run from top directory
(cd tests/projects; ./build.sh) &&
(cd tests/fsharp/core; ./run-opt.sh)
# This currently takes too long in travis
-#&& mono packages/NUnit.Console.3.0.0/tools/nunit3-console.exe --agents=1 Release/net40/bin/FSharp.Core.Unittests.dll
+#&& mono packages/NUnit.Console.3.0.0/tools/nunit3-console.exe --agents=1 Release/net40/bin/FSharp.Core.UnitTests.dll
diff --git a/mono/travis-autogen.sh b/mono/travis-autogen.sh
deleted file mode 100755
index 9c356b0862f..00000000000
--- a/mono/travis-autogen.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env sh
-
-echo "TRAVIS_OS_NAME=$TRAVIS_OS_NAME"
-if [ "$TRAVIS_OS_NAME" = "osx" ];
- then
- # Parse 'Mono JIT compiler version 5.0.1.1' to '5.0.1'
- monoVer=$(mono --version | head -n 1 | cut -d' ' -f 5 | cut -d'.' -f 1-3)
- prefix="/Library/Frameworks/Mono.framework/Versions/$monoVer";
- else
- prefix="/usr";
-fi
-
-echo "./autogen.sh --prefix=$prefix"
-./autogen.sh --prefix=$prefix
\ No newline at end of file
diff --git a/netci.groovy b/netci.groovy
deleted file mode 100644
index cc7956a9834..00000000000
--- a/netci.groovy
+++ /dev/null
@@ -1,125 +0,0 @@
-import jobs.generation.Utilities;
-import jobs.generation.JobReport;
-
-def project = GithubProject
-def branch = GithubBranchName
-
-def osList = ['Windows_NT', 'Ubuntu14.04'] //, 'OSX'], 'CentOS7.1'
-
-def static getBuildJobName(def configuration, def os) {
- return configuration.toLowerCase() + '_' + os.toLowerCase()
-}
-
-[true, false].each { isPullRequest ->
- osList.each { os ->
- def configurations = [];
- if (os == 'Windows_NT') {
- configurations = ['Debug', 'Release_ci_part1', 'Release_ci_part2', 'Release_ci_part3', 'Release_net40_no_vs', 'Release_fcs' ];
- }
- else
- {
- // Linux
- configurations = ['Release', 'Release_fcs' ];
- }
-
- configurations.each { configuration ->
-
- def lowerConfiguration = configuration.toLowerCase()
-
- // Calculate job name
- def jobName = getBuildJobName(configuration, os)
-
- def buildPath = '';
- if (os == 'Windows_NT') {
- buildPath = ".\\"
- }
- else {
- buildPath = "./"
- }
- def buildCommand = '';
- def buildFlavor= '';
-
- if (configuration == "Release_fcs" && branch != "dev15.5") {
- // Build and test FCS NuGet package
- buildPath = "./fcs/"
- buildFlavor = ""
- if (os == 'Windows_NT') {
- build_args = "TestAndNuget"
- }
- else {
- build_args = "Build"
- }
- }
- else if (configuration == "Debug") {
- buildFlavor = "debug"
- build_args = ""
- }
- else {
- buildFlavor = "release"
- if (configuration == "Release_ci_part1") {
- build_args = "ci_part1"
- }
- else if (configuration == "Release_ci_part2") {
- build_args = "ci_part2"
- }
- else if (configuration == "Release_ci_part3") {
- build_args = "ci_part3"
- }
- else if (configuration == "Release_net40_no_vs") {
- build_args = "net40"
- }
- else {
- build_args = "none"
- }
- }
-
- if (os == 'Windows_NT') {
- buildCommand = "${buildPath}build.cmd ${buildFlavor} ${build_args}"
- }
- else {
- buildCommand = "${buildPath}build.sh ${buildFlavor} ${build_args}"
- }
-
- def newJobName = Utilities.getFullJobName(project, jobName, isPullRequest)
- def newJob = job(newJobName) {
- steps {
- if (os == 'Windows_NT') {
- batchFile("""
-echo *** Build Visual F# Tools ***
-
-${buildPath}build.cmd ${buildFlavor} ${build_args}""")
- }
- else {
- // Shell
- shell(buildCommand)
- }
- }
- }
-
- // TODO: set to false after tests are fully enabled
- def skipIfNoTestFiles = true
-
- def affinity = configuration == 'Release_net40_no_vs' ? 'latest-or-auto' : (os == 'Windows_NT' ? 'latest-or-auto-dev15-0' : 'latest-or-auto')
- Utilities.setMachineAffinity(newJob, os, affinity)
- Utilities.standardJobSetup(newJob, project, isPullRequest, "*/${branch}")
-
- if (build_args != "none") {
- Utilities.addArchival(newJob, "tests/TestResults/*.*", "", skipIfNoTestFiles, false)
- if (configuration == "Release_fcs") {
- Utilities.addArchival(newJob, "Release/**")
- }
- else {
- Utilities.addArchival(newJob, "${buildFlavor}/**")
- }
- }
- if (isPullRequest) {
- Utilities.addGithubPRTriggerForBranch(newJob, branch, "${os} ${configuration} Build")
- }
- else {
- Utilities.addGithubPushTrigger(newJob)
- }
- }
- }
-}
-
-JobReport.Report.generateJobReport(out)
diff --git a/packages.config b/packages.config
index 955d8c12ad5..0f658bb45ee 100644
--- a/packages.config
+++ b/packages.config
@@ -12,27 +12,42 @@
-
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
-
+
+
+
+
+
+
@@ -45,7 +60,7 @@
-
+
@@ -68,4 +83,7 @@
+
+
+
diff --git a/release-notes.md b/release-notes.md
new file mode 100644
index 00000000000..2c29485b580
--- /dev/null
+++ b/release-notes.md
@@ -0,0 +1,404 @@
+ Copyright (c) Microsoft Corporation. All Rights Reserved.
+ See License.txt in the project root for license information.
+
+## About the release notes
+
+We deliver F# and F# components in Visual Studio and .NET Core releases. These can include bug fixes, new tooling features, new compiler features, performance improvements, infrastructure improvements, and new langauge versions. The most recent release of F# or any F# component will be at the top of this document.
+
+## Visual Studio 15.8.5
+
+* Fix (#5504) - Internal MSBuild Error when building non-.NET SDK projects with MSBuild parallelism
+* Fix (#5518) - Visual Studio-deployed components are not NGEN'd
+* Fix ([Devcom 322883](https://developercommunity.visualstudio.com/content/problem/322883/all-net-framework-f-projects-build-to-4500-regardl.html)) - FSharp.Core 4.5.0.0 binary is deployed to FSharp.Core 4.4.3.0 location
+
+All other closed issues for the VS 15.8 release can be found [here](https://github.com/Microsoft/visualfsharp/milestone/14).
+
+## F# 4.5
+
+We introduced the F# language version 4.5 with this release. This also corresponds with the new 4.5.x family of FSharp.Core (the F# core library). You can read the specs for each of these changes in the [F# RFC repository](https://github.com/fsharp/fslang-design). There are also many improvements to F# tools for Visual Studio with this release.
+
+### Releases
+
+* Visual Studio 2017 update 15.8
+* .NET Core SDK version 2.1.400 or higher
+
+### Language features
+
+* Support for `voidptr`
+* `NativePtr.ofVoidPtr` and `NativePtr.toVoidPtr` support
+* New types: `inref<'T>`, `outref<'T>` to represent read-only and write-only `byref`s
+* Support for `IsByRefLike` structs
+* Support for `IsReadOnly` structs
+* Full support for production and consumption of `byref` returns
+* Support for extension methods for `byref`/`inref`/`outref`
+* Support for `match!` in computation expressions
+* Relaxed upcast requirements for `yield` in sequence, list, and array expressions
+* Relaxed indentation requirements for list and array expressions
+* Enumeration cases emitted as public
+* Various bug fixes with `byref` programming
+
+### FSharp.Core features
+
+* Version aligned to 4.5.x for the NuGet package and 4.5.0.0 for the binary
+* Improved strack traces for `async { }` so that user code can now be seen
+* Support for `ValueOption<'T>`
+* Support for `TryGetValue` on Map
+
+### Compiler improvements
+
+Improvements to the F# compiler in addition to the previously-mentioned language features are in F# 4.5. These include:
+
+* Restored ability to inherit from `FSharpFunc`
+* Removed ~2.2% of all allocations in the F# compiler
+* F# reference normalization support for user control of transitive assembly references written to an output file
+* Respecting `WarningsNotAsErrors`
+* Error message improvement when branches of a pattern match do not return the same type
+* Respecting `#nowarn "2003"`
+* Other smaller performance improvements and many bug fixes
+
+### Tooling improvements
+
+Significant improvements in the F# tools, such as performance enhancements and some new editor features are included this release. As always, with a large number of contributions from the F# open source community. Here are the highlights:
+
+* We improved IntelliSense performance for .NET SDK-style projects of all forms, including those that use multi-targeting.
+* A community-driven effort to analyze and improve IntelliSense performance for very large files was contributed by [Vasily Kirichenko](https://github.com/vasily-kirichenko),[ Steffen Forkmann](https://github.com/forki), and [Gauthier Segay](https://github.com/smoothdeveloper). IntelliSense in very large files (10k+ lines of code) is roughly twice as fast now.
+* The warning for an outdated FSharp.Core (despite the package being installed) is no longer present in .NET SDK-style projects.
+* The description tooltip that displays XML documentation for a member after . in IntelliSense no longer times out after 10 seconds.
+* A bug where you could not set breakpoints in object constructor arguments has been fixed.
+* A bug where a renamed symbol would be duplicated when it is a generic parameter has been fixed.
+* Templates for .NET Framework (classic F# templates) now consume FSharp.Core from a NuGet package, to align with .NET SDK F# templates.
+* Automatic, transactional brace completion is now available for `()`, `[]`, `{}`, `[||]`, and `[<>]` brace pairs. We did this work in collaboration with [Gibran Rosa](https://github.com/gibranrosa).
+* You can now go to definition with **Ctrl + Click** on an F# symbol. The settings for this gesture are also respected in the **Tools > Options** window.
+* The IntelliSense performance UI has been modified to allow configuration of stale typecheck information for various IDE features. Explanations for each option are now present in tooltips for the settings.
+* Brace match highlighting now correctly highlights braces, completed in collaboration with [Vasily Kirichenko](https://github.com/vasily-kirichenko).
+* Go to definition now navigates correctly when a type is defined recursively, contributed by [Vasily Kirichenko](https://github.com/vasily-kirichenko).
+* A bug where an auto-imported namespace wasn't opened when the top of a file was empty has been fixed by [Vasily Kirichenko](https://github.com/vasily-kirichenko).
+* A bug where `printf` specifiers that contained dots were miscolored has been fixed by [Vasily Kirichenko](https://github.com/vasily-kirichenko).
+* A bug where all opens were considered unused inside of a recursive module has been fixed by [Vasily Kirichenko](https://github.com/vasily-kirichenko).
+* Autocompletion for attributes now only suggests options that are actually attributes, contributed by [Vasily Kirichenko](https://github.com/vasily-kirichenko).
+* Signature Help tooltips are now generated for Type Provider static parameters at the constructor call site, contributed by[Vasily Kirichenko](https://github.com/vasily-kirichenko).
+* A bug where value types used as units of measure were colored as reference types has been fixed by [Vasily Kirichenko](https://github.com/vasily-kirichenko).
+* A bug where semantic colorization could disappear for some files while scrolling has been fixed by [Vasily Kirichenko](https://github.com/vasily-kirichenko).
+There is now an experimental CodeLens implementation, contributed by [Victor Peter Rouven Müller](https://github.com/realvictorprm). You can turn it on in **Options > Text Editor > F# > Code Lens**.
+* A bug where the F# compiler service would incorrectly elide the module names in XML documentation has been fixed by [Sebastian Urban](https://github.com/surban).
+* Code that uses `Dictionary` with `ContainsKey` and subsequent `Item` calls has been changed to use `TryGetValue`, by [Eugene Auduchinok](https://github.com/auduchinok).
+* [Jakob Majoka](https://github.com/majocha) also contributed in the process of consuming a different API for Tooltips.
+
+### Infrastructure, Packaging, and Open Source Improvements
+
+We made the following enhancements to infrastructure, packaging, and our open source contribution experience:
+
+* The F# compiler distributed with Visual Studio no longer installs as a singleton in the F# Compiler SDK location. It is now fully side-by-side with Visual Studio, meaning that side-by-side installations of Visual Studio wil finally have truly side-by-side F# tooling and language experiences.
+* The FSharp.Core NuGet package is now signed.
+* ETW logging has been added to the F# tools and compiler.
+* The very large `control.fs`/`control.fsi` files in FSharp.Core have been split into `async.fs`/`async.fsi`, `event.fs`/`event.fsi`, `eventmodule.fs`/`eventmodule.fsi`, `mailbox.fs`/`mailbox.fsi`, and `observable.fs`/`observable.fsi`.
+* We added .NET SDK-style versions of our project performance stress test artifacts.
+* We removed Newtonsoft.json from our codebase, and you now have one less package downloaded for OSS contributors.
+* We now use the latest versions of System.Collections.Immutable and System.Reflection.Metadata.
+
+## F# 4.1
+
+### Releases
+
+* Visual Studio 2017 updates 15.0 to 15.8 (exclusive)
+* .NET Core SDK versions 1.0 to 2.1.400 (exclusive)
+
+### Language and Core Library features
+
+* Struct tuples
+* Initial support for consuming C#-style `ref` returns
+* Struct record support with the `[]` attribute
+* Struct Discriminated Union support with the `[]` attribute
+* `Result<'TSuccess, 'TFailure>` type, with supporting functions in FSharp.Core
+* Support for the `fixed` keyword to pin a pointer-tyle local to the stack
+* Underscores in numeric literals
+* Caller Info Attribute Argument support
+* `namespace rec` and `module rec` to support mutually referential types and functions within the same file
+* Implicit "Module" suffix added to modules that share the same name as a type
+* Tuple equality for F# tuples and `System.Tuple`
+
+### Compiler improvements
+
+* Support for generating Portable PDBs
+* Significant improvements to error messages, particularly to aid with suggestions
+* Performance improvements
+* Interoperability improvements
+* Support for geenerating F# AssymblyInfo from properties for .NET SDK projects
+* `--debug:full` support for F# on .NET Core on Windows
+* `MakeTuple` support for struct tuples
+* Warnings are forwarded when searching for method overloads
+* Support for emitting an enum-specific warning when pattern matching over one
+* Many smaller bug fixes
+
+### FSharp.Core features
+
+* Support for `NativePtr.ByRef`
+* Support for `Async.StartImmediateAsTask`
+* Support for `Seq.transpose`/`Array.transpose`/`List.transpose`
+* `IsSerializable` support for `Option` and `Async<'T>`
+* Many smaller bug fixes
+
+### IDE features for F# tools in Visual Studio
+
+Most items here contributed by community members.
+
+* Default installation of F# wherever .NET Core is installed
+* Significant memory reductions in F# tooling
+* IntelliSense Filters and Glyphs
+* Support for Go to All
+* Find all Reference support
+* In-memory cross-project references support
+* QuickInfo supports type colorization
+* QuickInfo supports navigable links that will invoke Go to Definition
+* Inline Rename support
+* Go to Definition from F# to C# support
+* Semantic document highlighting for selected symbols
+* Support for Structured Guidelines and code outlining, which is toggleable
+* Support for `EditorBrowsable(EditorBrowsableState.Never)`
+* Code fix for making Record and Discriminated Union case lables upper-case
+* Code fix to make suggestions for an unkown identifier
+* Code fix for prefixing or replacing an unused value with an underscore
+* Code fix to add the `new` keyword to a disposable type
+* Code fix to add an `open` statement at the top for a symbol coming from an unopened namespace or module
+* Code fix to simplify a name by removing unnecessary namespace qualifiers
+* Graying out unused values in the editor
+* Colorized `fsi.exe` when ran as a standalone console application
+* Autocompletion support, including symbols from unopened namespaces
+* Colorization for mutable values to distinguish them from immutable values
+* Support for move up/down on solution folder nodes
+* Support for Blue (High Contrast) theming
+* Full support for .NET Core and .NET Standard projects, with the ability to create new ASP.NET Core projects in F#
+* Full support for ASP.NET Web SDK tooling, such as Azure publish UI, for F# projects
+* Property page auto-sizing support for different monitors
+* Smart indentation support which auto-indents based on scope and auto-deindents for bracket-like characters
+* XML documentation comment width scaling to prevent it running horizontally off the screen
+* Multiple settings pages to modify tooling settings
+* Support for Drag and Drop across folders
+* Support for nightly builds of the tools
+* Expanded debugger view for lists from 50 items to 5000 items
+* Support for Optimization APIs in the compiler service
+* Support for `IsNameGenerated` in the F# symbols API
+
+## Older F# releases
+
+### [4.0.0] - Visual Studio 2015 Update 1 - 30 November 2015
+
+#### Enhancements
+* Perf: `for i in expr do body` optimization [#219](https://github.com/Microsoft/visualfsharp/pull/219)
+* Remove type provider security dialog and use custom icon for type provider assembly reference [#448](https://github.com/Microsoft/visualfsharp/pull/448)
+* Perf: Enable parallel build inside Visual Studio [#487](https://github.com/Microsoft/visualfsharp/pull/487)
+* Perf: Remove StructBox for Value Types [#549](https://github.com/Microsoft/visualfsharp/pull/549)
+* Add compiler warnings for redundant arguments in raise/failwith/failwithf/nullArg/invalidOp/invalidArg [#630](https://github.com/Microsoft/visualfsharp/pull/630)
+* Add a compiler warning for lower case literals in patterns [#666](https://github.com/Microsoft/visualfsharp/pull/666)
+
+#### Bug fixes
+* Fix scope of types for named values in attributes improperly set [#437](https://github.com/Microsoft/visualfsharp/pull/437)
+* Add general check for escaping typars to check phase [#442](https://github.com/Microsoft/visualfsharp/pull/442)
+* Fix AccessViolationException on obfuscated assemblies [#519](https://github.com/Microsoft/visualfsharp/pull/519)
+* Fix memory leaks while reloading solutions in Visual Studio [#591](https://github.com/Microsoft/visualfsharp/pull/591)
+* Enable breakpoints in `with` augmentations for class types [#608](https://github.com/Microsoft/visualfsharp/pull/608)
+* Fix false escaping type parameter check error [#613](https://github.com/Microsoft/visualfsharp/pull/613)
+* Fix quotation of readonly fields [#622](https://github.com/Microsoft/visualfsharp/pull/622)
+* Keep the reference icons when opening references [#623](https://github.com/Microsoft/visualfsharp/pull/623)
+* Don't suppress missing FSI transitive references [#626](https://github.com/Microsoft/visualfsharp/pull/626)
+* Make Seq.cast's non-generic and generic IEnumerable implementations equivalent [#651](https://github.com/Microsoft/visualfsharp/pull/651)
+
+### [4.0.0] - 20 July 2015
+
+Includes commits up to `dd8252eb8d20aaedf7b1c7576cd2a8a82d24f587`
+
+#### Language, compiler, runtime, interactive
+
+* Normalization and expansion of `Array`, `List`, and `Seq` modules
+ * New APIs for 4.0: `chunkBySize`, `contains`, `except`, `findBack`, `findInstanceBack`, `indexed`, `item`, `mapFold`, `mapFoldBack`, `sortByDescending`, `sortDescending`, `splitInto`, `tryFindBack`, `tryFindIndexBack`, `tryHead`, `tryItem`, `tryLast`
+ ![Collection API additions](http://i.imgur.com/SdJ7Doh.png)
+* Other new APIs
+ * `Option.filter`, `Option.toObj`, `Option.ofObj`, `Option.toNullable`, `Option.ofNullable`
+ * `String.filter`
+ * `Checked.int8`, `Checked.uint8`
+ * `Async.AwaitTask` (non-generic)
+ * `WebClient.AsyncDownloadFile`, `WebClient.AsyncDownloadData`
+ * `tryUnbox`, `isNull`
+* New active pattern to match constant `Decimal` in quotations
+* Slicing support for lists
+* Support for consuming high-rank (> 4) arrays
+* Support for units of measure in `printf`-family functions
+* Support for constructors/class names as first-class functions
+* Improved exception stack traces in async code
+* Automatic `mutable`/`ref` conversion
+* Support for static arguments to provided methods
+* Support for non-nullable provided types
+* Added `NonStructuralComparison` module containing non-structural comparison operators
+* Support for rational exponents in units of measure
+* Give fsi.exe, fsiAnyCpi.exe nice icons
+* `Microsoft.` optional in namepsace paths from FSharp.Core
+* Support for extension properties in object initializers
+* Pre-support (not yet used) for additional nativeptr intrinsics
+* Simplified, more robust resolution of type references in quotations
+* Support for inheritance of types that have multiple interface instantiations
+* Extended preprocessor grammar
+* Support for implicit quotation of expressions used as method arguments
+* Support for multiple properties in `[]`
+* Eliminate tuple allocation for implicitly returned formal arguments
+* Perf: fsc.exe now uses `GCLatencyMode.Batch`
+* Perf: Improved `hash`/`compare`/`distinctBy`/`groupBy` performance
+* Perf: `Seq.toArray` perf improvement
+* Perf: Use `OptimizedClosures.FSharpFunc` in seq.fs where applicable
+* Perf: Use literals and mutable variables instead of ref cells for better performance in SHA1 calc
+* Perf: Use smart blend of `System.Array.Copy` and iterative copy for array copies
+* Perf: Change `Seq.toList` to mutation-based to remove reliance on `List.rev`
+* Perf: Change `pdbClose` to test if files are locked before inducing GCs
+* Perf: Use server GC mode for compiler
+* Bugfix: Changed an error message within the Set module to use the correct module name.
+* Bugfix: Fix assembly name of warning FS2003
+* Bugfix [#132](http://visualfsharp.codeplex.com/workitem/132): FSI Shadowcopy causes a significant degrade in the fsi first execute time
+* Bugfix [#131](https://visualfsharp.codeplex.com/workitem/131): Fix getentryassembly return value when shadowcopy is enabled in FSI
+* Bugfix [#61](https://visualfsharp.codeplex.com/workitem/61) Nonverifiable code generated with units of measure conversion
+* Bugfix [#68](https://visualfsharp.codeplex.com/workitem/68) BadImageFormatException with Units of Measure
+* Bugfix [#146](https://visualfsharp.codeplex.com/workitem/146) BadImageFormatException in both Release and Debug build with units of measure
+* Bugfix: Incorrent cross-module inlining between different .NET profiles
+* Bugfix: Properly document exceptions in `Array` module
+* Bugfix [#24](https://visualfsharp.codeplex.com/workitem/24): Error reporting of exceptions in type providers `AddMemberDelayed`
+* Bugfix [#13](https://github.com/fsharp/fsharp/issues/13): Error on FSI terminal resize
+* Bugfix [#29](https://github.com/fsharp/fsharp/issues/29): Module access modifier `internal` does not give internal access if no namespaces are used
+* Bugfix: Fix typo in error message for invalid attribute combination
+* Bugfix [#27](https://github.com/microsoft/visualfsharp/issues/27): Private module values can be mutated by other modules
+* Bugfix [#38](https://github.com/microsoft/visualfsharp/issues/38): ICE - System.ArgumentException: not a measure abbreviation, or incorrect kind
+* Bugfix [#44](https://github.com/microsoft/visualfsharp/issues/44): Problems using FSI to `#load` multiple files contributing to the same namespace
+* Bugfix [#95](https://github.com/microsoft/visualfsharp/issues/95): `[]` allows access to DU member if qualified only by module name
+* Bugfix [#89](https://github.com/microsoft/visualfsharp/issues/89): Embedding an untyped quotation in a typed quotation results in ArgumentException
+* Bugfix: Show warning when Record is accessed without type but `[]` was set
+* Bugfix [#139](https://visualfsharp.codeplex.com/workitem/139): Memory leak in `Async.AwaitWaitHandle`
+* Bugfix [#122](https://github.com/microsoft/visualfsharp/issues/122): `stfld` does not give `.volatile` annotation
+* Bugfix [#30](https://github.com/microsoft/visualfsharp/issues/30): Compilation error "Incorrect number of type arguments to local call"
+* Bugfix [#163](https://github.com/microsoft/visualfsharp/issues/163): Array slicing does not work properly with non 0-based arrays
+* Bugfix [#148](https://github.com/microsoft/visualfsharp/issues/148): XML doc comment generation adding empty garbage
+* Bugfix [#98](https://github.com/Microsoft/visualfsharp/issues/98): Using a single, optional, static parameter to a type provider causes failure
+* Bugfix [#109](https://github.com/Microsoft/visualfsharp/issues/109): Invalid interface generated by --sig
+* Bugfix [#123](https://github.com/Microsoft/visualfsharp/issues/123): Union types without sub-classes should be sealed
+* Bugfix [#68](https://github.com/Microsoft/visualfsharp/issues/68): F# 3.1 / Profile 259: `<@ System.Exception() @>` causes AmbiguousMatchException at runtime
+* Bugfix [#9](https://github.com/Microsoft/visualfsharp/issues/9): Internal error in FSI: FS0192: binding null type in envBindTypeRef
+* Bugfix [#10](https://github.com/Microsoft/visualfsharp/issues/10): Internal error: binding null type in envBindTypeRef
+* Bugfix [#266](https://github.com/Microsoft/visualfsharp/issues/266): `windowed` error message incorrectly flags "non-negative" input when "positive" is what's needed
+* Bugfix [#270](https://github.com/Microsoft/visualfsharp/issues/270): "internal error: null: convTypeRefAux" in interactive when consuming quotation containing type name with commas or spaces
+* Bugfix [#276](https://github.com/Microsoft/visualfsharp/issues/276): Combining struct field with units of measure will result managed type instead of unmanaged type
+* Bugfix [#269](https://github.com/Microsoft/visualfsharp/issues/269): Accidentally `#load`ing a DLL in script causes internal error
+* Bugfix [#293](https://github.com/Microsoft/visualfsharp/issues/293): `#r` references without relative path are not loaded when file is local
+* Bugfix [#237](https://github.com/Microsoft/visualfsharp/issues/237): Problems using FSI on multiple namespaces in a single file
+* Bugfix [#338](https://github.com/Microsoft/visualfsharp/issues/338): Escaped unicode characters are encoded incorrectly
+* Bugfix [#370](https://github.com/Microsoft/visualfsharp/issues/370): `Seq.sortBy` cannot handle sequences of floats containing NaN
+* Bugfix [#368](https://github.com/Microsoft/visualfsharp/issues/368): Optimizer incorrectly assumes immutable field accesses are side-effect free
+* Bugfix [#337](https://github.com/Microsoft/visualfsharp/issues/337): Skip interfaces that lie outside the set of referenced assemblies
+* Bugfix [#383](https://github.com/Microsoft/visualfsharp/issues/383): Class with `[]` barred from inheriting from normal non-nullable class
+* Bugfix [#420](https://github.com/Microsoft/visualfsharp/issues/420): Compiler emits incorrect visibility modifier for internal constructors of abstract class
+* Bugfix [#362](https://github.com/Microsoft/visualfsharp/issues/362): Depickling assertion followed by nullref internal errors in units-of-measure case
+* Bugfix [#342](https://github.com/Microsoft/visualfsharp/issues/342): FS0193 error when specifying sequential struct layout of a type
+* Bugfix [#299](https://github.com/Microsoft/visualfsharp/issues/299): AmbiguousMatchException with `[]` on overloaded extension methods
+* Bugfix [#316](https://github.com/Microsoft/visualfsharp/issues/316): Null array-valued attribute causes internal compiler error
+* Bugfix [#147](https://github.com/Microsoft/visualfsharp/issues/147): FS0073: internal error: Undefined or unsolved type variable: 'a
+* Bugfix [#34](https://github.com/Microsoft/visualfsharp/issues/34): Error in pass2 for type FSharp.DataFrame.FSharpFrameExtensions, error: duplicate entry 'Frame2.GroupRowsBy' in method table
+* Bugfix [#212](https://github.com/Microsoft/visualfsharp/issues/212): Record fields initialized in wrong order
+* Bugfix [#445](https://github.com/Microsoft/visualfsharp/issues/445): Inconsistent compiler prompt message when using `--pause` switch
+* Bugfix [#238](https://github.com/Microsoft/visualfsharp/issues/238): Generic use of member constraint solved to record field causes crash
+
+#### Visual Studio
+
+* Updated all templates (except tutorial) to include AssemblyInfo.fs setup in the same manner as default C# project templates
+* Add keyboard shortcuts for FSI reset and clear all
+* Improved debugger view for Map values
+* Improved performance reading stdout/stderr from fsi.exe to F# Interactive window
+* Support for VS project up-to-date check
+* Improved project template descriptions, make it clearer how to target Xamarin platforms
+* Intellisense completion in object initializers
+* Add menu entry "Open folder in File Explorer" on folder nodes
+* Intellisense completion for named arguments
+* `Alt+Enter` sends current line of code to interactive if there is no selection
+* Support for debugging F# scripts with the VS debugger
+* Add support for hexadecimal values (like 0xFF) ??to MSBuild property BaseAddress
+* Updated menu icons used for F# interactive to align with other VS interactive windows
+* Bugfix: Fix url of fsharp.org website in vs templates
+* Bugfix [#141](https://visualfsharp.codeplex.com/workitem/141): The "Error List" window does not parse MSBuild messages correctly
+* Bugfix [#147](https://visualfsharp.codeplex.com/workitem/147): Go to definition doesn't work for default struct ctors
+* Bugfix [#50](https://github.com/microsoft/visualfsharp/issues/50): Members hidden from IntelliSense still show up in tooltips
+* Bugfix [#57](https://github.com/microsoft/visualfsharp/issues/57) (partial): Visual Studio locking access to XML doc files
+* Bugfix [#157](https://github.com/Microsoft/visualfsharp/issues/157): Should not allow Framework 4 / F# 3.1 combination in project properties
+* Bugfix [#114](https://github.com/Microsoft/visualfsharp/issues/114): Portable Library (legacy) template displays wrong target framework version
+* Bugfix [#273](https://github.com/Microsoft/visualfsharp/issues/273): VS editor shows bogus errors when scripts use multi-hop `#r` and `#load` with relative paths
+* Bugfix [#312](https://github.com/Microsoft/visualfsharp/issues/312): F# library project templates and portable library templates do not have `AutoGenerateBindingRedirects` set to true
+* Bugfix [#321](https://github.com/Microsoft/visualfsharp/issues/321): Provided type quickinfo shouldn't show hidden and obsolete members from base class
+* Bugfix [#319](https://github.com/Microsoft/visualfsharp/issues/319): Projects with target runtime 3.0 don't show up correctly on the VS project dialog
+* Bugfix [#283](https://github.com/Microsoft/visualfsharp/issues/283): Changing target framework causes incorrect binding redirects to be added to app.config
+* Bugfix [#278](https://github.com/Microsoft/visualfsharp/issues/278): NullReferenceException when trying to add some COM references
+* Bugfix [#259](https://github.com/Microsoft/visualfsharp/issues/259): Renaming files in folders causes strange UI display
+* Bugfix [#350](https://github.com/Microsoft/visualfsharp/issues/350): Renaming linked file results in error dialog
+* Bugfix [#381](https://github.com/Microsoft/visualfsharp/issues/381): Intellisense stops working when referencing PCL component from script (requires `#r "System.Runtime"`)
+* Bugfix [#104](https://github.com/Microsoft/visualfsharp/issues/104): Using paste to add files to an F# project causes the order of files in the project and on the UI to get out of sync
+* Bugfix [#417](https://github.com/Microsoft/visualfsharp/issues/417): 'Move file up/down' keybindings should be scoped to solution explorer
+* Bugfix [#246](https://github.com/Microsoft/visualfsharp/issues/246): Fix invalid already rendered folder error
+* Bugfix [#106](https://github.com/Microsoft/visualfsharp/issues/106) (partial): Visual F# Tools leak memory while reloading solutions
+
+### [3.1.2] - 20 August 2014
+
+Includes commits up to `3385e58aabc91368c8e1f551650ba48705aaa285`
+
+#### Language, compiler, runtime, interactive
+
+* Allow arbitrary-dimensional slicing
+* Ship versions FSharp.Core.dll built on portable profiles 78 and 259
+* Support "shebang" (`#!`) in F# source files
+* Vertical pipes disallowed in active pattern case identifiers
+* Enable non-locking shadow copy of reference assemblies in fsi/fsianycpu
+* Inline codegen optimization using structs
+* Perf improvement for `Seq.windowed`
+* exe.config files for fsc, fsi, fsianycpu now use simple version range instead of long set of explicit version redirects
+* Bugfix [#72](https://visualfsharp.codeplex.com/workitem/72): Indexer properties with more than 4 arguments cannot be accessed
+* Bugfix [#113](https://visualfsharp.codeplex.com/workitem/113): `Async.Sleep` in .NETCore profiles does not invoke error continuation
+* Bugfix [#91](https://visualfsharp.codeplex.com/workitem/91): String module documentation is false
+* Bugfix [#78](https://visualfsharp.codeplex.com/workitem/78): Allow space characters in active pattern case identifiers
+* Bugfix: Invalid code generated when calling VB methods with optional byref args
+* Bugfix [#69](https://visualfsharp.codeplex.com/workitem/69): Invalid code generated when calling C# method with optional nullable args
+* Bugfix [#9](https://visualfsharp.codeplex.com/workitem/9): XML doc comments on F# record type fields do not appear when accessing in C#
+* Bugfix [#59](https://visualfsharp.codeplex.com/workitem/59): Compiler always requires System.Runtime.InteropServices, this is not present in all portable profiles
+* Bugfix [#17](https://visualfsharp.codeplex.com/workitem/17): Incorrect generation of XML from doc comments for Record fields
+* Bugfix [#7](https://visualfsharp.codeplex.com/workitem/17): NullRef in list comprehension, when for loop works
+* Bugfix [#1](https://visualfsharp.codeplex.com/workitem/1): Type inference involving generic param arrays
+* Bugfix [#37](https://visualfsharp.codeplex.com/workitem/37): Perf regression in 3.1.0 related to resolving extension methods
+* Bugfix: Can't run F# console application with 'update' in name
+* Bugfix: Slicing and range expression inconsistent
+* Bugfix: Invalid code is generated when using field initializers in struct constructor
+
+#### Visual Studio
+
+* Project templates for F# portable libraries targeting profiles 78 and 259
+* Enable non-locking shadow copy of reference assemblies in fsi/fsianycpu (VS options added)
+* Allow breakpoints to be set inside of quotations
+* Support "Publish" action in project system for web, Azure
+* Bugfix [#126](https://visualfsharp.codeplex.com/workitem/126): F# package installer does not honor custom install paths for express SKUs
+* Bugfix [#75](https://visualfsharp.codeplex.com/workitem/75): Microsoft.FSharp.Targets shim not deployed with F# SDK
+* Bugfix: Fix crash in smart indent provider
+* Bugfix [#55](https://visualfsharp.codeplex.com/workitem/55): Cannot add reference to F# PCL project
+* Bugfix: Typos in tutorial project script
+* Bugfix: Required C# event members do not appear in intellisense when signature is (object, byref)
+
+
+### [3.1.1] - 24 January 2014
+
+#### Language, compiler, runtime, interactive
+
+* Improve F# compiler telemetry
+* Bugfix: Improper treatment of * in AssemblyVersion attribute
+* Bugfix: ``sprintf "%%"`` returns `"%%"` in F# 3.1.0, previously returned `"%"` in F# 3.0 and earlier
+* Bugfix: F# 3.0 1D slice setter does not compile in F# 3.1.0
+
+#### Visual Studio
+
+* Enable installation of Visual F# on VS Desktop Express
+* Added support for showing xml doc comments for named arguments
+* Visual F# package deployable on non-VS machines. Deploys compiler and runtime toolchain plus msbuild targets
+* Bugfix: Errors when attempting to add reference to .NET core library
+* Bugfix: Crash in `FSComp.SR.RunStartupValidation()`
+
+[4.0.0]: http://fsharp.org
+[3.1.2]: http://blogs.msdn.com/b/fsharpteam/archive/2014/08/20/announcing-the-release-of-visual-f-tools-3-1-2.aspx
+[3.1.1]: http://blogs.msdn.com/b/fsharpteam/archive/2014/01/22/announcing-visual-f-3-1-1-and-support-for-desktop-express.aspx
+
diff --git a/scripts/dotnet-install.sh b/scripts/dotnet-install.sh
old mode 100644
new mode 100755
diff --git a/setup/FSharp.SDK/Common.Wix.Properties.wxs b/setup/FSharp.SDK/Common.Wix.Properties.wxs
deleted file mode 100644
index f9f1994caf1..00000000000
--- a/setup/FSharp.SDK/Common.Wix.Properties.wxs
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/setup/FSharp.SDK/FSharp.SDK.wixproj b/setup/FSharp.SDK/FSharp.SDK.wixproj
deleted file mode 100644
index 0ebb007757b..00000000000
--- a/setup/FSharp.SDK/FSharp.SDK.wixproj
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
-
- $(MSBuildProjectDirectory)\..\..
- $(FSharpTreeRoot)\setup
-
-
-
-
-
-
- Microsoft.FSharp.SDK.Core
- Microsoft.FSharp.SDK.Resources.$(LocaleCode)
- da0da41f-0e00-4598-8eee-b29d31b0ca04
- Package
- net
- true
- false
- true
- false
-
-
-
- $(DefineConstants);LocaleCode=$(LocaleCode)
- $(DefineConstants);LocaleId=$(LocaleId)
- $(DefineConstants);LocaleParentCulture=$(LocaleParentCulture)
- $(DefineConstants);LocaleSpecificCulture=$(LocaleSpecificCulture)
- $(DefineConstants);IsLangPack=$(IsLangPack)
-
- $(DefineConstants);BinariesDir=$(BinariesDir)
- $(DefineConstants);FSharpTreeRoot=$(FSharpTreeRoot)
- $(DefineConstants);NugetPackagesDir=$(NugetPackagesDir)
-
-
-
-
- WixNetFxExtension
-
-
- FSharp.Wix.Extensions
- $(BinariesDir)\setup\FSharp.Wix.Extensions.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Microsoft400
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/setup/FSharp.SDK/FSharp.SDK.wxs b/setup/FSharp.SDK/FSharp.SDK.wxs
deleted file mode 100644
index f05fa1e4bd1..00000000000
--- a/setup/FSharp.SDK/FSharp.SDK.wxs
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/setup/FSharp.SDK/component-groups/Compiler_LangPack.wxs b/setup/FSharp.SDK/component-groups/Compiler_LangPack.wxs
deleted file mode 100644
index acff23337ef..00000000000
--- a/setup/FSharp.SDK/component-groups/Compiler_LangPack.wxs
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/setup/FSharp.SDK/component-groups/Compiler_Redist.wxs b/setup/FSharp.SDK/component-groups/Compiler_Redist.wxs
deleted file mode 100644
index c9d7182c018..00000000000
--- a/setup/FSharp.SDK/component-groups/Compiler_Redist.wxs
+++ /dev/null
@@ -1,212 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/setup/FSharp.SDK/component-groups/Runtime_LangPack.wxs b/setup/FSharp.SDK/component-groups/Runtime_LangPack.wxs
deleted file mode 100644
index 5070e5fc1cd..00000000000
--- a/setup/FSharp.SDK/component-groups/Runtime_LangPack.wxs
+++ /dev/null
@@ -1,165 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/setup/FSharp.SDK/component-groups/Runtime_Redist.wxs b/setup/FSharp.SDK/component-groups/Runtime_Redist.wxs
deleted file mode 100644
index 46dd92b7f73..00000000000
--- a/setup/FSharp.SDK/component-groups/Runtime_Redist.wxs
+++ /dev/null
@@ -1,220 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/setup/FSharp.Setup.props b/setup/FSharp.Setup.props
index 9eafdc99cc5..899f78e6baa 100644
--- a/setup/FSharp.Setup.props
+++ b/setup/FSharp.Setup.props
@@ -5,19 +5,18 @@
2.0
3.10
3.10.0.1503
+ $(MSBuildThisFileDirectory)
$(SetupRootFolder)\..\packages\WiX.Toolset.2015.$(WiXToolset2015Version)\tools\wix
$(SetupRootFolder)\..\packages
-
+
+
+
- 4.1
-
- $([System.DateTime]::Now.ToString(yyyyMMdd.0))
-
- $(FSharpProductVersion).$(BUILD_BUILDNUMBER.Replace(".DRAFT", ""))
-
+
+ $(VSMajorVersion).$(VSMinorVersion).$(BUILD_BUILDNUMBER)
-
+
net40
Debug
@@ -26,7 +25,7 @@
$(SetupRootFolder)\..\$(Configuration)
- $(BinariesDir)\$(TargetDotnetProfile)\bin
+ $(BinariesDir)\$(TargetDotnetProfile)\bin\
$(BinariesDir)\insertion
obj\$(Configuration)\
$(BinariesDir)\setup
@@ -37,97 +36,111 @@
ENU
1033
+ 9
en
en-US
false
-
+
CHT
1028
+ 31748
zh-Hant
zh-TW
true
-
+
CSY
1029
+ 5
cs
cs-CZ
true
-
+
DEU
1031
+ 7
de
de-DE
true
-
+
FRA
1036
+ 12
fr
fr-FR
true
-
+
ITA
1040
+ 16
it
it-IT
true
-
+
JPN
1041
+ 17
ja
ja-JP
true
-
+
KOR
1042
+ 18
ko
ko-KR
true
-
+
PLK
1045
+ 21
pl
pl-PL
true
-
+
PTB
1046
+ 1046
pt-BR
pt-BR
true
-
+
RUS
1049
+ 25
ru
ru-RU
true
-
+
TRK
1055
+ 31
tr
tr-TR
true
-
+
CHS
2052
+ 4
zh-Hans
zh-CN
true
-
+
ESN
3082
+ 10
es
es-ES
true
diff --git a/setup/FSharp.Wix.Extensions/AssemblyInfo.cs b/setup/FSharp.Wix.Extensions/AssemblyInfo.cs
deleted file mode 100644
index 42523fa3840..00000000000
--- a/setup/FSharp.Wix.Extensions/AssemblyInfo.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
-
-using FSharp.WIX.Extensions;
-using Microsoft.Tools.WindowsInstallerXml;
-
-[assembly: AssemblyDefaultWixExtension(typeof(FSharpWixExtension))]
diff --git a/setup/FSharp.Wix.Extensions/FSharp.Wix.Extensions.csproj b/setup/FSharp.Wix.Extensions/FSharp.Wix.Extensions.csproj
deleted file mode 100644
index 135d678cae9..00000000000
--- a/setup/FSharp.Wix.Extensions/FSharp.Wix.Extensions.csproj
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
- $(MSBuildProjectDirectory)\..
-
-
-
-
-
-
- CSharp
- 15.0
- 4.4.1.0
- cs
-
-
-
- Library
- FSharp.Wix.Extensions
- {321E6C2C-9E1C-4506-B1C0-1F81DCAEF207}
- v4.5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/setup/FSharp.Wix.Extensions/FSharpPreprocessorExtension.cs b/setup/FSharp.Wix.Extensions/FSharpPreprocessorExtension.cs
deleted file mode 100644
index 48973850a9b..00000000000
--- a/setup/FSharp.Wix.Extensions/FSharpPreprocessorExtension.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
-
-using Microsoft.Tools.WindowsInstallerXml;
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Linq;
-using System.Security.Cryptography;
-using System.Text;
-
-namespace FSharp.WIX.Extensions
-{
- public class FSharpPreprocessorExtension : PreprocessorExtension
- {
- private readonly string[] prefixes = new string[] { "fsharp" };
-
- public override string[] Prefixes
- {
- get { return this.prefixes; }
- }
-
- public override string EvaluateFunction(string prefix, string function, string[] args)
- {
- if (prefixes.Contains(prefix))
- {
- switch (function)
- {
- case "guid":
- return this.Guid(args);
- }
- }
-
- return null;
- }
-
- private string Guid(string[] args)
- {
- var input = string.Join("|", args);
- var bytes = Encoding.Default.GetBytes(input);
- var output = MD5.Create().ComputeHash(bytes);
-
- return new Guid(output).ToString();
- }
- }
-}
diff --git a/setup/FSharp.Wix.Extensions/FSharpWixExtension.cs b/setup/FSharp.Wix.Extensions/FSharpWixExtension.cs
deleted file mode 100644
index 4273e1812a1..00000000000
--- a/setup/FSharp.Wix.Extensions/FSharpWixExtension.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
-
-using System;
-using Microsoft.Tools.WindowsInstallerXml;
-
-namespace FSharp.WIX.Extensions
-{
- public class FSharpWixExtension : WixExtension
- {
- private readonly Lazy preprocessorExtension = new Lazy();
-
- public override PreprocessorExtension PreprocessorExtension
- {
- get { return this.preprocessorExtension.Value; }
- }
- }
-}
diff --git a/setup/Swix/Microsoft.FSharp.Compiler.Resources/Empty.swr b/setup/Swix/Microsoft.FSharp.Compiler.Resources/Empty.swr
new file mode 100644
index 00000000000..32da88c9291
--- /dev/null
+++ b/setup/Swix/Microsoft.FSharp.Compiler.Resources/Empty.swr
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 00000000000..464fdd774ee
--- /dev/null
+++ b/setup/Swix/Microsoft.FSharp.Compiler.Resources/Files.swr
@@ -0,0 +1,11 @@
+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)\net40\bin\$(LocaleParentCulture)\FSharp.Build.resources.dll"
+ file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.Compiler.Interactive.Settings.resources.dll"
+ file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.Compiler.Private.resources.dll"
+ file source="$(BinariesFolder)\net40\bin\$(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
new file mode 100644
index 00000000000..d722fb0293e
--- /dev/null
+++ b/setup/Swix/Microsoft.FSharp.Compiler.Resources/Microsoft.FSharp.Compiler.Resources.swixproj
@@ -0,0 +1,41 @@
+
+
+
+
+ ..\..\..\src
+ neutral
+ false
+ vsix
+ true
+ Debug
+ $(FSharpSourcesRoot)\..\$(Configuration)
+ $(BinariesFolder)\insertion
+ Microsoft.FSharp.Compiler.Resources.$(LocaleCode)
+ $(MSBuildThisFileDirectory)obj
+
+
+
+
+
+ $(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder)
+ $(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
new file mode 100644
index 00000000000..c5dcc628603
--- /dev/null
+++ b/setup/Swix/Microsoft.FSharp.Compiler/Dependencies.swr
@@ -0,0 +1,9 @@
+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
new file mode 100644
index 00000000000..e546ffe0b30
--- /dev/null
+++ b/setup/Swix/Microsoft.FSharp.Compiler/Files.swr
@@ -0,0 +1,39 @@
+use vs
+
+package name=Microsoft.FSharp.Compiler
+ version=$(FSharpPackageVersion)
+
+folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharp"
+
+ file source=$(BinariesFolder)\net40\bin\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)\net40\bin\fsc.exe.config"
+
+ file source=$(BinariesFolder)\net40\bin\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)\net40\bin\fsi.exe.config"
+
+ file source="$(BinariesFolder)\net40\bin\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)\net40\bin\fsiAnyCpu.exe.config"
+
+ file source="$(BinariesFolder)\net40\bin\FSharp.Compiler.Interactive.Settings.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2
+ file source="$(BinariesFolder)\net40\bin\FSharp.Compiler.Private.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2
+ file source="$(BinariesFolder)\net40\bin\FSharp.Compiler.Server.Shared.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2
+
+ file source="$(BinariesFolder)\net40\bin\FSharp.Core.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2
+ file source="$(BinariesFolder)\net40\bin\FSharp.Core.optdata"
+ file source="$(BinariesFolder)\net40\bin\FSharp.Core.sigdata"
+
+ file source="$(BinariesFolder)\net40\bin\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)\net40\bin\Microsoft.Build.dll"
+ file source="$(BinariesFolder)\net40\bin\Microsoft.Build.Framework.dll"
+ file source="$(BinariesFolder)\net40\bin\Microsoft.Build.Tasks.Core.dll"
+ file source="$(BinariesFolder)\net40\bin\Microsoft.Build.Utilities.Core.dll"
+ file source="$(BinariesFolder)\net40\bin\Microsoft.Portable.FSharp.Targets"
+ file source="$(BinariesFolder)\net40\bin\System.Collections.Immutable.dll"
+ file source="$(BinariesFolder)\net40\bin\System.Reflection.Metadata.dll"
+ file source="$(BinariesFolder)\net40\bin\System.ValueTuple.dll"
+ file source="$(BinariesFolder)\net40\bin\Microsoft.FSharp.NetSdk.props"
+ file source="$(BinariesFolder)\net40\bin\Microsoft.FSharp.NetSdk.targets"
+ file source="$(BinariesFolder)\net40\bin\Microsoft.FSharp.Overrides.NetSdk.targets"
+ file source="$(BinariesFolder)\net40\bin\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
new file mode 100644
index 00000000000..d748087bfcc
--- /dev/null
+++ b/setup/Swix/Microsoft.FSharp.Compiler/Microsoft.FSharp.Compiler.swixproj
@@ -0,0 +1,42 @@
+
+
+
+
+ $(MSBuildThisFileDirectory)..\..\..\src
+ $(FSharpSourcesRoot)\..
+ neutral
+ false
+ vsix
+ true
+ Debug
+ $(FSharpSourcesRoot)\..\$(Configuration)
+ $(FSharpSourcesRoot)\..\packages
+ $(BinariesFolder)\insertion
+ Microsoft.FSharp.Compiler
+ $(MSBuildThisFileDirectory)obj
+
+
+
+
+
+
+ $(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder)
+ $(PackagePreprocessorDefinitions);PackagesFolder=$(PackagesFolder)
+ $(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 fdd884965a7..97fadaec582 100644
--- a/setup/Swix/Microsoft.FSharp.Dependencies/Dependencies.swr
+++ b/setup/Swix/Microsoft.FSharp.Dependencies/Dependencies.swr
@@ -4,20 +4,6 @@ package name=Microsoft.FSharp.Dependencies
version=$(FSharpPackageVersion)
vs.dependencies
- vs.dependency id=Microsoft.FSharp.SDK.Core
+ vs.dependency id=Microsoft.FSharp.SDK
version=$(FSharpPackageVersion)
type=Required
-
- vs.dependency id=Microsoft.FSharp.SDK.Resources
- version=$(FSharpPackageVersion)
- type=Required
-
- vs.dependency id=Microsoft.FSharp.VSIX.Full.Core
- version=$(FSharpPackageVersion)
- 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)
- type=Required
- when=Microsoft.VisualStudio.Product.Enterprise,Microsoft.VisualStudio.Product.Professional,Microsoft.VisualStudio.Product.Community
diff --git a/setup/Swix/Microsoft.FSharp.Dependencies/Files.swr b/setup/Swix/Microsoft.FSharp.Dependencies/Files.swr
index 9dd32500602..29a77d01c79 100644
--- a/setup/Swix/Microsoft.FSharp.Dependencies/Files.swr
+++ b/setup/Swix/Microsoft.FSharp.Dependencies/Files.swr
@@ -3,10 +3,11 @@ use vs
package name=Microsoft.FSharp.Dependencies
version=$(FSharpPackageVersion)
-folder "InstallDir:MSBuild\Microsoft\VisualStudio\v15.0\FSharp"
- file "Microsoft.FSharp.Targets" source="$(BinariesFolder)\setup\resources\Microsoft.FSharp.Shim.targets"
- file "Microsoft.Portable.FSharp.Targets" source="$(BinariesFolder)\setup\resources\Microsoft.Portable.FSharp.Shim.targets"
+folder "InstallDir:MSBuild\Microsoft\VisualStudio\v$(VSGeneralVersion)\FSharp"
+ file "Microsoft.FSharp.targets" source="$(BinariesFolder)\setup\resources\Microsoft.FSharp.Shim.targets"
+ file "Microsoft.Portable.FSharp.targets" source="$(BinariesFolder)\setup\resources\Microsoft.Portable.FSharp.Shim.targets"
file "Microsoft.FSharp.NetSdk.targets" source="$(BinariesFolder)\setup\resources\Microsoft.FSharp.NetSdk.Shim.targets"
+ file "Microsoft.FSharp.Overrides.NetSdk.targets" source="$(BinariesFolder)\setup\resources\Microsoft.FSharp.Overrides.NetSdk.Shim.targets"
file "Microsoft.FSharp.NetSdk.props" source="$(BinariesFolder)\setup\resources\Microsoft.FSharp.NetSdk.Shim.props"
folder "InstallDir:Common7\IDE\PublicAssemblies"
@@ -14,14 +15,5 @@ folder "InstallDir:Common7\IDE\PublicAssemblies"
file source="$(BinariesFolder)\net40\bin\FSharp.Core.optdata"
file source="$(BinariesFolder)\net40\bin\FSharp.Core.sigdata"
-folder "InstallDir:Common7\IDE\NewScriptItems"
- file source="$(BinariesFolder)\setup\resources\NewFileDialog\Script\NewFSharpScriptItems.vsdir"
- file source="$(BinariesFolder)\setup\resources\NewFileDialog\Script\Script.fsx"
-
-folder "InstallDir:Common7\IDE\NewFileItems"
- file source="$(BinariesFolder)\setup\resources\NewFileDialog\General\NewFSharpFileItems.vsdir"
- file source="$(BinariesFolder)\setup\resources\NewFileDialog\General\File.fs"
- file source="$(BinariesFolder)\setup\resources\NewFileDialog\General\Script.fsx"
-
folder "InstallDir:Common7\Tools\VsDevCmd\Ext"
file source="fsharp.bat"
diff --git a/setup/Swix/Microsoft.FSharp.Dependencies/Microsoft.FSharp.Dependencies.swixproj b/setup/Swix/Microsoft.FSharp.Dependencies/Microsoft.FSharp.Dependencies.swixproj
index 4ac13f53b0a..06d75f70f72 100644
--- a/setup/Swix/Microsoft.FSharp.Dependencies/Microsoft.FSharp.Dependencies.swixproj
+++ b/setup/Swix/Microsoft.FSharp.Dependencies/Microsoft.FSharp.Dependencies.swixproj
@@ -21,6 +21,7 @@
$(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder)
$(PackagePreprocessorDefinitions);PackagesFolder=$(PackagesFolder)
$(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion)
+ $(PackagePreprocessorDefinitions);VSGeneralVersion=$(VSGeneralVersion)
@@ -30,9 +31,10 @@
+
-
-
-
+
+
+
diff --git a/setup/Swix/Microsoft.FSharp.Dependencies/fsharp.bat b/setup/Swix/Microsoft.FSharp.Dependencies/fsharp.bat
index 9d5d7f7d77d..adbadf3f819 100644
--- a/setup/Swix/Microsoft.FSharp.Dependencies/fsharp.bat
+++ b/setup/Swix/Microsoft.FSharp.Dependencies/fsharp.bat
@@ -1,7 +1,8 @@
if "%VSCMD_TEST%" NEQ "" goto :test
if "%VSCMD_ARG_CLEAN_ENV%" NEQ "" goto :clean_env
-if "%FSHARPINSTALLDIR%" NEQ "" set "PATH=%FSHARPINSTALLDIR%;%PATH%"
+set FSHARPINSTALLDIR=%VSINSTALLDIR%Common7\IDE\CommonExtensions\Microsoft\FSharp\
+set "PATH=%FSHARPINSTALLDIR%;%PATH%"
goto :end
diff --git a/setup/Swix/Microsoft.FSharp.IDE/Dependencies.swr b/setup/Swix/Microsoft.FSharp.IDE/Dependencies.swr
new file mode 100644
index 00000000000..875b8af13f6
--- /dev/null
+++ b/setup/Swix/Microsoft.FSharp.IDE/Dependencies.swr
@@ -0,0 +1,19 @@
+use vs
+
+package name=Microsoft.FSharp.IDE
+ version=$(FSharpPackageVersion)
+
+vs.dependencies
+ vs.dependency id=Microsoft.FSharp.Dependencies
+ version=$(FSharpPackageVersion)
+ type=Required
+
+ vs.dependency id=Microsoft.FSharp.VSIX.Full.Core
+ version=$(FSharpPackageVersion)
+ 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)
+ 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
new file mode 100644
index 00000000000..bf544b4be14
--- /dev/null
+++ b/setup/Swix/Microsoft.FSharp.IDE/Files.swr
@@ -0,0 +1,13 @@
+use vs
+
+package name=Microsoft.FSharp.IDE
+ version=$(FSharpPackageVersion)
+
+folder "InstallDir:Common7\IDE\NewScriptItems"
+ file source="$(BinariesFolder)\setup\resources\NewFileDialog\Script\NewFSharpScriptItems.vsdir"
+ file source="$(BinariesFolder)\setup\resources\NewFileDialog\Script\Script.fsx"
+
+folder "InstallDir:Common7\IDE\NewFileItems"
+ file source="$(BinariesFolder)\setup\resources\NewFileDialog\General\NewFSharpFileItems.vsdir"
+ file source="$(BinariesFolder)\setup\resources\NewFileDialog\General\File.fs"
+ file source="$(BinariesFolder)\setup\resources\NewFileDialog\General\Script.fsx"
diff --git a/setup/Swix/Microsoft.FSharp.IDE/Microsoft.FSharp.IDE.swixproj b/setup/Swix/Microsoft.FSharp.IDE/Microsoft.FSharp.IDE.swixproj
new file mode 100644
index 00000000000..47c00dd88fe
--- /dev/null
+++ b/setup/Swix/Microsoft.FSharp.IDE/Microsoft.FSharp.IDE.swixproj
@@ -0,0 +1,38 @@
+
+
+
+
+ $(MSBuildThisFileDirectory)..\..\..\src
+ neutral
+ false
+ vsix
+ true
+ Debug
+ $(FSharpSourcesRoot)\..\$(Configuration)
+ $(FSharpSourcesRoot)\..\packages
+ $(BinariesFolder)\insertion
+ Microsoft.FSharp.IDE
+ $(MSBuildThisFileDirectory)obj
+
+
+
+
+
+ $(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder)
+ $(PackagePreprocessorDefinitions);PackagesFolder=$(PackagesFolder)
+ $(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/setup/Swix/Microsoft.FSharp.SDK.Core/Files.swr b/setup/Swix/Microsoft.FSharp.SDK.Core/Files.swr
deleted file mode 100644
index 67a6272ceb6..00000000000
--- a/setup/Swix/Microsoft.FSharp.SDK.Core/Files.swr
+++ /dev/null
@@ -1,14 +0,0 @@
-use vs
-
-package name=Microsoft.FSharp.SDK.Core
- version=$(FSharpPackageVersion)
- vs.package.type=msi
- vs.package.providerKey=Microsoft.FSharp.SDK.Core,v4.1
-
-vs.installSize
- SystemDrive=194670592
- TargetDrive=0
- SharedDrive=0
-
-vs.payloads
- vs.payload source="$(BinariesFolder)\msi\Microsoft.FSharp.SDK.Core.msi"
diff --git a/setup/Swix/Microsoft.FSharp.SDK.Core/Microsoft.FSharp.SDK.Core.swixproj b/setup/Swix/Microsoft.FSharp.SDK.Core/Microsoft.FSharp.SDK.Core.swixproj
deleted file mode 100644
index 99ae94075ed..00000000000
--- a/setup/Swix/Microsoft.FSharp.SDK.Core/Microsoft.FSharp.SDK.Core.swixproj
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
- ..\..\..\src
- neutral
- false
- manifest
- Microsoft.FSharp.SDK.Core
- true
- Debug
- $(FSharpSourcesRoot)\..\$(Configuration)
- $(BinariesFolder)\insertion
- $(MSBuildThisFileDirectory)obj
-
-
-
-
-
- $(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder)
- $(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/setup/Swix/Microsoft.FSharp.SDK.Resources/Empty.swr b/setup/Swix/Microsoft.FSharp.SDK.Resources/Empty.swr
deleted file mode 100644
index 262ef0c9ff5..00000000000
--- a/setup/Swix/Microsoft.FSharp.SDK.Resources/Empty.swr
+++ /dev/null
@@ -1,7 +0,0 @@
-use vs
-
-package name=Microsoft.FSharp.SDK.Resources
- version=$(FSharpPackageVersion)
- vs.package.language=$(LocaleSpecificCulture)
- vs.package.installSize=1
- vs.package.providerKey=Microsoft.FSharp.SDK.Resources,$(LocaleSpecificCulture),v4.1
diff --git a/setup/Swix/Microsoft.FSharp.SDK.Resources/Files.swr b/setup/Swix/Microsoft.FSharp.SDK.Resources/Files.swr
deleted file mode 100644
index a21afbd7961..00000000000
--- a/setup/Swix/Microsoft.FSharp.SDK.Resources/Files.swr
+++ /dev/null
@@ -1,15 +0,0 @@
-use vs
-
-package name=Microsoft.FSharp.SDK.Resources
- version=$(FSharpPackageVersion)
- vs.package.type=msi
- vs.package.language=$(LocaleSpecificCulture)
- vs.package.providerKey=Microsoft.FSharp.SDK.Resources,$(LocaleSpecificCulture),v4.1
-
-vs.installSize
- SystemDrive=12681438
- TargetDrive=0
- SharedDrive=0
-
-vs.payloads
- vs.payload source="$(BinariesFolder)\msi\Microsoft.FSharp.SDK.Resources.$(LocaleCode).msi"
diff --git a/setup/Swix/Microsoft.FSharp.SDK.Resources/Microsoft.FSharp.SDK.Resources.swixproj b/setup/Swix/Microsoft.FSharp.SDK.Resources/Microsoft.FSharp.SDK.Resources.swixproj
deleted file mode 100644
index 6ed31b2979f..00000000000
--- a/setup/Swix/Microsoft.FSharp.SDK.Resources/Microsoft.FSharp.SDK.Resources.swixproj
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
- ..\..\..\src
- neutral
- false
- Microsoft.FSharp.SDK.Resources.$(LocaleCode)
- true
- Debug
- $(FSharpSourcesRoot)\..\$(Configuration)
- $(BinariesFolder)\insertion
- vsix
- manifest
- $(MSBuildThisFileDirectory)obj
-
-
-
-
-
- $(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder)
- $(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion)
- $(PackagePreprocessorDefinitions);LocaleCode=$(LocaleCode)
- $(PackagePreprocessorDefinitions);LocaleId=$(LocaleId)
- $(PackagePreprocessorDefinitions);LocaleParentCulture=$(LocaleParentCulture)
- $(PackagePreprocessorDefinitions);LocaleSpecificCulture=$(LocaleSpecificCulture)
- $(PackagePreprocessorDefinitions);IsLangPack=$(IsLangPack)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/setup/Swix/Microsoft.FSharp.SDK/Files.swr b/setup/Swix/Microsoft.FSharp.SDK/Files.swr
new file mode 100644
index 00000000000..228bc933437
--- /dev/null
+++ b/setup/Swix/Microsoft.FSharp.SDK/Files.swr
@@ -0,0 +1,102 @@
+use vs
+
+package name=Microsoft.FSharp.SDK
+ version=$(FSharpPackageVersion)
+
+folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharpSdk"
+
+ folder ".NETCore"
+ folder "3.3.1.0"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.3.1.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.3.1.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.3.1.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.3.1.0\FSharp.Core.xml"
+ folder "3.7.4.0"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.7.4.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.7.4.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.7.4.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.7.4.0\FSharp.Core.xml"
+ folder "3.7.41.0"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45\FSharp.Core.xml"
+ folder "3.78.3.1"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.3.1\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.3.1\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.3.1\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.3.1\FSharp.Core.xml"
+ folder "3.78.4.0"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.4.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.4.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.4.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.4.0\FSharp.Core.xml"
+ folder "3.78.41.0"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45+wp8\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45+wp8\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45+wp8\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45+wp8\FSharp.Core.xml"
+ folder "3.259.3.1"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.3.1\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.3.1\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.3.1\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.3.1\FSharp.Core.xml"
+ folder "3.259.4.0"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.4.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.4.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.4.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.4.0\FSharp.Core.xml"
+ folder "3.259.41.0"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.xml"
+
+ folder ".NETFramework\v4.0"
+ folder "4.3.0.0"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.0.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.0.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.0.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.0.0\FSharp.Core.xml"
+ folder "4.3.1.0"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.1.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.1.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.1.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.1.0\FSharp.Core.xml"
+ folder "4.4.0.0"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.4.0.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.4.0.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.4.0.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.4.0.0\FSharp.Core.xml"
+ folder "4.4.1.0"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\versions\4.4.1.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\versions\4.4.1.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\versions\4.4.1.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\versions\4.4.1.0\FSharp.Core.xml"
+ folder "4.4.3.0"
+ file source="$(PackagesFolder)\FSharp.Core.4.3.4\lib\net45\FSharp.Core.dll"
+ file source="$(PackagesFolder)\FSharp.Core.4.3.4\lib\net45\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\FSharp.Core.4.3.4\lib\net45\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\FSharp.Core.4.3.4\lib\net45\FSharp.Core.xml"
+
+ folder ".NETPortable"
+ folder "2.3.5.0"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.0\FSharp.Core.xml"
+ folder "2.3.5.1"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.1\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.1\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.1\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.1\FSharp.Core.xml"
+ folder "3.47.4.0"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\3.47.4.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\3.47.4.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\3.47.4.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\3.47.4.0\FSharp.Core.xml"
+ folder "3.47.41.0"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+sl5+netcore45\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+sl5+netcore45\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+sl5+netcore45\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+sl5+netcore45\FSharp.Core.xml"
diff --git a/setup/Swix/Microsoft.FSharp.SDK/Microsoft.FSharp.SDK.swixproj b/setup/Swix/Microsoft.FSharp.SDK/Microsoft.FSharp.SDK.swixproj
new file mode 100644
index 00000000000..9256eadc32f
--- /dev/null
+++ b/setup/Swix/Microsoft.FSharp.SDK/Microsoft.FSharp.SDK.swixproj
@@ -0,0 +1,36 @@
+
+
+
+
+ ..\..\..\src
+ neutral
+ false
+ vsix
+ Microsoft.FSharp.SDK
+ true
+ Debug
+ $(FSharpSourcesRoot)\..\$(Configuration)
+ $(FSharpSourcesRoot)\..\packages
+ $(BinariesFolder)\insertion
+ $(MSBuildThisFileDirectory)obj
+
+
+
+
+
+ $(PackagePreprocessorDefinitions);PackagesFolder=$(PackagesFolder)
+ $(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Files.swr b/setup/Swix/Microsoft.FSharp.Vsix.Resources/Files.swr
index 8d740b0bb73..a8c5becc80e 100644
--- a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Files.swr
+++ b/setup/Swix/Microsoft.FSharp.Vsix.Resources/Files.swr
@@ -5,16 +5,16 @@ package name=Microsoft.FSharp.VSIX.Full.Resources
vs.package.language=$(LocaleSpecificCulture)
folder "InstallDir:Common7\IDE\PublicAssemblies\$(LocaleParentCulture)"
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\FSharp.Core.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.Core.resources.dll" vs.file.ngen=yes
folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharp\$(LocaleParentCulture)"
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\FSharp.Compiler.Private.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\FSharp.Core.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\FSharp.LanguageService.Base.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\FSharp.LanguageService.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\FSharp.ProjectSystem.Base.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\FSharp.ProjectSystem.FSharp.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\FSharp.ProjectSystem.PropertyPages.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\FSharp.VS.FSI.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\fsi.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\fsiAnyCpu.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.Compiler.Private.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.Core.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.Editor.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.LanguageService.Base.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.LanguageService.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.ProjectSystem.Base.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.ProjectSystem.FSharp.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.ProjectSystem.PropertyPages.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.UIResources.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\net40\bin\$(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
index 8238910c241..2277444e075 100644
--- a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Microsoft.FSharp.Vsix.Resources.swixproj
+++ b/setup/Swix/Microsoft.FSharp.Vsix.Resources/Microsoft.FSharp.Vsix.Resources.swixproj
@@ -21,6 +21,7 @@
$(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion)
$(PackagePreprocessorDefinitions);LocaleCode=$(LocaleCode)
$(PackagePreprocessorDefinitions);LocaleId=$(LocaleId)
+ $(PackagePreprocessorDefinitions);LocaleParentId=$(LocaleParentId)
$(PackagePreprocessorDefinitions);LocaleParentCulture=$(LocaleParentCulture)
$(PackagePreprocessorDefinitions);LocaleSpecificCulture=$(LocaleSpecificCulture)
$(PackagePreprocessorDefinitions);IsLangPack=$(IsLangPack)
@@ -34,17 +35,17 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Templates.swr b/setup/Swix/Microsoft.FSharp.Vsix.Resources/Templates.swr
index ee35fedc9a3..770d904e226 100644
--- a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Templates.swr
+++ b/setup/Swix/Microsoft.FSharp.Vsix.Resources/Templates.swr
@@ -4,21 +4,10 @@ package name=Microsoft.FSharp.VSIX.Full.Resources
version=$(FSharpPackageVersion)
vs.package.language=$(LocaleSpecificCulture)
-folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharp\ProjectTemplates\FSharp\$(LocaleId)\ConsoleProject"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\ConsoleProject\App.config"
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\ProjectTemplates\ConsoleProject\AssemblyInfo.fs"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\ConsoleProject\ConsoleApplication.fsproj"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\ConsoleProject\ConsoleApplication.vstemplate"
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\ProjectTemplates\ConsoleProject\Program.fs"
-
-folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharp\ProjectTemplates\FSharp\$(LocaleId)\LibraryProject"
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\ProjectTemplates\LibraryProject\AssemblyInfo.fs"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\LibraryProject\Library.fsproj"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\LibraryProject\Library.vstemplate"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\LibraryProject\Library1.fs"
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\ProjectTemplates\LibraryProject\Script.fsx"
-
-folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharp\ProjectTemplates\FSharp\$(LocaleId)\TutorialProject"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\TutorialProject\Tutorial.fsproj"
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\ProjectTemplates\TutorialProject\Tutorial.fsx"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\TutorialProject\Tutorial.vstemplate"
+folder "InstallDir:Common7\IDE\ProjectTemplates\FSharp\$(LocaleId)"
+ folder "ConsoleApplication"
+ file source="$(BinariesFolder)\net40\bin\ProjectTemplates\FSharp\$(LocaleParentId)\ConsoleApplication.zip"
+ folder "Library"
+ file source="$(BinariesFolder)\net40\bin\ProjectTemplates\FSharp\$(LocaleParentId)\Library.zip"
+ folder "Tutorial"
+ file source="$(BinariesFolder)\net40\bin\ProjectTemplates\FSharp\$(LocaleParentId)\Tutorial.zip"
diff --git a/setup/Swix/Microsoft.FSharp.vsmanproj b/setup/Swix/Microsoft.FSharp.vsmanproj
index 5b787bff308..f89afddafa0 100644
--- a/setup/Swix/Microsoft.FSharp.vsmanproj
+++ b/setup/Swix/Microsoft.FSharp.vsmanproj
@@ -9,20 +9,36 @@
true
true
$(FSharpSourcesRoot)\..\$(Configuration)\insertion
+ $(OutputPath)
+ $(FSharpPackageVersion)
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/setup/build-insertion.proj b/setup/build-insertion.proj
new file mode 100644
index 00000000000..35496258dee
--- /dev/null
+++ b/setup/build-insertion.proj
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+ .
+ net40
+ 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.proj b/setup/fsharp-setup-build.proj
index b1c5ee70a2c..e56e3191bd1 100644
--- a/setup/fsharp-setup-build.proj
+++ b/setup/fsharp-setup-build.proj
@@ -13,30 +13,14 @@
-
- FSharp.Wix.Extensions\FSharp.Wix.Extensions.csproj
-
-
-
-
-
-
-
-
-
- Swix\Microsoft.FSharp.SDK.Core\Microsoft.FSharp.SDK.Core.swixproj
-
..\vsintegration\Vsix\VisualFSharpFull\VisualFSharpFull.csproj
+
+ ..\vsintegration\Vsix\VisualFSharpTemplates\VisualFSharpTemplates.csproj
+
-
-
-
-
@@ -46,13 +30,9 @@
Swix\Microsoft.FSharp.Dependencies\Microsoft.FSharp.Dependencies.swixproj
-
-
-
-
-
-
-
+
+ Swix\Microsoft.FSharp.IDE\Microsoft.FSharp.IDE.swixproj
+
@@ -60,23 +40,12 @@
AssemblySearchPaths={HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}
-
-
+ Properties="Configuration=$(Configuration);IsLangPack=%(VsixProjects.IsLangPack);FSharpPackageVersion=$(FSharpPackageVersion);OutputPath=$(VsixBuildLocation);DisableOutputPathCopying=true;$(CustomProps)" />
-
-
-
-
-
+ Properties="LocaleCode=%(SwixSetupProjects.LocaleCode);LocaleId=%(SwixSetupProjects.LocaleId);LocaleParentId=%(SwixSetupProjects.LocaleParentId);LocaleParentCulture=%(SwixSetupProjects.LocaleParentCulture);LocaleSpecificCulture=%(SwixSetupProjects.LocaleSpecificCulture);IsLangPack=%(SwixSetupProjects.IsLangPack);FSharpPackageVersion=$(FSharpPackageVersion);VSGeneralVersion=$(VSGeneralVersion);$(CustomProps)"/>
diff --git a/setup/packages.config b/setup/packages.config
index 036cb400855..f6caa5c2da4 100644
--- a/setup/packages.config
+++ b/setup/packages.config
@@ -1,17 +1,15 @@
-
-
-
-
+
+
-
-
-
+
+
+
diff --git a/setup/publish-assets.ps1 b/setup/publish-assets.ps1
index 40e0d166ce2..29604698b4c 100644
--- a/setup/publish-assets.ps1
+++ b/setup/publish-assets.ps1
@@ -27,10 +27,10 @@ try {
$requestUrl = ""
switch ($branchName) {
- "microbuild" {
+ "master" {
$requestUrl = "https://dotnet.myget.org/F/fsharp/vsix/upload"
}
- "microbuild-dev15.5" {
+ "dev15.9" {
$requestUrl = "https://dotnet.myget.org/F/fsharp-preview/vsix/upload"
}
default {
diff --git a/setup/resources/Microsoft.FSharp.NetSdk.Shim.props b/setup/resources/Microsoft.FSharp.NetSdk.Shim.props
index d29f23cf40c..203b37e5734 100644
--- a/setup/resources/Microsoft.FSharp.NetSdk.Shim.props
+++ b/setup/resources/Microsoft.FSharp.NetSdk.Shim.props
@@ -1,5 +1,6 @@
-
+
+
diff --git a/setup/resources/Microsoft.FSharp.NetSdk.Shim.targets b/setup/resources/Microsoft.FSharp.NetSdk.Shim.targets
index d2099442258..f5212ec914a 100644
--- a/setup/resources/Microsoft.FSharp.NetSdk.Shim.targets
+++ b/setup/resources/Microsoft.FSharp.NetSdk.Shim.targets
@@ -1,5 +1,6 @@
-
+
+
diff --git a/setup/resources/Microsoft.FSharp.Overrides.NetSdk.Shim.targets b/setup/resources/Microsoft.FSharp.Overrides.NetSdk.Shim.targets
new file mode 100644
index 00000000000..c7c7b8a477b
--- /dev/null
+++ b/setup/resources/Microsoft.FSharp.Overrides.NetSdk.Shim.targets
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/setup/resources/Microsoft.FSharp.Shim.targets b/setup/resources/Microsoft.FSharp.Shim.targets
index e54e9c4de78..62b798f5e78 100644
--- a/setup/resources/Microsoft.FSharp.Shim.targets
+++ b/setup/resources/Microsoft.FSharp.Shim.targets
@@ -1,5 +1,6 @@
-
-
-
+
+
+
+
diff --git a/setup/resources/Microsoft.Portable.FSharp.Shim.targets b/setup/resources/Microsoft.Portable.FSharp.Shim.targets
index 055c0d27415..5aecfd384fa 100644
--- a/setup/resources/Microsoft.Portable.FSharp.Shim.targets
+++ b/setup/resources/Microsoft.Portable.FSharp.Shim.targets
@@ -1,5 +1,6 @@
-
-
-
+
+
+
+
diff --git a/src/FSharp.Profiles.props b/src/FSharp.Profiles.props
new file mode 100644
index 00000000000..915781c9534
--- /dev/null
+++ b/src/FSharp.Profiles.props
@@ -0,0 +1,57 @@
+
+
+
+
+
+ $(DefineConstants);CROSS_PLATFORM_COMPILER
+ $(DefineConstants);ENABLE_MONO_SUPPORT
+ $(DefineConstants);BE_SECURITY_TRANSPARENT
+ $(DefineConstants);FX_LCIDFROMCODEPAGE
+
+
+
+ $(DefineConstants);NETSTANDARD1_6
+ $(DefineConstants);FX_NO_APP_DOMAINS
+ $(DefineConstants);FX_NO_ARRAY_LONG_LENGTH
+ $(DefineConstants);FX_NO_BEGINEND_READWRITE
+ $(DefineConstants);FX_NO_BINARY_SERIALIZATION
+ $(DefineConstants);FX_NO_CONVERTER
+ $(DefineConstants);FX_NO_DEFAULT_DEPENDENCY_TYPE
+ $(DefineConstants);FX_NO_CORHOST_SIGNER
+ $(DefineConstants);FX_NO_CRYPTO
+ $(DefineConstants);FX_NO_EVENTWAITHANDLE_IDISPOSABLE
+ $(DefineConstants);FX_NO_EXIT_CONTEXT_FLAGS
+ $(DefineConstants);FX_NO_HEAPTERMINATION
+ $(DefineConstants);FX_NO_LINKEDRESOURCES
+ $(DefineConstants);FX_NO_LOADER_OPTIMIZATION
+ $(DefineConstants);FX_NO_SIMPLIFIED_LOADER
+ $(DefineConstants);FX_NO_PARAMETERIZED_THREAD_START
+ $(DefineConstants);FX_NO_PDB_READER
+ $(DefineConstants);FX_NO_PDB_WRITER
+ $(DefineConstants);FX_NO_REFLECTION_MODULE_HANDLES
+ $(DefineConstants);FX_NO_REFLECTION_ONLY
+ $(DefineConstants);FX_NO_RUNTIMEENVIRONMENT
+ $(DefineConstants);FX_NO_SECURITY_PERMISSIONS
+ $(DefineConstants);FX_NO_SERVERCODEPAGES
+ $(DefineConstants);FX_NO_SYMBOLSTORE
+ $(DefineConstants);FX_NO_SYSTEM_CONFIGURATION
+ $(DefineConstants);FX_NO_THREAD
+ $(DefineConstants);FX_NO_THREADABORT
+ $(DefineConstants);FX_NO_WAITONE_MILLISECONDS
+ $(DefineConstants);FX_NO_WEB_CLIENT
+ $(DefineConstants);FX_NO_WIN_REGISTRY
+ $(DefineConstants);FX_NO_WINFORMS
+ $(DefineConstants);FX_REDUCED_EXCEPTIONS
+ $(DefineConstants);FX_REDUCED_CONSOLE
+ $(DefineConstants);FX_RESHAPED_REFEMIT
+ $(DefineConstants);FX_RESHAPED_CONSOLE
+ $(DefineConstants);FX_RESHAPED_GLOBALIZATION
+ $(DefineConstants);FX_RESHAPED_REFLECTION
+ $(DefineConstants);FX_JITTRACKING_ISSUE
+ $(DefineConstants);FX_NO_INDENTED_TEXT_WRITER
+ $(DefineConstants);FX_RESHAPED_REFLECTION_CORECLR
+ $(DefineConstants);FSI_TODO_NETCORE
+ $(OtherFlags) --simpleresolution
+
+
+
diff --git a/src/FSharpSource.Profiles.targets b/src/FSharpSource.Profiles.targets
index f5725f270ff..9069ebdb955 100644
--- a/src/FSharpSource.Profiles.targets
+++ b/src/FSharpSource.Profiles.targets
@@ -3,16 +3,17 @@
- $(DefineConstants);PREFERRED_UI_LANG
+ $(DefineConstants);CROSS_PLATFORM_COMPILER
$(DefineConstants);ENABLE_MONO_SUPPORT
$(DefineConstants);BE_SECURITY_TRANSPARENT
$(DefineConstants);FX_LCIDFROMCODEPAGE
+
+
+
- $(DefineConstants);FX_PORTABLE_OR_NETSTANDARD
$(DefineConstants);NETSTANDARD1_6
- $(DefineConstants);PREFERRED_UI_LANG
$(DefineConstants);FX_NO_APP_DOMAINS
$(DefineConstants);FX_NO_ARRAY_LONG_LENGTH
$(DefineConstants);FX_NO_BEGINEND_READWRITE
@@ -20,13 +21,11 @@
$(DefineConstants);FX_NO_CONVERTER
$(DefineConstants);FX_NO_DEFAULT_DEPENDENCY_TYPE
$(DefineConstants);FX_NO_CORHOST_SIGNER
- $(DefineConstants);FX_NO_CRYPTO
$(DefineConstants);FX_NO_EVENTWAITHANDLE_IDISPOSABLE
$(DefineConstants);FX_NO_EXIT_CONTEXT_FLAGS
$(DefineConstants);FX_NO_HEAPTERMINATION
$(DefineConstants);FX_NO_LINKEDRESOURCES
$(DefineConstants);FX_NO_LOADER_OPTIMIZATION
- $(DefineConstants);FX_NO_SIMPLIFIED_LOADER
$(DefineConstants);FX_NO_PARAMETERIZED_THREAD_START
$(DefineConstants);FX_NO_PDB_READER
$(DefineConstants);FX_NO_PDB_WRITER
@@ -43,17 +42,13 @@
$(DefineConstants);FX_NO_WEB_CLIENT
$(DefineConstants);FX_NO_WIN_REGISTRY
$(DefineConstants);FX_NO_WINFORMS
+ $(DefineConstants);FX_NO_INDENTED_TEXT_WRITER
$(DefineConstants);FX_REDUCED_EXCEPTIONS
$(DefineConstants);FX_REDUCED_CONSOLE
$(DefineConstants);FX_RESHAPED_REFEMIT
- $(DefineConstants);FX_RESHAPED_CONSOLE
$(DefineConstants);FX_RESHAPED_GLOBALIZATION
$(DefineConstants);FX_RESHAPED_REFLECTION
- $(DefineConstants);FX_JITTRACKING_ISSUE
- $(DefineConstants);FX_NO_INDENTED_TEXT_WRITER
- $(DefineConstants);FX_RESHAPED_REFLECTION_CORECLR
$(DefineConstants);FX_RESHAPED_MSBUILD
- $(DefineConstants);FSI_TODO_NETCORE
$(OtherFlags) --simpleresolution
netstandard1.6
diff --git a/src/FSharpSource.Settings.targets b/src/FSharpSource.Settings.targets
index 75071b1ca49..3f0d657a9b5 100644
--- a/src/FSharpSource.Settings.targets
+++ b/src/FSharpSource.Settings.targets
@@ -18,6 +18,9 @@
Debug
+
+
+
true
@@ -30,48 +33,58 @@
true
true
- false
-
- 2.3.0-beta2-61719-01
- 15.0
- 15.0.26201
- 1.3.1
- Microsoft.VSSDK.BuildTools.15.1.192
- 15.3.23
- 15.3.15
+
+ obj\$(Configuration)\$(TargetDotnetProfile)\
+ obj\$(Configuration)\$(TargetDotnetProfile)\$(PortableProfileBeingReferenced)\
obj\$(Configuration)\$(TargetDotnetProfile)\
obj\$(Configuration)\$(TargetDotnetProfile)\$(PortableProfileBeingReferenced)\
- 4.1.19
- 4.1.20
- 4.1.21
- 4.2.4
+
+ 10.1.0
+ 10.2.0
+ 10.2
+
3.5.0
3.5.0.0
$(FSharpSourcesRoot)\..\packages\NUnit.$(NUnitVersion)\lib\net45
- $(FSharpSourcesRoot)\..\packages\NUnit.ConsoleRunner\$(NUnitVersion)\tools\
+
+ true
+
+ $(MSBuildThisFileDirectory)..\Tools\dependencyUptake\PackageVersions.props
+
+
+ true
+ true
+ 0.2.0-beta-000081
+
+
+
+
+ false
+ true
true
$(FSharpSourcesRoot)\fsharp\msft.pubkey
true
true
-
+
+
true
false
true
- $(MSBuildThisFileDirectory)..\packages\$(VSSDK_BUILDTOOLS_VERSION)\tools\vssdk
- $(MSBuildThisFileDirectory)..\packages\$(VSSDK_BUILDTOOLS_VERSION)\tools\vssdk\bin
- $(MSBuildThisFileDirectory)..\packages\$(VSSDK_BUILDTOOLS_VERSION)\tools\vssdk\Microsoft.VsSDK.targets
- $(MSBuildThisFileDirectory)..\packages\$(VSSDK_BUILDTOOLS_VERSION)\tools\vssdk\inc
- $(MSBuildThisFileDirectory)..\packages\$(VSSDK_BUILDTOOLS_VERSION)\tools\vssdk\schemas\VSIXManifestSchema.xsd
+ $(MSBuildThisFileDirectory)..\packages\Microsoft.VSSDK.BuildTools.$(MicrosoftVSSDKBuildToolsPackageVersion)\tools\vssdk
+ $(MSBuildThisFileDirectory)..\packages\Microsoft.VSSDK.BuildTools.$(MicrosoftVSSDKBuildToolsPackageVersion)\tools\vssdk\bin
+ $(MSBuildThisFileDirectory)..\packages\Microsoft.VSSDK.BuildTools.$(MicrosoftVSSDKBuildToolsPackageVersion)\tools\vssdk\Microsoft.VsSDK.targets
+ $(MSBuildThisFileDirectory)..\packages\Microsoft.VSSDK.BuildTools.$(MicrosoftVSSDKBuildToolsPackageVersion)\tools\vssdk\inc
+ $(MSBuildThisFileDirectory)..\packages\Microsoft.VSSDK.BuildTools.$(MicrosoftVSSDKBuildToolsPackageVersion)\tools\vssdk\schemas\VSIXManifestSchema.xsd
@@ -83,6 +96,7 @@
full
+ portable
false
prompt
@@ -95,6 +109,7 @@
pdbonly
+ portable
true
false
@@ -106,6 +121,7 @@
full
+ portable
true
DEBUG;NO_STRONG_NAMES;$(DefineConstants)
@@ -116,18 +132,6 @@
3
-
- $(DefineConstants),VS_VERSION_DEV12=True
- $(DefineConstants);VS_VERSION_DEV12
- $(DefineConstants),VS_VERSION_DEV14=True
- $(DefineConstants);VS_VERSION_DEV14
- $(DefineConstants),VS_VERSION_DEV15=True
- $(DefineConstants);VS_VERSION_DEV15
-
- $(DefineConstants),VS_VERSION_DEV14=True
- $(DefineConstants);VS_VERSION_DEV14
-
-
$([System.DateTime]::Now.ToString(`yyMMdd`))
@@ -149,8 +153,21 @@
$(FSharpSourcesRoot)\..\packages\FSharp.Compiler.Tools.4.1.27\tools
+
+
+
+ 14.0.0.0
+
+
+
+
+
+
+
+ en;$(XlfLanguages)
+
diff --git a/src/FSharpSource.targets b/src/FSharpSource.targets
index 844848dc4c7..1d513b81e87 100644
--- a/src/FSharpSource.targets
+++ b/src/FSharpSource.targets
@@ -3,97 +3,60 @@
- 4.4.1.0
+ $(MSBuildThisFileDirectory)..\
-
-
-
- false
- true
-
-
-
-
-
-
-
-
- true
- false
- $(FSCoreVersion)
- fs
-
-
-
-
-
-
- true
- true
- $(FSCoreVersion)
-
- 15.4.1.0
- fs
-
-
-
-
-
-
-
- true
- $(FSharpSourcesRoot)\fsharp\msft.pubkey
- true
- true
- $(FSCoreVersion)
- fs
-
-
-
-
-
-
-
- NO_STRONG_NAMES;$(DefineConstants)
- $(FSCoreVersion)
- fs
-
-
-
+
+ fs
+
-
- $(OtherFlags) --version:"$(MicroBuildAssemblyVersion)"
+
+
+
+ true
+ false
+ false
+ NO_STRONG_NAMES;$(DefineConstants)
-
- $(IntermediateOutputPath)source_link.json
+
+
+ $(FSharpSourcesRoot)\fsharp\test.snk
+ false
+ STRONG_NAME_FSHARP_COMPILER_WITH_TEST_KEY;$(DefineConstants)
-
- NO_STRONG_NAMES;$(DefineConstants)
+
+
+ $(FSCoreVersion)
+ $(OtherFlags) --version:"$(MicroBuildAssemblyVersion)"
+
+
+
+ $(IntermediateOutputPath)source_link.json
+
MSBUILD_AT_LEAST_14;$(DefineConstants)
+
-
false
$(FSharpSourcesRoot)\..\packages
- 2.6.2
- 2.6.2.0
+ 3.0.0-alpha3
+ 3.0.0.0
$(FSharpSourcesRoot)\..\packages\FsCheck.$(FsCheckVersion)\lib\
- v4.5
+ v4.6
@@ -130,15 +93,19 @@
fsharp30\$(TargetDotnetProfile)
fsharp31\$(TargetDotnetProfile)
fsharp40\$(TargetDotnetProfile)
- obj\$(TargetFrameworkOutputDirectory)\
+ $(TargetDotnetProfile)
+ obj\$(Configuration)\$(TargetFrameworkOutputDirectory)\
$(FSharpSourcesRoot)\..\$(Configuration)\$(ProtoFlavour)\bin
+
+ $([System.IO.File]::ReadAllText('$(MSBuildThisFileDirectory)..\DotnetCLIToolsVersion.txt').Trim())
+ $(MSBuildThisFileDirectory)..\Tools\dotnet20\sdk\$(DotnetSdkVersion)\FSharp
+
- $(FSharpSourcesRoot)\..\Tools\dotnet20\sdk\2.0.3-servicing-007056\FSharp
..\packages\FSharp.Compiler.Tools.4.1.27\tools\Microsoft.FSharp.Targets
@@ -160,8 +127,8 @@
$(FSharpSourcesRoot)\..\$(Configuration)\$(TargetFrameworkOutputDirectory)\bin
$(FSharpSourcesRoot)\..\Proto\$(ProtoFlavour)\bin
- fsc-proto.exe
- ..\Proto\$(ProtoFlavour)\bin\Microsoft.Portable.FSharp-proto.targets
+ fsc.exe
+ ..\Proto\$(ProtoFlavour)\bin\Microsoft.Portable.FSharp.targets
@@ -169,8 +136,8 @@
$(FSharpSourcesRoot)\..\$(Configuration)\$(TargetFrameworkOutputDirectory)\bin
$(FSharpSourcesRoot)\..\Proto\$(ProtoFlavour)\bin
- fsc-proto.exe
- ..\Proto\$(ProtoFlavour)\bin\Microsoft.FSharp-proto.targets
+ fsc.exe
+ ..\Proto\$(ProtoFlavour)\bin\Microsoft.FSharp.Targets
@@ -206,8 +173,8 @@
$(FSharpSourcesRoot)\..\.nuget\
-ConfigFile "$(NuGetConfigFile)"
- "$(NuGetToolPath)NuGet.exe install -OutputDirectory "$(PackagesDir)" -Config "$(NuGetToolPath)NuGet.Config"
- "$(NuGetToolPath)NuGet.exe" restore -OutputDirectory "$(PackagesDir)" -Config "$(NuGetToolPath)NuGet.Config"
+ "$(NuGetToolPath)NuGet.exe install -OutputDirectory "$(PackagesDir)" -Config "$(NuGetToolPath)..\NuGet.Config"
+ "$(NuGetToolPath)NuGet.exe" restore -OutputDirectory "$(PackagesDir)" -Config "$(NuGetToolPath)..\NuGet.Config"
@@ -248,12 +215,12 @@
-
+
-
+
@@ -284,15 +251,7 @@
-
-
-
-
-
-
-
-
-
+
@@ -340,17 +299,17 @@
@@ -380,42 +339,8 @@
-
- $(IntermediateOutputPath)$(MSBuildProjectName).InternalsVisibleTo$(DefaultLanguageSourceExtension)
-
-
-
-
- false
-
-
-
-
-
- <_PublicKey>002400000480000094000000060200000024000052534131000400000100010007D1FA57C4AED9F0A32E84AA0FAEFD0DE9E8FD6AEC8F87FB03766C834C99921EB23BE79AD9D5DCC1DD9AD236132102900B723CF980957FC4E177108FC607774F29E8320E92EA05ECE4E821C0A5EFE8F1645C4C0C93C1AB99285D622CAA652C1DFAD63D745D6F2DE5F17E5EAF0FC4963D261C8A12436518206DC093344D5AD293
-
-
- <_InternalsVisibleToAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute">
- <_Parameter1 Condition="'%(InternalsVisibleTo.Key)' != ''">%(InternalsVisibleTo.Identity), PublicKey=%(InternalsVisibleTo.Key)
- <_Parameter1 Condition="'%(InternalsVisibleTo.Key)' == ''">%(InternalsVisibleTo.Identity), PublicKey=$(_PublicKey)
-
-
-
-
-
-
-
-
-
-
+
+
diff --git a/src/Microbuild.Settings.targets b/src/Microbuild.Settings.targets
index 2c3ff270c3c..6e11e3f2206 100644
--- a/src/Microbuild.Settings.targets
+++ b/src/Microbuild.Settings.targets
@@ -4,250 +4,10 @@
0.2.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copied: " + destinationFile, MessageImportance.High);
- }
-
- if (isDefaultLocale)
- {
- Log.LogMessage("Skipping localized files (default locale)", MessageImportance.High);
- }
- else
- {
- Log.LogMessage("Copying localized files", MessageImportance.High);
-
- foreach (var localizedFileItem in LocalizedFiles)
- {
- var fileName = new FileInfo(localizedFileItem).Name;
- var sourceFile = Path.Combine(absoluteOutDir, "localize", lang, TemplateCategory, AssemblyName, fileName);
- var destinationFile = Path.Combine(tempZipFolder, fileName);
-
- if (File.Exists(sourceFile) == false)
- {
- throw new FileNotFoundException("Localized file not found: " + sourceFile, sourceFile);
- }
-
- File.Delete(destinationFile);
- File.Copy(sourceFile, destinationFile);
- Log.LogMessage(" > Copied: " + destinationFile, MessageImportance.High);
- }
- }
-
- var templateOutputPath = isDefaultLocale
- ? Path.Combine(absoluteOutDir, TemplateCategory, AssemblyName)
- : Path.Combine(absoluteOutDir, "localize", lang, TemplateCategory, AssemblyName);
-
- if (Directory.Exists(templateOutputPath) == false)
- {
- Directory.CreateDirectory(templateOutputPath);
- }
-
- var templateOutputFile = Path.Combine(templateOutputPath, AssemblyName + ".zip");
-
- if (File.Exists(templateOutputFile))
- {
- File.Delete(templateOutputFile);
- }
-
- Log.LogMessage("Zipping template to: " + templateOutputFile, MessageImportance.High);
- ZipFile.CreateFromDirectory(tempZipFolder, templateOutputFile);
- Directory.Delete(tempZipFolder, true);
-
- Log.LogMessage("---------------------------------------------------", MessageImportance.High);
- Log.LogMessage(string.Empty, MessageImportance.High);
- }
- ]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ]");
- stringBuilder.AppendLine("[]");
- stringBuilder.AppendLine("[]");
- stringBuilder.AppendLine("do ()");
- break;
- case "vb":
- stringBuilder.AppendLine("");
- stringBuilder.AppendLine("");
- stringBuilder.AppendLine("");
- break;
- default:
- throw new ArgumentException("Language " + Language + " is not supported");
- }
-
- var fileContents = stringBuilder.ToString();
- AssemblyFileVersionPath = Path.Combine(Path.GetTempPath(), string.Join(".", AssemblyName, ProductVersion, "AssemblyFileVersion", Language));
-
- if (File.Exists(AssemblyFileVersionPath) && File.ReadAllText(AssemblyFileVersionPath) == fileContents)
- {
- Log.LogMessage("Assembly file version already exists. Using: " + AssemblyFileVersionPath, MessageImportance.High);
- }
- else
- {
- Log.LogMessage("Generating AssemblyFileVersion file: " + AssemblyFileVersionPath, MessageImportance.High);
- File.WriteAllText(AssemblyFileVersionPath, fileContents);
- }
- ]]>
-
-
-
-
-
-
-
-
-
-
-
-
- ENU
-
-
-
-
-
-
-
-
- $([System.DateTime]::Now.ToString(yyyyMMdd.0))
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(BUILD_BUILDNUMBER.Split('.')[0].Substring(2))
- $(BUILD_BUILDNUMBER.Split('.')[1].PadLeft(2, '0'))
- $(BuildTimeStamp_Day)$(BuildTimeStamp_Number)
- $(MicroBuildAssemblyVersion.Substring(0, $(MicroBuildAssemblyVersion.LastIndexOf('.'))))
- $(MicroBuildAssemblyVersion_WithoutRevision).$(BuildTimeStamp)
-
-
+
diff --git a/src/absil/il.fs b/src/absil/il.fs
index 6f5f0d873b3..b1bf2fdf920 100644
--- a/src/absil/il.fs
+++ b/src/absil/il.fs
@@ -7,15 +7,21 @@ module Microsoft.FSharp.Compiler.AbstractIL.IL
#nowarn "346" // The struct, record or union type 'IlxExtensionType' has an explicit implementation of 'Object.Equals'. ...
-open Internal.Utilities
-open Microsoft.FSharp.Compiler.AbstractIL
-open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics
-open Microsoft.FSharp.Compiler.AbstractIL.Internal
-open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library
+open System
+open System.Diagnostics
+open System.IO
open System.Collections
open System.Collections.Generic
open System.Collections.Concurrent
open System.Runtime.CompilerServices
+open System.Reflection
+
+open Microsoft.FSharp.Compiler.AbstractIL
+open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics
+open Microsoft.FSharp.Compiler.AbstractIL.Internal
+open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library
+
+open Internal.Utilities
let logging = false
@@ -41,7 +47,7 @@ let _ = if logging then dprintn "* warning: Il.logging is on"
let int_order = LanguagePrimitives.FastGenericComparer
-let notlazy v = Lazy.CreateFromValue v
+let notlazy v = Lazy<_>.CreateFromValue v
/// A little ugly, but the idea is that if a data structure does not
/// contain lazy values then we don't add laziness. So if the thing to map
@@ -70,25 +76,25 @@ type PrimaryAssembly =
// --------------------------------------------------------------------
let splitNameAt (nm:string) idx =
- if idx < 0 then failwith "splitNameAt: idx < 0";
+ if idx < 0 then failwith "splitNameAt: idx < 0"
let last = nm.Length - 1
- if idx > last then failwith "splitNameAt: idx > last";
- (nm.Substring(0,idx)),
- (if idx < last then nm.Substring (idx+1,last - idx) else "")
+ if idx > last then failwith "splitNameAt: idx > last"
+ (nm.Substring(0, idx)),
+ (if idx < last then nm.Substring (idx+1, last - idx) else "")
let rec splitNamespaceAux (nm:string) =
match nm.IndexOf '.' with
| -1 -> [nm]
| idx ->
- let s1,s2 = splitNameAt nm idx
+ let s1, s2 = splitNameAt nm idx
s1::splitNamespaceAux s2
/// Global State. All namespace splits ever seen
// ++GLOBAL MUTABLE STATE (concurrency-safe)
-let memoizeNamespaceTable = new ConcurrentDictionary()
+let memoizeNamespaceTable = new ConcurrentDictionary()
// ++GLOBAL MUTABLE STATE (concurrency-safe)
-let memoizeNamespaceRightTable = new ConcurrentDictionary()
+let memoizeNamespaceRightTable = new ConcurrentDictionary()
let splitNamespace nm =
@@ -98,7 +104,7 @@ let splitNamespaceMemoized nm = splitNamespace nm
// ++GLOBAL MUTABLE STATE (concurrency-safe)
let memoizeNamespaceArrayTable =
- Concurrent.ConcurrentDictionary()
+ Concurrent.ConcurrentDictionary()
let splitNamespaceToArray nm =
memoizeNamespaceArrayTable.GetOrAdd(nm, fun nm ->
@@ -107,53 +113,52 @@ let splitNamespaceToArray nm =
let splitILTypeName (nm:string) =
match nm.LastIndexOf '.' with
- | -1 -> [],nm
+ | -1 -> [], nm
| idx ->
- let s1,s2 = splitNameAt nm idx
- splitNamespace s1,s2
+ let s1, s2 = splitNameAt nm idx
+ splitNamespace s1, s2
let emptyStringArray = ([| |] : string[])
// Duplicate of comment in import.fs:
// The type names that flow to the point include the "mangled" type names used for static parameters for provided types.
-// For example,
+// For example,
// Foo.Bar,"1.0"
// This is because the ImportSystemType code goes via Abstract IL type references. Ultimately this probably isn't
// the best way to do things.
let splitILTypeNameWithPossibleStaticArguments (nm:string) =
- let nm,suffix =
+ let nm, suffix =
match nm.IndexOf ',' with
| -1 -> nm, None
| idx -> let s1, s2 = splitNameAt nm idx in s1, Some s2
- let nsp,nm =
+ let nsp, nm =
match nm.LastIndexOf '.' with
- | -1 -> emptyStringArray,nm
+ | -1 -> emptyStringArray, nm
| idx ->
- let s1,s2 = splitNameAt nm idx
- splitNamespaceToArray s1,s2
+ let s1, s2 = splitNameAt nm idx
+ splitNamespaceToArray s1, s2
nsp, (match suffix with None -> nm | Some s -> nm + "," + s)
(*
splitILTypeNameWithPossibleStaticArguments "Foo" = ([| |], "Foo")
splitILTypeNameWithPossibleStaticArguments "Foo.Bar" = ([| "Foo" |], "Bar")
-splitILTypeNameWithPossibleStaticArguments "Foo.Bar,3" = ([| "Foo" |], "Bar,3")
+splitILTypeNameWithPossibleStaticArguments "Foo.Bar,3" = ([| "Foo" |], "Bar, 3")
splitILTypeNameWithPossibleStaticArguments "Foo.Bar," = ([| "Foo" |], "Bar,")
splitILTypeNameWithPossibleStaticArguments "Foo.Bar,\"1.0\"" = ([| "Foo" |], "Bar,\"1.0\"")
splitILTypeNameWithPossibleStaticArguments "Foo.Bar.Bar,\"1.0\"" = ([| "Foo"; "Bar" |], "Bar,\"1.0\"")
*)
-let unsplitTypeName (ns,n) =
+let unsplitTypeName (ns, n) =
match ns with
| [] -> String.concat "." ns + "." + n
| _ -> n
-let splitTypeNameRightAux nm =
- if String.contains nm '.' then
- let idx = String.rindex nm '.'
- let s1,s2 = splitNameAt nm idx
- Some s1,s2
- else None, nm
+let splitTypeNameRightAux (nm:string) =
+ let idx = nm.LastIndexOf '.'
+ if idx = -1 then None, nm else
+ let s1, s2 = splitNameAt nm idx
+ Some s1, s2
let splitTypeNameRight nm =
memoizeNamespaceRightTable.GetOrAdd(nm, splitTypeNameRightAux)
@@ -163,21 +168,31 @@ let splitTypeNameRight nm =
// --------------------------------------------------------------------
/// This is used to store event, property and field maps.
-type LazyOrderedMultiMap<'Key,'Data when 'Key : equality>(keyf : 'Data -> 'Key, lazyItems : Lazy<'Data list>) =
+type LazyOrderedMultiMap<'Key, 'Data when 'Key : equality>(keyf : 'Data -> 'Key, lazyItems : Lazy<'Data list>) =
let quickMap=
lazyItems |> lazyMap (fun entries ->
- let t = new Dictionary<_,_>(entries.Length, HashIdentity.Structural)
- do entries |> List.iter (fun y -> let key = keyf y in t.[key] <- y :: (if t.ContainsKey(key) then t.[key] else []))
+ let t = new Dictionary<_, _>(entries.Length, HashIdentity.Structural)
+ do entries |> List.iter (fun y ->
+ let key = keyf y
+ let v =
+ match t.TryGetValue(key) with
+ | true, v -> v
+ | _ -> []
+ t.[key] <- y :: v)
t)
member self.Entries() = lazyItems.Force()
- member self.Add(y) = new LazyOrderedMultiMap<'Key,'Data>(keyf, lazyItems |> lazyMap (fun x -> y :: x))
+ member self.Add(y) = new LazyOrderedMultiMap<'Key, 'Data>(keyf, lazyItems |> lazyMap (fun x -> y :: x))
- member self.Filter(f) = new LazyOrderedMultiMap<'Key,'Data>(keyf, lazyItems |> lazyMap (List.filter f))
+ member self.Filter(f) = new LazyOrderedMultiMap<'Key, 'Data>(keyf, lazyItems |> lazyMap (List.filter f))
- member self.Item with get(x) = let t = quickMap.Force() in if t.ContainsKey x then t.[x] else []
+ member self.Item
+ with get(x) =
+ match quickMap.Force().TryGetValue(x) with
+ | true, v -> v
+ | _ -> []
//---------------------------------------------------------------------
@@ -193,8 +208,10 @@ let b3 n = ((n >>> 24) &&& 0xFF)
module SHA1 =
+
let inline (>>>&) (x:int) (y:int) = int32 (uint32 x >>> y)
- let f(t,b,c,d) =
+
+ let f(t, b, c, d) =
if t < 20 then (b &&& c) ||| ((~~~b) &&& d)
elif t < 40 then b ^^^ c ^^^ d
elif t < 60 then (b &&& c) ||| (b &&& d) ||| (c &&& d)
@@ -213,9 +230,9 @@ module SHA1 =
type SHAStream =
- { stream: byte[];
- mutable pos: int;
- mutable eof: bool; }
+ { stream: byte[]
+ mutable pos: int
+ mutable eof: bool }
let rotLeft32 x n = (x <<< n) ||| (x >>>& (32-n))
@@ -275,7 +292,7 @@ module SHA1 =
d <- h3
e <- h4
for t = 0 to 79 do
- let temp = (rotLeft32 a 5) + f(t,b,c,d) + e + w.[t] + k(t)
+ let temp = (rotLeft32 a 5) + f(t, b, c, d) + e + w.[t] + k(t)
e <- d
d <- c
c <- rotLeft32 b 30
@@ -286,10 +303,10 @@ module SHA1 =
h2 <- h2 + c
h3 <- h3 + d
h4 <- h4 + e
- h0,h1,h2,h3,h4
+ h0, h1, h2, h3, h4
let sha1HashBytes s =
- let (_h0,_h1,_h2,h3,h4) = sha1Hash { stream = s; pos = 0; eof = false } // the result of the SHA algorithm is stored in registers 3 and 4
+ let (_h0, _h1, _h2, h3, h4) = sha1Hash { stream = s; pos = 0; eof = false } // the result of the SHA algorithm is stored in registers 3 and 4
Array.map byte [| b0 h4; b1 h4; b2 h4; b3 h4; b0 h3; b1 h3; b2 h3; b3 h3; |]
@@ -305,87 +322,79 @@ type Locale = string
[]
type PublicKey =
+
| PublicKey of byte[]
+
| PublicKeyToken of byte[]
+
member x.IsKey=match x with PublicKey _ -> true | _ -> false
+
member x.IsKeyToken=match x with PublicKeyToken _ -> true | _ -> false
+
member x.Key=match x with PublicKey b -> b | _ -> invalidOp "not a key"
+
member x.KeyToken=match x with PublicKeyToken b -> b | _ -> invalidOp"not a key token"
member x.ToToken() =
match x with
| PublicKey bytes -> SHA1.sha1HashBytes bytes
| PublicKeyToken token -> token
+
static member KeyAsToken(k) = PublicKeyToken(PublicKey(k).ToToken())
[]
type AssemblyRefData =
- { assemRefName: string;
- assemRefHash: byte[] option;
- assemRefPublicKeyInfo: PublicKey option;
- assemRefRetargetable: bool;
- assemRefVersion: ILVersionInfo option;
- assemRefLocale: Locale option; }
+ { assemRefName: string
+ assemRefHash: byte[] option
+ assemRefPublicKeyInfo: PublicKey option
+ assemRefRetargetable: bool
+ assemRefVersion: ILVersionInfo option
+ assemRefLocale: Locale option }
/// Global state: table of all assembly references keyed by AssemblyRefData.
let AssemblyRefUniqueStampGenerator = new UniqueStampGenerator()
-let compareVersions x y =
- match x,y with
- | None, None -> 0
- | Some _, None -> 1
- | None, Some _ -> -1
- | Some(x1,x2,x3,x4), Some(y1,y2,y3,y4) ->
- if y1>x1 then 1
- elif y1x2 then 1
- elif y2x3 then 1
- elif y3x4 then 1
- elif y4]
-type ILAssemblyRef(data) =
+type ILAssemblyRef(data) =
let uniqueStamp = AssemblyRefUniqueStampGenerator.Encode(data)
+
member x.Name=data.assemRefName
+
member x.Hash=data.assemRefHash
+
member x.PublicKey=data.assemRefPublicKeyInfo
+
member x.Retargetable=data.assemRefRetargetable
- member x.Version=GetReferenceUnifiedVersion data
+
+ member x.Version=data.assemRefVersion
+
member x.Locale=data.assemRefLocale
+
member x.UniqueStamp=uniqueStamp
+
override x.GetHashCode() = uniqueStamp
+
override x.Equals(yobj) = ((yobj :?> ILAssemblyRef).UniqueStamp = uniqueStamp)
+
interface System.IComparable with
override x.CompareTo(yobj) = compare (yobj :?> ILAssemblyRef).UniqueStamp uniqueStamp
- static member Create(name,hash,publicKey,retargetable,version,locale) =
+
+ static member Create(name, hash, publicKey, retargetable, version, locale) =
ILAssemblyRef
- { assemRefName=name;
- assemRefHash=hash;
- assemRefPublicKeyInfo=publicKey;
- assemRefRetargetable=retargetable;
- assemRefVersion=version;
- assemRefLocale=locale; }
-
+ { assemRefName=name
+ assemRefHash=hash
+ assemRefPublicKeyInfo=publicKey
+ assemRefRetargetable=retargetable
+ assemRefVersion=version
+ assemRefLocale=locale }
+
static member FromAssemblyName (aname:System.Reflection.AssemblyName) =
+
let locale = None
- //match aname.CultureInfo with
- // | null -> None
- // | x -> Some x.Name
+
let publicKey =
match aname.GetPublicKey() with
| null | [| |] ->
@@ -398,29 +407,27 @@ type ILAssemblyRef(data) =
let version =
match aname.Version with
| null -> None
- | v -> Some (uint16 v.Major,uint16 v.Minor,uint16 v.Build,uint16 v.Revision)
+ | v -> Some (uint16 v.Major, uint16 v.Minor, uint16 v.Build, uint16 v.Revision)
let retargetable = aname.Flags = System.Reflection.AssemblyNameFlags.Retargetable
- ILAssemblyRef.Create(aname.Name,None,publicKey,retargetable,version,locale)
+ ILAssemblyRef.Create(aname.Name, None, publicKey, retargetable, version, locale)
-
-
member aref.QualifiedName =
let b = new System.Text.StringBuilder(100)
let add (s:string) = (b.Append(s) |> ignore)
let addC (s:char) = (b.Append(s) |> ignore)
- add(aref.Name);
+ add(aref.Name)
match aref.Version with
| None -> ()
- | Some (a,b,c,d) ->
- add ", Version=";
+ | Some (a, b, c, d) ->
+ add ", Version="
add (string (int a))
- add ".";
+ add "."
add (string (int b))
- add ".";
+ add "."
add (string (int c))
- add ".";
+ add "."
add (string (int d))
add ", Culture="
match aref.Locale with
@@ -449,16 +456,19 @@ type ILAssemblyRef(data) =
[]
type ILModuleRef =
- { name: string;
- hasMetadata: bool;
- hash: byte[] option; }
- static member Create(name,hasMetadata,hash) =
- { name=name;
- hasMetadata= hasMetadata;
+ { name: string
+ hasMetadata: bool
+ hash: byte[] option }
+
+ static member Create(name, hasMetadata, hash) =
+ { name=name
+ hasMetadata= hasMetadata
hash=hash }
member x.Name=x.name
+
member x.HasMetadata=x.hasMetadata
+
member x.Hash=x.hash
[]
@@ -467,38 +477,43 @@ type ILScopeRef =
| Local
| Module of ILModuleRef
| Assembly of ILAssemblyRef
+
member x.IsLocalRef = match x with ILScopeRef.Local -> true | _ -> false
+
member x.IsModuleRef = match x with ILScopeRef.Module _ -> true | _ -> false
+
member x.IsAssemblyRef= match x with ILScopeRef.Assembly _ -> true | _ -> false
+
member x.ModuleRef = match x with ILScopeRef.Module x -> x | _ -> failwith "not a module reference"
- member x.AssemblyRef = match x with ILScopeRef.Assembly x -> x | _ -> failwith "not an assembly reference"
- member scoref.QualifiedName =
- match scoref with
- | ILScopeRef.Local -> ""
- | ILScopeRef.Module mref -> "module "^mref.Name
- | ILScopeRef.Assembly aref when aref.Name = "mscorlib" -> ""
- | ILScopeRef.Assembly aref -> aref.QualifiedName
+ member x.AssemblyRef = match x with ILScopeRef.Assembly x -> x | _ -> failwith "not an assembly reference"
- member scoref.QualifiedNameWithNoShortPrimaryAssembly =
- match scoref with
+ member x.QualifiedName =
+ match x with
| ILScopeRef.Local -> ""
| ILScopeRef.Module mref -> "module "+mref.Name
| ILScopeRef.Assembly aref -> aref.QualifiedName
type ILArrayBound = int32 option
+
type ILArrayBounds = ILArrayBound * ILArrayBound
[]
type ILArrayShape =
+
| ILArrayShape of ILArrayBounds list (* lobound/size pairs *)
+
member x.Rank = (let (ILArrayShape l) = x in l.Length)
+
static member SingleDimensional = ILArrayShapeStatics.SingleDimensional
- static member FromRank n = if n = 1 then ILArrayShape.SingleDimensional else ILArrayShape(List.replicate n (Some 0,None))
+
+ static member FromRank n = if n = 1 then ILArrayShape.SingleDimensional else ILArrayShape(List.replicate n (Some 0, None))
and ILArrayShapeStatics() =
+
static let singleDimensional = ILArrayShape [(Some 0, None)]
+
static member SingleDimensional = singleDimensional
/// Calling conventions. These are used in method pointer types.
@@ -519,48 +534,61 @@ type ILThisConvention =
[]
type ILCallingConv =
+
| Callconv of ILThisConvention * ILArgConvention
- member x.ThisConv = let (Callconv(a,_b)) = x in a
- member x.BasicConv = let (Callconv(_a,b)) = x in b
+
+ member x.ThisConv = let (Callconv(a, _b)) = x in a
+
+ member x.BasicConv = let (Callconv(_a, b)) = x in b
+
member x.IsInstance = match x.ThisConv with ILThisConvention.Instance -> true | _ -> false
+
member x.IsInstanceExplicit = match x.ThisConv with ILThisConvention.InstanceExplicit -> true | _ -> false
+
member x.IsStatic = match x.ThisConv with ILThisConvention.Static -> true | _ -> false
static member Instance = ILCallingConvStatics.Instance
+
static member Static = ILCallingConvStatics.Static
/// Static storage to amortize the allocation of ILCallingConv.Instance and ILCallingConv.Static.
and ILCallingConvStatics() =
- static let instanceCallConv = Callconv(ILThisConvention.Instance,ILArgConvention.Default)
- static let staticCallConv = Callconv(ILThisConvention.Static,ILArgConvention.Default)
+
+ static let instanceCallConv = Callconv(ILThisConvention.Instance, ILArgConvention.Default)
+
+ static let staticCallConv = Callconv(ILThisConvention.Static, ILArgConvention.Default)
+
static member Instance = instanceCallConv
+
static member Static = staticCallConv
type ILBoxity =
- | AsObject
- | AsValue
-
+ | AsObject
+ | AsValue
// IL type references have a pre-computed hash code to enable quick lookup tables during binary generation.
-[]
+[]
type ILTypeRef =
- { trefScope: ILScopeRef;
- trefEnclosing: string list;
- trefName: string;
+ { trefScope: ILScopeRef
+ trefEnclosing: string list
+ trefName: string
hashCode : int
mutable asBoxedType: ILType }
- static member Create(scope,enclosing,name) =
+ static member Create(scope, enclosing, name) =
let hashCode = hash scope * 17 ^^^ (hash enclosing * 101 <<< 1) ^^^ (hash name * 47 <<< 2)
- { trefScope=scope;
- trefEnclosing= enclosing;
- trefName=name;
- hashCode=hashCode;
+ { trefScope=scope
+ trefEnclosing=enclosing
+ trefName=name
+ hashCode=hashCode
asBoxedType = Unchecked.defaultof<_> }
member x.Scope = x.trefScope
+
member x.Enclosing = x.trefEnclosing
+
member x.Name = x.trefName
+
member x.ApproxId = x.hashCode
member x.AsBoxedType (tspec:ILTypeSpec) =
@@ -576,13 +604,16 @@ type ILTypeRef =
ILType.Boxed tspec
override x.GetHashCode() = x.hashCode
+
override x.Equals(yobj) =
let y = (yobj :?> ILTypeRef)
(x.ApproxId = y.ApproxId) &&
(x.Scope = y.Scope) &&
(x.Name = y.Name) &&
(x.Enclosing = y.Enclosing)
+
interface System.IComparable with
+
override x.CompareTo(yobj) =
let y = (yobj :?> ILTypeRef)
let c = compare x.ApproxId y.ApproxId
@@ -598,48 +629,58 @@ type ILTypeRef =
member tref.BasicQualifiedName =
(String.concat "+" (tref.Enclosing @ [ tref.Name ] )).Replace(",", @"\,")
- member tref.AddQualifiedNameExtensionWithNoShortPrimaryAssembly(basic) =
- let sco = tref.Scope.QualifiedNameWithNoShortPrimaryAssembly
+ member tref.AddQualifiedNameExtension(basic) =
+ let sco = tref.Scope.QualifiedName
if sco = "" then basic else String.concat ", " [basic;sco]
- member tref.QualifiedNameWithNoShortPrimaryAssembly =
- tref.AddQualifiedNameExtensionWithNoShortPrimaryAssembly(tref.BasicQualifiedName)
-
member tref.QualifiedName =
- let basic = tref.BasicQualifiedName
- let sco = tref.Scope.QualifiedName
- if sco = "" then basic else String.concat ", " [basic;sco]
+ tref.AddQualifiedNameExtension(tref.BasicQualifiedName)
+ /// For debugging
+ []
+ member x.DebugText = x.ToString()
+ /// For debugging
override x.ToString() = x.FullName
-and
- []
+and []
ILTypeSpec =
- { tspecTypeRef: ILTypeRef;
+ { tspecTypeRef: ILTypeRef
/// The type instantiation if the type is generic.
tspecInst: ILGenericArgs }
+
member x.TypeRef=x.tspecTypeRef
+
member x.Scope=x.TypeRef.Scope
+
member x.Enclosing=x.TypeRef.Enclosing
+
member x.Name=x.TypeRef.Name
+
member x.GenericArgs=x.tspecInst
- static member Create(tref,inst) = { tspecTypeRef =tref; tspecInst=inst }
- override x.ToString() = x.TypeRef.ToString() + if isNil x.GenericArgs then "" else "<...>"
+
+ static member Create(tref, inst) = { tspecTypeRef =tref; tspecInst=inst }
+
member x.BasicQualifiedName =
let tc = x.TypeRef.BasicQualifiedName
if isNil x.GenericArgs then
tc
else
- tc + "[" + String.concat "," (x.GenericArgs |> List.map (fun arg -> "[" + arg.QualifiedNameWithNoShortPrimaryAssembly + "]")) + "]"
+ tc + "[" + String.concat "," (x.GenericArgs |> List.map (fun arg -> "[" + arg.QualifiedName + "]")) + "]"
- member x.AddQualifiedNameExtensionWithNoShortPrimaryAssembly(basic) =
- x.TypeRef.AddQualifiedNameExtensionWithNoShortPrimaryAssembly(basic)
+ member x.AddQualifiedNameExtension(basic) =
+ x.TypeRef.AddQualifiedNameExtension(basic)
member x.FullName=x.TypeRef.FullName
-and []
+ /// For debugging
+ []
+ member x.DebugText = x.ToString()
+
+ override x.ToString() = x.TypeRef.ToString() + if isNil x.GenericArgs then "" else "<...>"
+
+and []
ILType =
| Void
| Array of ILArrayShape * ILType
@@ -654,124 +695,173 @@ and []
member x.BasicQualifiedName =
match x with
| ILType.TypeVar n -> "!" + string n
- | ILType.Modified(_,_ty1,ty2) -> ty2.BasicQualifiedName
- | ILType.Array (ILArrayShape(s),ty) -> ty.BasicQualifiedName + "[" + System.String(',',s.Length-1) + "]"
+ | ILType.Modified(_, _ty1, ty2) -> ty2.BasicQualifiedName
+ | ILType.Array (ILArrayShape(s), ty) -> ty.BasicQualifiedName + "[" + System.String(',', s.Length-1) + "]"
| ILType.Value tr | ILType.Boxed tr -> tr.BasicQualifiedName
| ILType.Void -> "void"
| ILType.Ptr _ty -> failwith "unexpected pointer type"
| ILType.Byref _ty -> failwith "unexpected byref type"
| ILType.FunctionPointer _mref -> failwith "unexpected function pointer type"
- member x.AddQualifiedNameExtensionWithNoShortPrimaryAssembly(basic) =
+ member x.AddQualifiedNameExtension(basic) =
match x with
| ILType.TypeVar _n -> basic
- | ILType.Modified(_,_ty1,ty2) -> ty2.AddQualifiedNameExtensionWithNoShortPrimaryAssembly(basic)
- | ILType.Array (ILArrayShape(_s),ty) -> ty.AddQualifiedNameExtensionWithNoShortPrimaryAssembly(basic)
- | ILType.Value tr | ILType.Boxed tr -> tr.AddQualifiedNameExtensionWithNoShortPrimaryAssembly(basic)
+ | ILType.Modified(_, _ty1, ty2) -> ty2.AddQualifiedNameExtension(basic)
+ | ILType.Array (ILArrayShape(_s), ty) -> ty.AddQualifiedNameExtension(basic)
+ | ILType.Value tr | ILType.Boxed tr -> tr.AddQualifiedNameExtension(basic)
| ILType.Void -> failwith "void"
| ILType.Ptr _ty -> failwith "unexpected pointer type"
| ILType.Byref _ty -> failwith "unexpected byref type"
| ILType.FunctionPointer _mref -> failwith "unexpected function pointer type"
- member x.QualifiedNameWithNoShortPrimaryAssembly =
- x.AddQualifiedNameExtensionWithNoShortPrimaryAssembly(x.BasicQualifiedName)
+ member x.QualifiedName =
+ x.AddQualifiedNameExtension(x.BasicQualifiedName)
member x.TypeSpec =
- match x with
- | ILType.Boxed tr | ILType.Value tr -> tr
- | _ -> invalidOp "not a nominal type"
+ match x with
+ | ILType.Boxed tr | ILType.Value tr -> tr
+ | _ -> invalidOp "not a nominal type"
member x.Boxity =
- match x with
- | ILType.Boxed _ -> AsObject
- | ILType.Value _ -> AsValue
- | _ -> invalidOp "not a nominal type"
+ match x with
+ | ILType.Boxed _ -> AsObject
+ | ILType.Value _ -> AsValue
+ | _ -> invalidOp "not a nominal type"
member x.TypeRef =
- match x with
- | ILType.Boxed tspec | ILType.Value tspec -> tspec.TypeRef
- | _ -> invalidOp "not a nominal type"
+ match x with
+ | ILType.Boxed tspec | ILType.Value tspec -> tspec.TypeRef
+ | _ -> invalidOp "not a nominal type"
member x.IsNominal =
- match x with
- | ILType.Boxed _ | ILType.Value _ -> true
- | _ -> false
+ match x with
+ | ILType.Boxed _ | ILType.Value _ -> true
+ | _ -> false
member x.GenericArgs =
- match x with
- | ILType.Boxed tspec | ILType.Value tspec -> tspec.GenericArgs
- | _ -> []
+ match x with
+ | ILType.Boxed tspec | ILType.Value tspec -> tspec.GenericArgs
+ | _ -> []
member x.IsTyvar =
- match x with
- | ILType.TypeVar _ -> true | _ -> false
+ match x with
+ | ILType.TypeVar _ -> true | _ -> false
+
+ /// For debugging
+ []
+ member x.DebugText = x.ToString()
+
+ override x.ToString() = x.QualifiedName
and []
ILCallingSignature =
- { CallingConv: ILCallingConv;
- ArgTypes: ILTypes;
+ { CallingConv: ILCallingConv
+ ArgTypes: ILTypes
ReturnType: ILType }
and ILGenericArgs = list
+
and ILTypes = list
+let mkILCallSig (cc, args, ret) = { ArgTypes=args; CallingConv=cc; ReturnType=ret}
-let mkILCallSig (cc,args,ret) = { ArgTypes=args; CallingConv=cc; ReturnType=ret}
let mkILBoxedType (tspec:ILTypeSpec) = tspec.TypeRef.AsBoxedType tspec
+[]
type ILMethodRef =
- { mrefParent: ILTypeRef;
- mrefCallconv: ILCallingConv;
- mrefGenericArity: int;
- mrefName: string;
- mrefArgs: ILTypes;
+ { mrefParent: ILTypeRef
+ mrefCallconv: ILCallingConv
+ mrefGenericArity: int
+ mrefName: string
+ mrefArgs: ILTypes
mrefReturn: ILType }
- member x.EnclosingTypeRef = x.mrefParent
+
+ member x.DeclaringTypeRef = x.mrefParent
+
member x.CallingConv = x.mrefCallconv
+
member x.Name = x.mrefName
+
member x.GenericArity = x.mrefGenericArity
+
member x.ArgCount = List.length x.mrefArgs
+
member x.ArgTypes = x.mrefArgs
+
member x.ReturnType = x.mrefReturn
- member x.CallingSignature = mkILCallSig (x.CallingConv,x.ArgTypes,x.ReturnType)
- static member Create(a,b,c,d,e,f) =
+ member x.CallingSignature = mkILCallSig (x.CallingConv, x.ArgTypes, x.ReturnType)
+
+ static member Create(a, b, c, d, e, f) =
{ mrefParent= a;mrefCallconv=b;mrefName=c;mrefGenericArity=d; mrefArgs=e;mrefReturn=f }
- override x.ToString() = x.EnclosingTypeRef.ToString() + "::" + x.Name + "(...)"
+ /// For debugging
+ []
+ member x.DebugText = x.ToString()
-[]
+ override x.ToString() = x.DeclaringTypeRef.ToString() + "::" + x.Name + "(...)"
+
+
+[]
type ILFieldRef =
- { EnclosingTypeRef: ILTypeRef;
- Name: string;
+ { DeclaringTypeRef: ILTypeRef
+ Name: string
Type: ILType }
- override x.ToString() = x.EnclosingTypeRef.ToString() + "::" + x.Name
-[]
+ /// For debugging
+ []
+ member x.DebugText = x.ToString()
+
+ override x.ToString() = x.DeclaringTypeRef.ToString() + "::" + x.Name
+
+[]
type ILMethodSpec =
- { mspecMethodRef: ILMethodRef;
- mspecEnclosingType: ILType;
- mspecMethodInst: ILGenericArgs; }
- static member Create(a,b,c) = { mspecEnclosingType=a; mspecMethodRef =b; mspecMethodInst=c }
+ { mspecMethodRef: ILMethodRef
+
+ mspecDeclaringType: ILType
+
+ mspecMethodInst: ILGenericArgs }
+
+ static member Create(a, b, c) = { mspecDeclaringType=a; mspecMethodRef=b; mspecMethodInst=c }
+
member x.MethodRef = x.mspecMethodRef
- member x.EnclosingType=x.mspecEnclosingType
+
+ member x.DeclaringType=x.mspecDeclaringType
+
member x.GenericArgs=x.mspecMethodInst
+
member x.Name=x.MethodRef.Name
+
member x.CallingConv=x.MethodRef.CallingConv
+
member x.GenericArity = x.MethodRef.GenericArity
+
member x.FormalArgTypes = x.MethodRef.ArgTypes
+
member x.FormalReturnType = x.MethodRef.ReturnType
- override x.ToString() = x.MethodRef.ToString() + "(...)"
+ /// For debugging
+ []
+ member x.DebugText = x.ToString()
+
+ override x.ToString() = x.MethodRef.ToString() + "(...)"
+[]
type ILFieldSpec =
- { FieldRef: ILFieldRef;
- EnclosingType: ILType }
+ { FieldRef: ILFieldRef
+ DeclaringType: ILType }
+
member x.FormalType = x.FieldRef.Type
+
member x.Name = x.FieldRef.Name
- member x.EnclosingTypeRef = x.FieldRef.EnclosingTypeRef
- override x.ToString() = x.FieldRef.ToString()
+ member x.DeclaringTypeRef = x.FieldRef.DeclaringTypeRef
+
+ /// For debugging
+ []
+ member x.DebugText = x.ToString()
+
+ override x.ToString() = x.FieldRef.ToString()
// --------------------------------------------------------------------
// Debug info.
@@ -785,42 +875,55 @@ type ILPlatform =
| IA64
type ILSourceDocument =
- { sourceLanguage: ILGuid option;
- sourceVendor: ILGuid option;
- sourceDocType: ILGuid option;
- sourceFile: string; }
- static member Create(language,vendor,docType,file) =
- { sourceLanguage=language;
- sourceVendor=vendor;
- sourceDocType=docType;
- sourceFile=file; }
+ { sourceLanguage: ILGuid option
+ sourceVendor: ILGuid option
+ sourceDocType: ILGuid option
+ sourceFile: string }
+
+ static member Create(language, vendor, docType, file) =
+ { sourceLanguage=language
+ sourceVendor=vendor
+ sourceDocType=docType
+ sourceFile=file }
+
member x.Language=x.sourceLanguage
+
member x.Vendor=x.sourceVendor
+
member x.DocumentType=x.sourceDocType
+
member x.File=x.sourceFile
+[]
type ILSourceMarker =
- { sourceDocument: ILSourceDocument;
- sourceLine: int;
- sourceColumn: int;
- sourceEndLine: int;
+ { sourceDocument: ILSourceDocument
+ sourceLine: int
+ sourceColumn: int
+ sourceEndLine: int
sourceEndColumn: int }
+
static member Create(document, line, column, endLine, endColumn) =
- { sourceDocument=document;
- sourceLine=line;
- sourceColumn=column;
- sourceEndLine=endLine;
+ { sourceDocument=document
+ sourceLine=line
+ sourceColumn=column
+ sourceEndLine=endLine
sourceEndColumn=endColumn }
+
member x.Document=x.sourceDocument
+
member x.Line=x.sourceLine
+
member x.Column=x.sourceColumn
+
member x.EndLine=x.sourceEndLine
+
member x.EndColumn=x.sourceEndColumn
- override x.ToString() = sprintf "(%d,%d)-(%d,%d)" x.Line x.Column x.EndLine x.EndColumn
-// --------------------------------------------------------------------
-// Custom attributes
-// --------------------------------------------------------------------
+ /// For debugging
+ []
+ member x.DebugText = x.ToString()
+
+ override x.ToString() = sprintf "(%d, %d)-(%d, %d)" x.Line x.Column x.EndLine x.EndColumn
type ILAttribElem =
| String of string option
@@ -842,17 +945,52 @@ type ILAttribElem =
| Array of ILType * ILAttribElem list
type ILAttributeNamedArg = (string * ILType * bool * ILAttribElem)
+
+[]
type ILAttribute =
- { Method: ILMethodSpec;
+ { Method: ILMethodSpec
Data: byte[]
- Elements: ILAttribElem list}
+ Elements: ILAttribElem list }
+
+ /// For debugging
+ []
+ member x.DebugText = x.ToString()
+
+ override x.ToString() = x.Method.ToString() + "(...)"
+
+[]
+type ILAttributes(array : ILAttribute[]) =
+
+ member x.AsArray = array
-[]
-type ILAttributes(f: unit -> ILAttribute[]) =
- let mutable array = InlineDelayInit<_>(f)
- member x.AsArray = array.Value
member x.AsList = x.AsArray |> Array.toList
+[]
+type ILAttributesStored =
+
+ /// Computed by ilread.fs based on metadata index
+ | Reader of (int32 -> ILAttribute[])
+
+ /// Already computed
+ | Given of ILAttributes
+
+ member x.GetCustomAttrs metadataIndex =
+ match x with
+ | Reader f -> ILAttributes(f metadataIndex)
+ | Given attrs -> attrs
+
+let emptyILCustomAttrs = ILAttributes [| |]
+
+let mkILCustomAttrsFromArray (attrs: ILAttribute[]) = if attrs.Length = 0 then emptyILCustomAttrs else ILAttributes attrs
+
+let mkILCustomAttrs l = match l with [] -> emptyILCustomAttrs | _ -> mkILCustomAttrsFromArray (List.toArray l)
+
+let emptyILCustomAttrsStored = ILAttributesStored.Given emptyILCustomAttrs
+
+let storeILCustomAttrs (attrs: ILAttributes) = if attrs.AsArray.Length = 0 then emptyILCustomAttrsStored else ILAttributesStored.Given attrs
+
+let mkILCustomAttrsReader f = ILAttributesStored.Reader f
+
type ILCodeLabel = int
// --------------------------------------------------------------------
@@ -926,115 +1064,114 @@ type ILComparisonInstr =
[]
type ILInstr =
- | AI_add
- | AI_add_ovf
- | AI_add_ovf_un
- | AI_and
- | AI_div
- | AI_div_un
- | AI_ceq
- | AI_cgt
- | AI_cgt_un
- | AI_clt
- | AI_clt_un
- | AI_conv of ILBasicType
- | AI_conv_ovf of ILBasicType
- | AI_conv_ovf_un of ILBasicType
- | AI_mul
- | AI_mul_ovf
- | AI_mul_ovf_un
- | AI_rem
- | AI_rem_un
- | AI_shl
- | AI_shr
- | AI_shr_un
- | AI_sub
- | AI_sub_ovf
- | AI_sub_ovf_un
- | AI_xor
- | AI_or
- | AI_neg
- | AI_not
- | AI_ldnull
- | AI_dup
- | AI_pop
- | AI_ckfinite
- | AI_nop
- | AI_ldc of ILBasicType * ILConst
- | I_ldarg of uint16
- | I_ldarga of uint16
- | I_ldind of ILAlignment * ILVolatility * ILBasicType
- | I_ldloc of uint16
- | I_ldloca of uint16
- | I_starg of uint16
- | I_stind of ILAlignment * ILVolatility * ILBasicType
- | I_stloc of uint16
-
- | I_br of ILCodeLabel
- | I_jmp of ILMethodSpec
- | I_brcmp of ILComparisonInstr * ILCodeLabel
- | I_switch of ILCodeLabel list
- | I_ret
-
- | I_call of ILTailcall * ILMethodSpec * ILVarArgs
- | I_callvirt of ILTailcall * ILMethodSpec * ILVarArgs
- | I_callconstraint of ILTailcall * ILType * ILMethodSpec * ILVarArgs
- | I_calli of ILTailcall * ILCallingSignature * ILVarArgs
- | I_ldftn of ILMethodSpec
- | I_newobj of ILMethodSpec * ILVarArgs
+ | AI_add
+ | AI_add_ovf
+ | AI_add_ovf_un
+ | AI_and
+ | AI_div
+ | AI_div_un
+ | AI_ceq
+ | AI_cgt
+ | AI_cgt_un
+ | AI_clt
+ | AI_clt_un
+ | AI_conv of ILBasicType
+ | AI_conv_ovf of ILBasicType
+ | AI_conv_ovf_un of ILBasicType
+ | AI_mul
+ | AI_mul_ovf
+ | AI_mul_ovf_un
+ | AI_rem
+ | AI_rem_un
+ | AI_shl
+ | AI_shr
+ | AI_shr_un
+ | AI_sub
+ | AI_sub_ovf
+ | AI_sub_ovf_un
+ | AI_xor
+ | AI_or
+ | AI_neg
+ | AI_not
+ | AI_ldnull
+ | AI_dup
+ | AI_pop
+ | AI_ckfinite
+ | AI_nop
+ | AI_ldc of ILBasicType * ILConst
+ | I_ldarg of uint16
+ | I_ldarga of uint16
+ | I_ldind of ILAlignment * ILVolatility * ILBasicType
+ | I_ldloc of uint16
+ | I_ldloca of uint16
+ | I_starg of uint16
+ | I_stind of ILAlignment * ILVolatility * ILBasicType
+ | I_stloc of uint16
+
+ | I_br of ILCodeLabel
+ | I_jmp of ILMethodSpec
+ | I_brcmp of ILComparisonInstr * ILCodeLabel
+ | I_switch of ILCodeLabel list
+ | I_ret
+
+ | I_call of ILTailcall * ILMethodSpec * ILVarArgs
+ | I_callvirt of ILTailcall * ILMethodSpec * ILVarArgs
+ | I_callconstraint of ILTailcall * ILType * ILMethodSpec * ILVarArgs
+ | I_calli of ILTailcall * ILCallingSignature * ILVarArgs
+ | I_ldftn of ILMethodSpec
+ | I_newobj of ILMethodSpec * ILVarArgs
- | I_throw
- | I_endfinally
- | I_endfilter
- | I_leave of ILCodeLabel
- | I_rethrow
-
- | I_ldsfld of ILVolatility * ILFieldSpec
- | I_ldfld of ILAlignment * ILVolatility * ILFieldSpec
- | I_ldsflda of ILFieldSpec
- | I_ldflda of ILFieldSpec
- | I_stsfld of ILVolatility * ILFieldSpec
- | I_stfld of ILAlignment * ILVolatility * ILFieldSpec
- | I_ldstr of string
- | I_isinst of ILType
- | I_castclass of ILType
- | I_ldtoken of ILToken
- | I_ldvirtftn of ILMethodSpec
-
- | I_cpobj of ILType
- | I_initobj of ILType
- | I_ldobj of ILAlignment * ILVolatility * ILType
- | I_stobj of ILAlignment * ILVolatility * ILType
- | I_box of ILType
- | I_unbox of ILType
- | I_unbox_any of ILType
- | I_sizeof of ILType
-
- | I_ldelem of ILBasicType
- | I_stelem of ILBasicType
- | I_ldelema of ILReadonly * bool * ILArrayShape * ILType
- | I_ldelem_any of ILArrayShape * ILType
- | I_stelem_any of ILArrayShape * ILType
- | I_newarr of ILArrayShape * ILType
- | I_ldlen
-
- | I_mkrefany of ILType
- | I_refanytype
- | I_refanyval of ILType
-
- | I_break
- | I_seqpoint of ILSourceMarker
-
- | I_arglist
-
- | I_localloc
- | I_cpblk of ILAlignment * ILVolatility
- | I_initblk of ILAlignment * ILVolatility
-
- (* FOR EXTENSIONS, e.g. MS-ILX *)
- | EI_ilzero of ILType
- | EI_ldlen_multi of int32 * int32
-
+ | I_throw
+ | I_endfinally
+ | I_endfilter
+ | I_leave of ILCodeLabel
+ | I_rethrow
+
+ | I_ldsfld of ILVolatility * ILFieldSpec
+ | I_ldfld of ILAlignment * ILVolatility * ILFieldSpec
+ | I_ldsflda of ILFieldSpec
+ | I_ldflda of ILFieldSpec
+ | I_stsfld of ILVolatility * ILFieldSpec
+ | I_stfld of ILAlignment * ILVolatility * ILFieldSpec
+ | I_ldstr of string
+ | I_isinst of ILType
+ | I_castclass of ILType
+ | I_ldtoken of ILToken
+ | I_ldvirtftn of ILMethodSpec
+
+ | I_cpobj of ILType
+ | I_initobj of ILType
+ | I_ldobj of ILAlignment * ILVolatility * ILType
+ | I_stobj of ILAlignment * ILVolatility * ILType
+ | I_box of ILType
+ | I_unbox of ILType
+ | I_unbox_any of ILType
+ | I_sizeof of ILType
+
+ | I_ldelem of ILBasicType
+ | I_stelem of ILBasicType
+ | I_ldelema of ILReadonly * bool * ILArrayShape * ILType
+ | I_ldelem_any of ILArrayShape * ILType
+ | I_stelem_any of ILArrayShape * ILType
+ | I_newarr of ILArrayShape * ILType
+ | I_ldlen
+
+ | I_mkrefany of ILType
+ | I_refanytype
+ | I_refanyval of ILType
+
+ | I_break
+ | I_seqpoint of ILSourceMarker
+
+ | I_arglist
+
+ | I_localloc
+ | I_cpblk of ILAlignment * ILVolatility
+ | I_initblk of ILAlignment * ILVolatility
+
+ (* FOR EXTENSIONS, e.g. MS-ILX *)
+ | EI_ilzero of ILType
+ | EI_ldlen_multi of int32 * int32
[]
@@ -1046,7 +1183,7 @@ type ILExceptionClause =
[]
type ILExceptionSpec =
- { Range: (ILCodeLabel * ILCodeLabel);
+ { Range: (ILCodeLabel * ILCodeLabel)
Clause: ILExceptionClause }
/// Indicates that a particular local variable has a particular source
@@ -1054,37 +1191,37 @@ type ILExceptionSpec =
/// variable numbering, which is global over the whole method.
[]
type ILLocalDebugMapping =
- { LocalIndex: int;
- LocalName: string; }
+ { LocalIndex: int
+ LocalName: string }
[]
type ILLocalDebugInfo =
- { Range: (ILCodeLabel * ILCodeLabel);
+ { Range: (ILCodeLabel * ILCodeLabel)
DebugMappings: ILLocalDebugMapping list }
[]
type ILCode =
- { Labels: Dictionary
+ { Labels: Dictionary
Instrs:ILInstr[]
Exceptions: ILExceptionSpec list
Locals: ILLocalDebugInfo list }
[]
type ILLocal =
- { Type: ILType;
- IsPinned: bool;
+ { Type: ILType
+ IsPinned: bool
DebugInfo: (string * int * int) option }
type ILLocals = list
[]
type ILMethodBody =
- { IsZeroInit: bool;
- MaxStack: int32;
- NoInlining: bool;
- AggressiveInlining: bool;
- Locals: ILLocals;
- Code: ILCode;
+ { IsZeroInit: bool
+ MaxStack: int32
+ NoInlining: bool
+ AggressiveInlining: bool
+ Locals: ILLocals
+ Code: ILCode
SourceMarker: ILSourceMarker option }
[]
@@ -1123,13 +1260,14 @@ type ILFieldInit =
[]
type ILNativeType =
| Empty
- | Custom of ILGuid * string * string * byte[] (* guid,nativeTypeName,custMarshallerName,cookieString *)
+ | Custom of ILGuid * string * string * byte[] (* guid, nativeTypeName, custMarshallerName, cookieString *)
| FixedSysString of int32
| FixedArray of int32
| Currency
| LPSTR
| LPWSTR
| LPTSTR
+ | LPUTF8STR
| ByValStr
| TBSTR
| LPSTRUCT
@@ -1160,7 +1298,6 @@ type ILNativeType =
| ANSIBSTR
| VariantBool
-
and
[]
ILNativeVariant =
@@ -1209,9 +1346,8 @@ and
| Int
| UInt
-type
- []
- ILSecurityAction =
+[]
+type ILSecurityAction =
| Request
| Demand
| Assert
@@ -1232,14 +1368,37 @@ type
| DemandChoice
[]
-type ILPermission =
- | PermissionSet of ILSecurityAction * byte[]
+type ILSecurityDecl =
+ | ILSecurityDecl of ILSecurityAction * byte[]
-[]
-type ILPermissions =
- | SecurityDecls of ILPermission list
- | SecurityDeclsLazy of Lazy
- member x.AsList = match x with SecurityDecls m -> m | SecurityDeclsLazy m -> m.Force()
+[]
+type ILSecurityDecls(array : ILSecurityDecl[]) =
+ member x.AsArray = array
+ member x.AsList = x.AsArray |> Array.toList
+
+[]
+type ILSecurityDeclsStored =
+
+ /// Computed by ilread.fs based on metadata index
+ | Reader of (int32 -> ILSecurityDecl[])
+
+ /// Already computed
+ | Given of ILSecurityDecls
+
+ member x.GetSecurityDecls metadataIndex =
+ match x with
+ | Reader f -> ILSecurityDecls(f metadataIndex)
+ | Given attrs -> attrs
+
+let emptyILSecurityDecls = ILSecurityDecls [| |]
+
+let emptyILSecurityDeclsStored = ILSecurityDeclsStored.Given emptyILSecurityDecls
+
+let mkILSecurityDecls l = match l with [] -> emptyILSecurityDecls | _ -> ILSecurityDecls (Array.ofList l)
+
+let storeILSecurityDecls (x: ILSecurityDecls) = if x.AsArray.Length = 0 then emptyILSecurityDeclsStored else ILSecurityDeclsStored.Given x
+
+let mkILSecurityDeclsReader f = ILSecurityDeclsStored.Reader f
[]
type PInvokeCharBestFit =
@@ -1271,38 +1430,48 @@ type PInvokeCharEncoding =
[]
type PInvokeMethod =
- { Where: ILModuleRef;
- Name: string;
- CallingConv: PInvokeCallingConvention;
- CharEncoding: PInvokeCharEncoding;
- NoMangle: bool;
- LastError: bool;
- ThrowOnUnmappableChar: PInvokeThrowOnUnmappableChar;
+ { Where: ILModuleRef
+ Name: string
+ CallingConv: PInvokeCallingConvention
+ CharEncoding: PInvokeCharEncoding
+ NoMangle: bool
+ LastError: bool
+ ThrowOnUnmappableChar: PInvokeThrowOnUnmappableChar
CharBestFit: PInvokeCharBestFit }
[]
type ILParameter =
- { Name: string option;
- Type: ILType;
- Default: ILFieldInit option;
- Marshal: ILNativeType option;
- IsIn: bool;
- IsOut: bool;
- IsOptional: bool;
- CustomAttrs: ILAttributes }
+ { Name: string option
+ Type: ILType
+ Default: ILFieldInit option
+ Marshal: ILNativeType option
+ IsIn: bool
+ IsOut: bool
+ IsOptional: bool
+ CustomAttrsStored: ILAttributesStored
+ MetadataIndex: int32 }
+
+ member x.CustomAttrs = x.CustomAttrsStored.GetCustomAttrs x.MetadataIndex
type ILParameters = list
[]
type ILReturn =
- { Marshal: ILNativeType option;
- Type: ILType;
- CustomAttrs: ILAttributes }
+ { Marshal: ILNativeType option
+ Type: ILType
+ CustomAttrsStored: ILAttributesStored
+ MetadataIndex: int32 }
+
+ member x.CustomAttrs = x.CustomAttrsStored.GetCustomAttrs x.MetadataIndex
+
+ member x.WithCustomAttrs(customAttrs) = { x with CustomAttrsStored = storeILCustomAttrs customAttrs }
type ILOverridesSpec =
| OverridesSpec of ILMethodRef * ILType
- member x.MethodRef = let (OverridesSpec(mr,_ty)) = x in mr
- member x.EnclosingType = let (OverridesSpec(_mr,ty)) = x in ty
+
+ member x.MethodRef = let (OverridesSpec(mr, _ty)) = x in mr
+
+ member x.DeclaringType = let (OverridesSpec(_mr, ty)) = x in ty
type ILMethodVirtualInfo =
{ IsFinal: bool
@@ -1323,9 +1492,11 @@ type MethodBody =
| PInvoke of PInvokeMethod (* platform invoke to native *)
| Abstract
| Native
+ | NotAvailable
type ILLazyMethodBody =
| ILLazyMethodBody of Lazy
+
member x.Contents = let (ILLazyMethodBody mb) = x in mb.Force()
[]
@@ -1334,7 +1505,8 @@ type MethodCodeKind =
| Native
| Runtime
-let mkMethBodyAux mb = ILLazyMethodBody (Lazy.CreateFromValue mb)
+let mkMethBodyAux mb = ILLazyMethodBody (notlazy mb)
+
let mkMethBodyLazyAux mb = ILLazyMethodBody mb
let typesOfILParams (ps:ILParameters) : ILTypes = ps |> List.map (fun p -> p.Type)
@@ -1345,74 +1517,166 @@ type ILGenericVariance =
| CoVariant
| ContraVariant
+[]
type ILGenericParameterDef =
- { Name: string;
- Constraints: ILTypes;
- Variance: ILGenericVariance;
- HasReferenceTypeConstraint: bool;
- CustomAttrs : ILAttributes;
- HasNotNullableValueTypeConstraint: bool;
- HasDefaultConstructorConstraint: bool; }
+ { Name: string
+ Constraints: ILTypes
+ Variance: ILGenericVariance
+ HasReferenceTypeConstraint: bool
+ HasNotNullableValueTypeConstraint: bool
+ HasDefaultConstructorConstraint: bool
+ CustomAttrsStored : ILAttributesStored
+ MetadataIndex: int32 }
+
+ member x.CustomAttrs = x.CustomAttrsStored.GetCustomAttrs x.MetadataIndex
+
+ /// For debugging
+ []
+ member x.DebugText = x.ToString()
override x.ToString() = x.Name
type ILGenericParameterDefs = ILGenericParameterDef list
+let memberAccessOfFlags flags =
+ let f = (flags &&& 0x00000007)
+ if f = 0x00000001 then ILMemberAccess.Private
+ elif f = 0x00000006 then ILMemberAccess.Public
+ elif f = 0x00000004 then ILMemberAccess.Family
+ elif f = 0x00000002 then ILMemberAccess.FamilyAndAssembly
+ elif f = 0x00000005 then ILMemberAccess.FamilyOrAssembly
+ elif f = 0x00000003 then ILMemberAccess.Assembly
+ else ILMemberAccess.CompilerControlled
+
+let convertMemberAccess (ilMemberAccess:ILMemberAccess) =
+ match ilMemberAccess with
+ | ILMemberAccess.Public -> MethodAttributes.Public
+ | ILMemberAccess.Private -> MethodAttributes.Private
+ | ILMemberAccess.Assembly -> MethodAttributes.Assembly
+ | ILMemberAccess.FamilyAndAssembly -> MethodAttributes.FamANDAssem
+ | ILMemberAccess.CompilerControlled -> MethodAttributes.PrivateScope
+ | ILMemberAccess.FamilyOrAssembly -> MethodAttributes.FamORAssem
+ | ILMemberAccess.Family -> MethodAttributes.Family
+
+let inline conditionalAdd condition flagToAdd source = if condition then source ||| flagToAdd else source &&& ~~~flagToAdd
+
+let NoMetadataIdx = -1
+
[]
-type ILMethodDef =
- { Name: string;
- mdKind: MethodKind;
- CallingConv: ILCallingConv;
- Parameters: ILParameters;
- Return: ILReturn;
- Access: ILMemberAccess;
- mdBody: ILLazyMethodBody;
- mdCodeKind: MethodCodeKind;
- IsInternalCall: bool;
- IsManaged: bool;
- IsForwardRef: bool;
- SecurityDecls: ILPermissions;
- HasSecurity: bool;
- IsEntryPoint:bool;
- IsReqSecObj: bool;
- IsHideBySig: bool;
- IsSpecialName: bool;
- IsUnmanagedExport: bool;
- IsSynchronized: bool;
- IsPreserveSig: bool;
- IsMustRun: bool;
- IsNoInline: bool;
- IsAggressiveInline : bool
- GenericParams: ILGenericParameterDefs;
- CustomAttrs: ILAttributes; }
+type ILMethodDef (name: string, attributes: MethodAttributes, implAttributes: MethodImplAttributes, callingConv: ILCallingConv,
+ parameters: ILParameters, ret: ILReturn, body: ILLazyMethodBody, isEntryPoint:bool, genericParams: ILGenericParameterDefs,
+ securityDeclsStored: ILSecurityDeclsStored, customAttrsStored: ILAttributesStored, metadataIndex: int32) =
+
+ new (name, attributes, implAttributes, callingConv, parameters, ret, body, isEntryPoint, genericParams, securityDecls, customAttrs) =
+ ILMethodDef(name, attributes, implAttributes, callingConv, parameters, ret, body, isEntryPoint, genericParams,
+ storeILSecurityDecls securityDecls, storeILCustomAttrs customAttrs, NoMetadataIdx)
+
+ // The captured data - remember the object will be as large as the data captured by these members
+ member __.Name = name
+
+ member __.Attributes = attributes
+
+ member __.ImplAttributes = implAttributes
+
+ member __.CallingConv = callingConv
+
+ member __.Parameters = parameters
+
+ member __.Return = ret
+
+ member __.Body = body
+
+ member __.SecurityDeclsStored = securityDeclsStored
+
+ member __.IsEntryPoint = isEntryPoint
+
+ member __.GenericParams = genericParams
+
+ member __.CustomAttrsStored = customAttrsStored
+
+ member __.MetadataIndex = metadataIndex
+
+ member x.With (?name: string, ?attributes: MethodAttributes, ?implAttributes: MethodImplAttributes, ?callingConv: ILCallingConv, ?parameters: ILParameters, ?ret: ILReturn, ?body: ILLazyMethodBody, ?securityDecls: ILSecurityDecls, ?isEntryPoint:bool, ?genericParams: ILGenericParameterDefs, ?customAttrs: ILAttributes) =
+ ILMethodDef (name = defaultArg name x.Name,
+ attributes = defaultArg attributes x.Attributes,
+ implAttributes = defaultArg implAttributes x.ImplAttributes,
+ callingConv = defaultArg callingConv x.CallingConv,
+ parameters = defaultArg parameters x.Parameters,
+ ret = defaultArg ret x.Return,
+ body = defaultArg body x.Body,
+ securityDecls = (match securityDecls with None -> x.SecurityDecls | Some attrs -> attrs),
+ isEntryPoint = defaultArg isEntryPoint x.IsEntryPoint,
+ genericParams = defaultArg genericParams x.GenericParams,
+ customAttrs=(match customAttrs with None -> x.CustomAttrs | Some attrs -> attrs))
+
+ member x.CustomAttrs = x.CustomAttrsStored.GetCustomAttrs metadataIndex
+
+ member x.SecurityDecls = x.SecurityDeclsStored.GetSecurityDecls x.MetadataIndex
+
member x.ParameterTypes = typesOfILParams x.Parameters
- // Whidbey feature: SafeHandle finalizer must be run
+
member md.Code =
- match md.mdBody.Contents with
+ match md.Body.Contents with
| MethodBody.IL il-> Some il.Code
| _ -> None
- member x.IsIL = match x.mdBody.Contents with | MethodBody.IL _ -> true | _ -> false
- member x.Locals = match x.mdBody.Contents with | MethodBody.IL il -> il.Locals | _ -> []
- member x.MethodBody = match x.mdBody.Contents with MethodBody.IL il -> il | _ -> failwith "not IL"
+ member x.IsIL = match x.Body.Contents with | MethodBody.IL _ -> true | _ -> false
- member x.SourceMarker = x.MethodBody.SourceMarker
- member x.MaxStack = x.MethodBody.MaxStack
- member x.IsZeroInit = x.MethodBody.IsZeroInit
+ member x.Locals = match x.Body.Contents with | MethodBody.IL il -> il.Locals | _ -> []
- member x.IsClassInitializer = match x.mdKind with | MethodKind.Cctor -> true | _ -> false
- member x.IsConstructor = match x.mdKind with | MethodKind.Ctor -> true | _ -> false
- member x.IsStatic = match x.mdKind with | MethodKind.Static -> true | _ -> false
- member x.IsNonVirtualInstance = match x.mdKind with | MethodKind.NonVirtual -> true | _ -> false
- member x.IsVirtual = match x.mdKind with | MethodKind.Virtual _ -> true | _ -> false
+ member x.MethodBody = match x.Body.Contents with MethodBody.IL il -> il | _ -> failwith "not IL"
- member x.IsFinal = match x.mdKind with | MethodKind.Virtual v -> v.IsFinal | _ -> invalidOp "not virtual"
- member x.IsNewSlot = match x.mdKind with | MethodKind.Virtual v -> v.IsNewSlot | _ -> invalidOp "not virtual"
- member x.IsCheckAccessOnOverride= match x.mdKind with | MethodKind.Virtual v -> v.IsCheckAccessOnOverride | _ -> invalidOp "not virtual"
- member x.IsAbstract = match x.mdKind with | MethodKind.Virtual v -> v.IsAbstract | _ -> invalidOp "not virtual"
+ member x.SourceMarker = x.MethodBody.SourceMarker
- member md.CallingSignature = mkILCallSig (md.CallingConv,md.ParameterTypes,md.Return.Type)
+ member x.MaxStack = x.MethodBody.MaxStack
+ member x.IsZeroInit = x.MethodBody.IsZeroInit
+
+ member md.CallingSignature = mkILCallSig (md.CallingConv, md.ParameterTypes, md.Return.Type)
+
+ member x.IsClassInitializer = x.Name = ".cctor"
+ member x.IsConstructor = x.Name = ".ctor"
+
+ member x.Access = memberAccessOfFlags (int x.Attributes)
+ member x.IsStatic = x.Attributes &&& MethodAttributes.Static <> enum 0
+ member x.IsNonVirtualInstance = not x.IsStatic && not x.IsVirtual
+ member x.IsVirtual = x.Attributes &&& MethodAttributes.Virtual <> enum 0
+ member x.IsFinal = x.Attributes &&& MethodAttributes.Final <> enum 0
+ member x.IsNewSlot = x.Attributes &&& MethodAttributes.NewSlot <> enum 0
+ member x.IsCheckAccessOnOverride= x.Attributes &&& MethodAttributes.CheckAccessOnOverride <> enum 0
+ member x.IsAbstract = x.Attributes &&& MethodAttributes.Abstract <> enum 0
+ member x.IsHideBySig = x.Attributes &&& MethodAttributes.HideBySig <> enum 0
+ member x.IsSpecialName = x.Attributes &&& MethodAttributes.SpecialName <> enum 0
+ member x.IsUnmanagedExport = x.Attributes &&& MethodAttributes.UnmanagedExport <> enum 0
+ member x.IsReqSecObj = x.Attributes &&& MethodAttributes.RequireSecObject <> enum 0
+ member x.HasSecurity = x.Attributes &&& MethodAttributes.HasSecurity <> enum 0
+
+ member x.IsManaged = x.ImplAttributes &&& MethodImplAttributes.Managed <> enum 0
+ member x.IsForwardRef = x.ImplAttributes &&& MethodImplAttributes.ForwardRef <> enum 0
+ member x.IsInternalCall = x.ImplAttributes &&& MethodImplAttributes.InternalCall <> enum 0
+ member x.IsPreserveSig = x.ImplAttributes &&& MethodImplAttributes.PreserveSig <> enum 0
+ member x.IsSynchronized = x.ImplAttributes &&& MethodImplAttributes.Synchronized <> enum 0
+ member x.IsNoInline = x.ImplAttributes &&& MethodImplAttributes.NoInlining <> enum 0
+ member x.IsAggressiveInline= x.ImplAttributes &&& MethodImplAttributes.AggressiveInlining <> enum 0
+ member x.IsMustRun = x.ImplAttributes &&& MethodImplAttributes.NoOptimization <> enum 0
+
+ member x.WithSpecialName = x.With(attributes = (x.Attributes ||| MethodAttributes.SpecialName))
+ member x.WithHideBySig() =
+ x.With(attributes = (
+ if x.IsVirtual then x.Attributes &&& ~~~MethodAttributes.CheckAccessOnOverride ||| MethodAttributes.HideBySig
+ else failwith "WithHideBySig"))
+ member x.WithHideBySig(condition) = x.With(attributes = (x.Attributes |> conditionalAdd condition MethodAttributes.HideBySig))
+ member x.WithFinal(condition) = x.With(attributes = (x.Attributes |> conditionalAdd condition MethodAttributes.Final))
+ member x.WithAbstract(condition) = x.With(attributes = (x.Attributes |> conditionalAdd condition MethodAttributes.Abstract))
+ member x.WithAccess(access) = x.With(attributes = (x.Attributes &&& ~~~MethodAttributes.MemberAccessMask ||| convertMemberAccess access))
+ member x.WithNewSlot = x.With(attributes = (x.Attributes ||| MethodAttributes.NewSlot))
+ member x.WithSecurity(condition) = x.With(attributes = (x.Attributes |> conditionalAdd condition MethodAttributes.HasSecurity))
+ member x.WithPInvoke(condition) = x.With(attributes = (x.Attributes |> conditionalAdd condition MethodAttributes.PinvokeImpl))
+ member x.WithPreserveSig(condition) = x.With(implAttributes = (x.ImplAttributes |> conditionalAdd condition MethodImplAttributes.PreserveSig))
+ member x.WithSynchronized(condition) = x.With(implAttributes = (x.ImplAttributes |> conditionalAdd condition MethodImplAttributes.Synchronized))
+ member x.WithNoInlining(condition) = x.With(implAttributes = (x.ImplAttributes |> conditionalAdd condition MethodImplAttributes.NoInlining))
+ member x.WithAggressiveInlining(condition) = x.With(implAttributes = (x.ImplAttributes |> conditionalAdd condition MethodImplAttributes.AggressiveInlining))
+ member x.WithRuntime(condition) = x.With(implAttributes = (x.ImplAttributes |> conditionalAdd condition MethodImplAttributes.Runtime))
/// Index table by name and arity.
type MethodDefMap = Map
@@ -1423,14 +1687,13 @@ type ILMethodDefs(f : (unit -> ILMethodDef[])) =
let mutable array = InlineDelayInit<_>(f)
let mutable dict = InlineDelayInit<_>(fun () ->
let arr = array.Value
- let t = Dictionary<_,_>()
+ let t = Dictionary<_, _>()
for i = arr.Length - 1 downto 0 do
let y = arr.[i]
let key = y.Name
- if t.ContainsKey key then
- t.[key] <- y :: t.[key]
- else
- t.[key] <- [ y ]
+ match t.TryGetValue(key) with
+ | true, m -> t.[key] <- y :: m
+ | _ -> t.[key] <- [y]
t)
interface IEnumerable with
@@ -1440,80 +1703,173 @@ type ILMethodDefs(f : (unit -> ILMethodDef[])) =
member x.GetEnumerator() = (array.Value :> IEnumerable).GetEnumerator()
member x.AsArray = array.Value
+
member x.AsList = array.Value|> Array.toList
- member x.FindByName nm = if dict.Value.ContainsKey nm then dict.Value.[nm] else []
- member x.FindByNameAndArity (nm,arity) = x.FindByName nm |> List.filter (fun x -> List.length x.Parameters = arity)
-[]
-type ILEventDef =
- { Type: ILType option;
- Name: string;
- IsRTSpecialName: bool;
- IsSpecialName: bool;
- AddMethod: ILMethodRef;
- RemoveMethod: ILMethodRef;
- FireMethod: ILMethodRef option;
- OtherMethods: ILMethodRef list;
- CustomAttrs: ILAttributes; }
-
-(* Index table by name. *)
+ member x.FindByName(nm) =
+ match dict.Value.TryGetValue(nm) with
+ | true, m -> m
+ | _ -> []
+
+ member x.FindByNameAndArity (nm, arity) = x.FindByName nm |> List.filter (fun x -> List.length x.Parameters = arity)
+
+[]
+type ILEventDef(eventType: ILType option, name: string, attributes: EventAttributes, addMethod: ILMethodRef, removeMethod: ILMethodRef, fireMethod: ILMethodRef option, otherMethods: ILMethodRef list, customAttrsStored: ILAttributesStored, metadataIndex: int32) =
+
+ new (eventType, name, attributes, addMethod, removeMethod, fireMethod, otherMethods, customAttrs) =
+ ILEventDef(eventType, name, attributes, addMethod, removeMethod, fireMethod, otherMethods, storeILCustomAttrs customAttrs, NoMetadataIdx)
+
+ member __.EventType = eventType
+ member __.Name = name
+ member __.Attributes = attributes
+ member __.AddMethod = addMethod
+ member __.RemoveMethod = removeMethod
+ member __.FireMethod = fireMethod
+ member __.OtherMethods = otherMethods
+ member __.CustomAttrsStored = customAttrsStored
+ member __.MetadataIndex = metadataIndex
+ member x.CustomAttrs = customAttrsStored.GetCustomAttrs x.MetadataIndex
+
+ member x.With(?eventType, ?name, ?attributes, ?addMethod, ?removeMethod, ?fireMethod, ?otherMethods, ?customAttrs) =
+ ILEventDef(eventType= defaultArg eventType x.EventType,
+ name= defaultArg name x.Name,
+ attributes= defaultArg attributes x.Attributes,
+ addMethod=defaultArg addMethod x.AddMethod,
+ removeMethod=defaultArg removeMethod x.RemoveMethod,
+ fireMethod= defaultArg fireMethod x.FireMethod,
+ otherMethods= defaultArg otherMethods x.OtherMethods,
+ customAttrs=(match customAttrs with None -> x.CustomAttrs | Some attrs -> attrs))
+
+ member x.IsSpecialName = (x.Attributes &&& EventAttributes.SpecialName) <> enum<_>(0)
+ member x.IsRTSpecialName = (x.Attributes &&& EventAttributes.RTSpecialName) <> enum<_>(0)
+
+ /// For debugging
+ []
+ member x.DebugText = x.ToString()
+
+ override x.ToString() = "event " + x.Name
+
[]
type ILEventDefs =
- | Events of LazyOrderedMultiMap
- member x.AsList = let (Events t) = x in t.Entries()
- member x.LookupByName s = let (Events t) = x in t.[s]
-
-[]
-type ILPropertyDef =
- { Name: string;
- IsRTSpecialName: bool;
- IsSpecialName: bool;
- SetMethod: ILMethodRef option;
- GetMethod: ILMethodRef option;
- CallingConv: ILThisConvention;
- Type: ILType;
- Init: ILFieldInit option;
- Args: ILTypes;
- CustomAttrs: ILAttributes; }
+ | ILEvents of LazyOrderedMultiMap
+
+ member x.AsList = let (ILEvents t) = x in t.Entries()
+
+ member x.LookupByName s = let (ILEvents t) = x in t.[s]
+
+[]
+type ILPropertyDef(name: string, attributes: PropertyAttributes, setMethod: ILMethodRef option, getMethod: ILMethodRef option, callingConv: ILThisConvention, propertyType: ILType, init: ILFieldInit option, args: ILTypes, customAttrsStored: ILAttributesStored, metadataIndex: int32) =
+
+ new (name, attributes, setMethod, getMethod, callingConv, propertyType, init, args, customAttrs) =
+ ILPropertyDef(name, attributes, setMethod, getMethod, callingConv, propertyType, init, args, storeILCustomAttrs customAttrs, NoMetadataIdx)
+
+ member x.Name = name
+ member x.Attributes = attributes
+ member x.GetMethod = getMethod
+ member x.SetMethod = setMethod
+ member x.CallingConv = callingConv
+ member x.PropertyType = propertyType
+ member x.Init = init
+ member x.Args = args
+ member x.CustomAttrsStored = customAttrsStored
+ member x.CustomAttrs = customAttrsStored.GetCustomAttrs x.MetadataIndex
+ member x.MetadataIndex = metadataIndex
+
+ member x.With(?name, ?attributes, ?setMethod, ?getMethod, ?callingConv, ?propertyType, ?init, ?args, ?customAttrs) =
+ ILPropertyDef(name=defaultArg name x.Name,
+ attributes=defaultArg attributes x.Attributes,
+ setMethod=defaultArg setMethod x.SetMethod,
+ getMethod=defaultArg getMethod x.GetMethod,
+ callingConv=defaultArg callingConv x.CallingConv,
+ propertyType=defaultArg propertyType x.PropertyType,
+ init=defaultArg init x.Init,
+ args=defaultArg args x.Args,
+ customAttrs=(match customAttrs with None -> x.CustomAttrs | Some attrs -> attrs))
+
+
+ member x.IsSpecialName = (x.Attributes &&& PropertyAttributes.SpecialName) <> enum<_>(0)
+ member x.IsRTSpecialName = (x.Attributes &&& PropertyAttributes.RTSpecialName) <> enum<_>(0)
+
+ /// For debugging
+ []
+ member x.DebugText = x.ToString()
+
+ override x.ToString() = "property " + x.Name
// Index table by name.
[]
type ILPropertyDefs =
- | Properties of LazyOrderedMultiMap
- member x.AsList = let (Properties t) = x in t.Entries()
- member x.LookupByName s = let (Properties t) = x in t.[s]
+ | ILProperties of LazyOrderedMultiMap
+ member x.AsList = let (ILProperties t) = x in t.Entries()
+ member x.LookupByName s = let (ILProperties t) = x in t.[s]
+
+let convertFieldAccess (ilMemberAccess:ILMemberAccess) =
+ match ilMemberAccess with
+ | ILMemberAccess.Assembly -> FieldAttributes.Assembly
+ | ILMemberAccess.CompilerControlled -> enum(0)
+ | ILMemberAccess.FamilyAndAssembly -> FieldAttributes.FamANDAssem
+ | ILMemberAccess.FamilyOrAssembly -> FieldAttributes.FamORAssem
+ | ILMemberAccess.Family -> FieldAttributes.Family
+ | ILMemberAccess.Private -> FieldAttributes.Private
+ | ILMemberAccess.Public -> FieldAttributes.Public
[]
-type ILFieldDef =
- { Name: string;
- Type: ILType;
- IsStatic: bool;
- Access: ILMemberAccess;
- Data: byte[] option;
- LiteralValue: ILFieldInit option;
- Offset: int32 option;
- IsSpecialName: bool;
- Marshal: ILNativeType option;
- NotSerialized: bool;
- IsLiteral: bool ;
- IsInitOnly: bool;
- CustomAttrs: ILAttributes; }
+type ILFieldDef(name: string, fieldType: ILType, attributes: FieldAttributes, data: byte[] option, literalValue: ILFieldInit option, offset: int32 option, marshal: ILNativeType option, customAttrsStored: ILAttributesStored, metadataIndex: int32) =
+
+ new (name, fieldType, attributes, data, literalValue, offset, marshal, customAttrs) =
+ ILFieldDef(name, fieldType, attributes, data, literalValue, offset, marshal, storeILCustomAttrs customAttrs, NoMetadataIdx)
+ member __.Name=name
+ member __.FieldType = fieldType
+ member __.Attributes=attributes
+ member __.Data=data
+ member __.LiteralValue=literalValue
+ member __.Offset=offset
+ member __.Marshal=marshal
+ member x.CustomAttrsStored = customAttrsStored
+ member x.CustomAttrs = customAttrsStored.GetCustomAttrs x.MetadataIndex
+ member x.MetadataIndex = metadataIndex
+
+ member x.With(?name: string, ?fieldType: ILType, ?attributes: FieldAttributes, ?data: byte[] option, ?literalValue: ILFieldInit option, ?offset: int32 option, ?marshal: ILNativeType option, ?customAttrs: ILAttributes) =
+ ILFieldDef(name=defaultArg name x.Name,
+ fieldType=defaultArg fieldType x.FieldType,
+ attributes=defaultArg attributes x.Attributes,
+ data=defaultArg data x.Data,
+ literalValue=defaultArg literalValue x.LiteralValue,
+ offset=defaultArg offset x.Offset,
+ marshal=defaultArg marshal x.Marshal,
+ customAttrs=defaultArg customAttrs x.CustomAttrs)
+ member x.IsStatic = x.Attributes &&& FieldAttributes.Static <> enum 0
+ member x.IsSpecialName = x.Attributes &&& FieldAttributes.SpecialName <> enum 0
+ member x.IsLiteral = x.Attributes &&& FieldAttributes.Literal <> enum 0
+ member x.NotSerialized = x.Attributes &&& FieldAttributes.NotSerialized <> enum 0
+ member x.IsInitOnly = x.Attributes &&& FieldAttributes.InitOnly <> enum 0
+ member x.Access = memberAccessOfFlags (int x.Attributes)
+ member x.WithAccess(access) = x.With(attributes = (x.Attributes &&& ~~~FieldAttributes.FieldAccessMask ||| convertFieldAccess access))
+ member x.WithInitOnly(condition) = x.With(attributes = (x.Attributes |> conditionalAdd condition FieldAttributes.InitOnly))
+ member x.WithStatic(condition) = x.With(attributes = (x.Attributes |> conditionalAdd condition FieldAttributes.Static))
+ member x.WithSpecialName(condition) = x.With(attributes = (x.Attributes |> conditionalAdd condition (FieldAttributes.SpecialName ||| FieldAttributes.RTSpecialName)))
+ member x.WithNotSerialized(condition) = x.With(attributes = (x.Attributes |> conditionalAdd condition FieldAttributes.NotSerialized))
+ member x.WithLiteralDefaultValue(literal) = x.With(literalValue = literal, attributes = (x.Attributes |> conditionalAdd literal.IsSome (FieldAttributes.Literal ||| FieldAttributes.HasDefault)))
+ member x.WithFieldMarshal(marshal) = x.With(marshal = marshal, attributes = (x.Attributes |> conditionalAdd marshal.IsSome FieldAttributes.HasFieldMarshal))
// Index table by name. Keep a canonical list to make sure field order is not disturbed for binary manipulation.
type ILFieldDefs =
- | Fields of LazyOrderedMultiMap
- member x.AsList = let (Fields t) = x in t.Entries()
- member x.LookupByName s = let (Fields t) = x in t.[s]
+ | ILFields of LazyOrderedMultiMap
+
+ member x.AsList = let (ILFields t) = x in t.Entries()
+
+ member x.LookupByName s = let (ILFields t) = x in t.[s]
type ILMethodImplDef =
- { Overrides: ILOverridesSpec;
+ { Overrides: ILOverridesSpec
OverrideBy: ILMethodSpec }
// Index table by name and arity.
type ILMethodImplDefs =
- | MethodImpls of Lazy
- member x.AsList = let (MethodImpls ltab) = x in Map.foldBack (fun _x y r -> y@r) (ltab.Force()) []
+ | ILMethodImpls of Lazy
+
+ member x.AsList = let (ILMethodImpls ltab) = x in Map.foldBack (fun _x y r -> y@r) (ltab.Force()) []
and MethodImplsMap = Map
@@ -1543,6 +1899,23 @@ type ILTypeDefAccess =
| Private
| Nested of ILMemberAccess
+let typeAccessOfFlags flags =
+ let f = (flags &&& 0x00000007)
+ if f = 0x00000001 then ILTypeDefAccess.Public
+ elif f = 0x00000002 then ILTypeDefAccess.Nested ILMemberAccess.Public
+ elif f = 0x00000003 then ILTypeDefAccess.Nested ILMemberAccess.Private
+ elif f = 0x00000004 then ILTypeDefAccess.Nested ILMemberAccess.Family
+ elif f = 0x00000006 then ILTypeDefAccess.Nested ILMemberAccess.FamilyAndAssembly
+ elif f = 0x00000007 then ILTypeDefAccess.Nested ILMemberAccess.FamilyOrAssembly
+ elif f = 0x00000005 then ILTypeDefAccess.Nested ILMemberAccess.Assembly
+ else ILTypeDefAccess.Private
+
+let typeEncodingOfFlags flags =
+ let f = (flags &&& 0x00030000)
+ if f = 0x00020000 then ILDefaultPInvokeEncoding.Auto
+ elif f = 0x00010000 then ILDefaultPInvokeEncoding.Unicode
+ else ILDefaultPInvokeEncoding.Ansi
+
[]
type ILTypeDefKind =
| Class
@@ -1551,91 +1924,239 @@ type ILTypeDefKind =
| Enum
| Delegate
+let typeKindOfFlags nm _mdefs _fdefs (super:ILType option) flags =
+ if (flags &&& 0x00000020) <> 0x0 then ILTypeDefKind.Interface
+ else
+ let isEnum, isDelegate, isMulticastDelegate, isValueType =
+ match super with
+ | None -> false , false, false, false
+ | Some ty ->
+ ty.TypeSpec.Name = "System.Enum",
+ ty.TypeSpec.Name = "System.Delegate",
+ ty.TypeSpec.Name = "System.MulticastDelegate",
+ ty.TypeSpec.Name = "System.ValueType" && nm <> "System.Enum"
+ let selfIsMulticastDelegate = nm = "System.MulticastDelegate"
+ if isEnum then ILTypeDefKind.Enum
+ elif (isDelegate && not selfIsMulticastDelegate) || isMulticastDelegate then ILTypeDefKind.Delegate
+ elif isValueType then ILTypeDefKind.ValueType
+ else ILTypeDefKind.Class
+
+let convertTypeAccessFlags access =
+ match access with
+ | ILTypeDefAccess.Public -> TypeAttributes.Public
+ | ILTypeDefAccess.Private -> TypeAttributes.NotPublic
+ | ILTypeDefAccess.Nested ILMemberAccess.Public -> TypeAttributes.NestedPublic
+ | ILTypeDefAccess.Nested ILMemberAccess.Private -> TypeAttributes.NestedPrivate
+ | ILTypeDefAccess.Nested ILMemberAccess.Family -> TypeAttributes.NestedFamily
+ | ILTypeDefAccess.Nested ILMemberAccess.CompilerControlled -> TypeAttributes.NestedPrivate
+ | ILTypeDefAccess.Nested ILMemberAccess.FamilyAndAssembly -> TypeAttributes.NestedFamANDAssem
+ | ILTypeDefAccess.Nested ILMemberAccess.FamilyOrAssembly -> TypeAttributes.NestedFamORAssem
+ | ILTypeDefAccess.Nested ILMemberAccess.Assembly -> TypeAttributes.NestedAssembly
+
+let convertTypeKind kind =
+ match kind with
+ | ILTypeDefKind.Class -> TypeAttributes.Class
+ | ILTypeDefKind.ValueType -> TypeAttributes.Class
+ | ILTypeDefKind.Interface -> TypeAttributes.Abstract ||| TypeAttributes.Interface
+ | ILTypeDefKind.Enum -> TypeAttributes.Class
+ | ILTypeDefKind.Delegate -> TypeAttributes.Class
+
+let convertLayout layout =
+ match layout with
+ | ILTypeDefLayout.Auto -> TypeAttributes.AutoLayout
+ | ILTypeDefLayout.Sequential _ -> TypeAttributes.SequentialLayout
+ | ILTypeDefLayout.Explicit _ -> TypeAttributes.ExplicitLayout
+
+let convertEncoding encoding =
+ match encoding with
+ | ILDefaultPInvokeEncoding.Auto -> TypeAttributes.AutoClass
+ | ILDefaultPInvokeEncoding.Ansi -> TypeAttributes.AnsiClass
+ | ILDefaultPInvokeEncoding.Unicode -> TypeAttributes.UnicodeClass
+
+let convertToNestedTypeAccess (ilMemberAccess:ILMemberAccess) =
+ match ilMemberAccess with
+ | ILMemberAccess.Assembly -> TypeAttributes.NestedAssembly
+ | ILMemberAccess.CompilerControlled -> failwith "Method access compiler controlled."
+ | ILMemberAccess.FamilyAndAssembly -> TypeAttributes.NestedFamANDAssem
+ | ILMemberAccess.FamilyOrAssembly -> TypeAttributes.NestedFamORAssem
+ | ILMemberAccess.Family -> TypeAttributes.NestedFamily
+ | ILMemberAccess.Private -> TypeAttributes.NestedPrivate
+ | ILMemberAccess.Public -> TypeAttributes.NestedPublic
+
+let convertInitSemantics (init:ILTypeInit) =
+ match init with
+ | ILTypeInit.BeforeField -> TypeAttributes.BeforeFieldInit
+ | ILTypeInit.OnAny -> enum 0
[]
-type ILTypeDef =
- { tdKind: ILTypeDefKind;
- Name: string;
- GenericParams: ILGenericParameterDefs; (* class is generic *)
- Access: ILTypeDefAccess;
- IsAbstract: bool;
- IsSealed: bool;
- IsSerializable: bool;
- IsComInterop: bool; (* Class or interface generated for COM interop *)
- Layout: ILTypeDefLayout;
- IsSpecialName: bool;
- Encoding: ILDefaultPInvokeEncoding;
- NestedTypes: ILTypeDefs;
- Implements: ILTypes;
- Extends: ILType option;
- Methods: ILMethodDefs;
- SecurityDecls: ILPermissions;
- HasSecurity: bool;
- Fields: ILFieldDefs;
- MethodImpls: ILMethodImplDefs;
- InitSemantics: ILTypeInit;
- Events: ILEventDefs;
- Properties: ILPropertyDefs;
- CustomAttrs: ILAttributes; }
- member x.IsClass = (match x.tdKind with ILTypeDefKind.Class -> true | _ -> false)
- member x.IsInterface = (match x.tdKind with ILTypeDefKind.Interface -> true | _ -> false)
- member x.IsEnum = (match x.tdKind with ILTypeDefKind.Enum -> true | _ -> false)
- member x.IsDelegate = (match x.tdKind with ILTypeDefKind.Delegate -> true | _ -> false)
-
- member tdef.IsStructOrEnum =
- match tdef.tdKind with
- | ILTypeDefKind.ValueType | ILTypeDefKind.Enum -> true
- | _ -> false
-
-
-and [] ILTypeDefs(f : unit -> (string list * string * ILAttributes * Lazy)[]) =
+type ILTypeDef(name: string, attributes: TypeAttributes, layout: ILTypeDefLayout, implements: ILTypes, genericParams: ILGenericParameterDefs,
+ extends: ILType option, methods: ILMethodDefs, nestedTypes: ILTypeDefs, fields: ILFieldDefs, methodImpls: ILMethodImplDefs,
+ events: ILEventDefs, properties: ILPropertyDefs, securityDeclsStored: ILSecurityDeclsStored, customAttrsStored: ILAttributesStored, metadataIndex: int32) =
+
+ let mutable customAttrsStored = customAttrsStored
+
+ new (name, attributes, layout, implements, genericParams, extends, methods, nestedTypes, fields, methodImpls, events, properties, securityDecls, customAttrs) =
+ ILTypeDef (name, attributes, layout, implements, genericParams, extends, methods, nestedTypes, fields, methodImpls, events, properties, storeILSecurityDecls securityDecls, storeILCustomAttrs customAttrs, NoMetadataIdx)
+
+ member __.Name = name
+ member __.Attributes = attributes
+ member __.GenericParams = genericParams
+ member __.Layout = layout
+ member __.NestedTypes = nestedTypes
+ member __.Implements = implements
+ member __.Extends = extends
+ member __.Methods = methods
+ member __.SecurityDeclsStored = securityDeclsStored
+ member __.Fields = fields
+ member __.MethodImpls = methodImpls
+ member __.Events = events
+ member __.Properties = properties
+ member __.CustomAttrsStored = customAttrsStored
+ member __.MetadataIndex = metadataIndex
+
+ member x.With(?name, ?attributes, ?layout, ?implements, ?genericParams, ?extends, ?methods, ?nestedTypes, ?fields, ?methodImpls, ?events, ?properties, ?customAttrs, ?securityDecls) =
+ ILTypeDef(name=defaultArg name x.Name,
+ attributes=defaultArg attributes x.Attributes,
+ layout=defaultArg layout x.Layout,
+ genericParams = defaultArg genericParams x.GenericParams,
+ nestedTypes = defaultArg nestedTypes x.NestedTypes,
+ implements = defaultArg implements x.Implements,
+ extends = defaultArg extends x.Extends,
+ methods = defaultArg methods x.Methods,
+ securityDecls = defaultArg securityDecls x.SecurityDecls,
+ fields = defaultArg fields x.Fields,
+ methodImpls = defaultArg methodImpls x.MethodImpls,
+ events = defaultArg events x.Events,
+ properties = defaultArg properties x.Properties,
+ customAttrs = defaultArg customAttrs x.CustomAttrs)
+
+ member x.CustomAttrs =
+ match customAttrsStored with
+ | ILAttributesStored.Reader f ->
+ let res = ILAttributes(f x.MetadataIndex)
+ customAttrsStored <- ILAttributesStored.Given res
+ res
+ | ILAttributesStored.Given res ->
+ res
+
+ member x.SecurityDecls = x.SecurityDeclsStored.GetSecurityDecls x.MetadataIndex
+
+ member x.IsClass = (typeKindOfFlags x.Name x.Methods x.Fields x.Extends (int x.Attributes)) = ILTypeDefKind.Class
+ member x.IsStruct = (typeKindOfFlags x.Name x.Methods x.Fields x.Extends (int x.Attributes)) = ILTypeDefKind.ValueType
+ member x.IsInterface = (typeKindOfFlags x.Name x.Methods x.Fields x.Extends (int x.Attributes)) = ILTypeDefKind.Interface
+ member x.IsEnum = (typeKindOfFlags x.Name x.Methods x.Fields x.Extends (int x.Attributes)) = ILTypeDefKind.Enum
+ member x.IsDelegate = (typeKindOfFlags x.Name x.Methods x.Fields x.Extends (int x.Attributes)) = ILTypeDefKind.Delegate
+ member x.Access = typeAccessOfFlags (int x.Attributes)
+ member x.IsAbstract = x.Attributes &&& TypeAttributes.Abstract <> enum 0
+ member x.IsSealed = x.Attributes &&& TypeAttributes.Sealed <> enum 0
+ member x.IsSerializable = x.Attributes &&& TypeAttributes.Serializable <> enum 0
+ member x.IsComInterop = x.Attributes &&& TypeAttributes.Import <> enum 0 (* Class or interface generated for COM interop *)
+ member x.IsSpecialName = x.Attributes &&& TypeAttributes.SpecialName <> enum 0
+ member x.HasSecurity = x.Attributes &&& TypeAttributes.HasSecurity <> enum 0
+ member x.Encoding = typeEncodingOfFlags (int x.Attributes)
+ member x.IsStructOrEnum = x.IsStruct || x.IsEnum
+ member x.WithAccess(access) = x.With(attributes=(x.Attributes &&& ~~~TypeAttributes.VisibilityMask ||| convertTypeAccessFlags access))
+ member x.WithNestedAccess(access) = x.With(attributes=(x.Attributes &&& ~~~TypeAttributes.VisibilityMask ||| convertToNestedTypeAccess access))
+ member x.WithSealed(condition) = x.With(attributes=(x.Attributes |> conditionalAdd condition TypeAttributes.Sealed))
+ member x.WithSerializable(condition) = x.With(attributes=(x.Attributes |> conditionalAdd condition TypeAttributes.Serializable))
+ member x.WithAbstract(condition) = x.With(attributes=(x.Attributes |> conditionalAdd condition TypeAttributes.Abstract))
+ member x.WithImport(condition) = x.With(attributes=(x.Attributes |> conditionalAdd condition TypeAttributes.Import))
+ member x.WithHasSecurity(condition) = x.With(attributes=(x.Attributes |> conditionalAdd condition TypeAttributes.HasSecurity))
+ member x.WithLayout(layout) = x.With(attributes=(x.Attributes ||| convertLayout layout), layout = layout)
+ member x.WithKind(kind) = x.With(attributes=(x.Attributes ||| convertTypeKind kind), extends = match kind with ILTypeDefKind.Interface -> None | _ -> x.Extends)
+ member x.WithEncoding(encoding) = x.With(attributes=(x.Attributes &&& ~~~TypeAttributes.StringFormatMask ||| convertEncoding encoding))
+ member x.WithSpecialName(condition) = x.With(attributes=(x.Attributes |> conditionalAdd condition TypeAttributes.SpecialName))
+ member x.WithInitSemantics(init) = x.With(attributes=(x.Attributes ||| convertInitSemantics init))
+
+and [] ILTypeDefs(f : unit -> ILPreTypeDef[]) =
let mutable array = InlineDelayInit<_>(f)
+
let mutable dict = InlineDelayInit<_>(fun () ->
- let arr = array.Value
- let t = Dictionary<_,_>(HashIdentity.Structural)
- for (nsp, nm, _attr, ltd) in arr do
- let key = nsp, nm
- t.[key] <- ltd
- t)
+ let arr = array.Value
+ let t = Dictionary<_, _>(HashIdentity.Structural)
+ for pre in arr do
+ let key = pre.Namespace, pre.Name
+ t.[key] <- pre
+ t)
- member x.AsArray = [| for (_,_,_,ltd) in array.Value -> ltd.Force() |]
- member x.AsList = [ for (_,_,_,ltd) in array.Value -> ltd.Force() ]
+ member x.AsArray = [| for pre in array.Value -> pre.GetTypeDef() |]
+
+ member x.AsList = [ for pre in array.Value -> pre.GetTypeDef() ]
interface IEnumerable with
member x.GetEnumerator() = ((x :> IEnumerable).GetEnumerator() :> IEnumerator)
interface IEnumerable with
member x.GetEnumerator() =
- (seq { for (_,_,_,ltd) in array.Value -> ltd.Force() }).GetEnumerator()
+ (seq { for pre in array.Value -> pre.GetTypeDef() }).GetEnumerator()
- member x.AsArrayOfLazyTypeDefs = array.Value
+ member x.AsArrayOfPreTypeDefs = array.Value
member x.FindByName nm =
- let ns,n = splitILTypeName nm
- dict.Value.[(ns,n)].Force()
+ let ns, n = splitILTypeName nm
+ dict.Value.[(ns, n)].GetTypeDef()
+
+/// This is a memory-critical class. Very many of these objects get allocated and held to represent the contents of .NET assemblies.
+and [] ILPreTypeDef(nameSpace: string list, name: string, metadataIndex: int32, storage: ILTypeDefStored) =
+ let mutable store : ILTypeDef = Unchecked.defaultof<_>
+
+ member __.Namespace = nameSpace
+ member __.Name = name
+ member __.MetadataIndex = metadataIndex
+
+ member x.GetTypeDef() =
+ match box store with
+ | null ->
+ match storage with
+ | ILTypeDefStored.Given td ->
+ store <- td
+ td
+ | ILTypeDefStored.Computed f ->
+ System.Threading.LazyInitializer.EnsureInitialized(&store, System.Func<_>(fun () -> f()))
+ | ILTypeDefStored.Reader f ->
+ System.Threading.LazyInitializer.EnsureInitialized(&store, System.Func<_>(fun () -> f x.MetadataIndex))
+ | _ -> store
+
+and ILTypeDefStored =
+ | Given of ILTypeDef
+ | Reader of (int32 -> ILTypeDef)
+ | Computed of (unit -> ILTypeDef)
+
+let mkILTypeDefReader f = ILTypeDefStored.Reader f
type ILNestedExportedType =
- { Name: string;
- Access: ILMemberAccess;
- Nested: ILNestedExportedTypes;
- CustomAttrs: ILAttributes }
+ { Name: string
+ Access: ILMemberAccess
+ Nested: ILNestedExportedTypes
+ CustomAttrsStored: ILAttributesStored
+ MetadataIndex: int32 }
+
+ member x.CustomAttrs = x.CustomAttrsStored.GetCustomAttrs x.MetadataIndex
and ILNestedExportedTypes =
- | ILNestedExportedTypes of Lazy