Skip to content

Commit cf09b76

Browse files
2 parents f59e660 + 30127fa commit cf09b76

File tree

176 files changed

+6507
-2736
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

176 files changed

+6507
-2736
lines changed

.gitignore

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ scripts/*.patch
5858
/tests/fsharpqa/Source/CodeGen/EmittedIL/StaticInit/StaticInit_Module01.dll
5959
/tests/fsharpqa/Source/CodeGen/EmittedIL/StaticInit/StaticInit_Module01.pdb
6060
/tests/Xnet40-fsharpqa-suite-failures.log.*
61-
/vsintegration/src/vs/FsPkgs/FSharp.Project/FS/FSharp.ProjectSystem.FSharp.fsi
62-
/vsintegration/src/vs/FsPkgs/FSharp.Project/FS/ctofiles/
61+
/vsintegration/src/service/FsPkgs/FSharp.Project/FS/FSharp.ProjectSystem.FSharp.fsi
62+
/vsintegration/src/service/FsPkgs/FSharp.Project/FS/ctofiles/
6363
/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Utils.dll
6464
/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExprLibrary.dll
6565
/tests/fsharpqa/Source/*net40-fsharpqa-suite-failures.env
@@ -227,3 +227,4 @@ lib/netcore/fsc/bin/
227227
/fcs/TestResult.xml
228228
/tests/fcs/
229229
/fcs/.paket/Paket.Restore.targets
230+
msbuild.binlog

DEVGUIDE.md

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,8 @@ Install Xamarin Studio, then
9797
To build and test Visual F# IDE Tools, install these requirements:
9898
- [Visual Studio 2017](https://www.visualstudio.com/downloads/)
9999
- Under the "Windows" workloads, select ".NET desktop development"
100-
- Select "F# language support" under the optional components
100+
- Select "F# desktop language support" under the optional components
101101
- Under the "Other Toolsets" workloads, select "Visual Studio extension development"
102-
- Under the "Individual components" tab select "Windows 10 SDK" as shown below (needed for compiling RC resource, see #2556): \
103-
![image](https://cloud.githubusercontent.com/assets/1249087/23730261/5c78c850-041b-11e7-9d9d-62766351fd0f.png)
104-
- Failing to install this will lead to error FS0193: Could not find file visualfsharp\vsintegration\src\FSharp.ProjectSystem.FSharp\obj\net40\ProjectResources.rc.res.
105102

106103
Steps to build:
107104

@@ -111,7 +108,6 @@ Steps to build:
111108

112109
Use ``VisualFSharp.sln`` if you're building the Visual F# IDE Tools.
113110

114-
115111
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.
116112

117113
Note: if you face this error [#2351](https://github.com/Microsoft/visualfsharp/issues/2351):
@@ -125,7 +121,6 @@ Or hard crash on launch ("Unknown Error"), delete these folders:
125121

126122
#### [Optional] Install the Visual F# IDE Tools (Windows Only)
127123

128-
At time of writing, the Visual F# IDE Tools can only be installed into the latest Visual Studio 2017 RC releases.
129124
The new builds of the Visual F# IDE Tools can no longer be installed into Visual Studio 2015.
130125

131126
You can install Visual Studio 2017 from https://www.visualstudio.com/downloads/.
@@ -155,7 +150,6 @@ changes, but the root (default) hive will remain untouched. You can also start t
155150

156151
Because this uses the "RoslynDev" hive you can simultaneously test changes to an appropriate build of Roslyn binaries.
157152

158-
159153
#### [Optional] Rapid deployment of incremental changes to Visual F# IDE Tools components
160154

161155
For the brave, you can rapidly deploy incrementally updated versions of Visual F# IDE Tool components such as ``FSHarp.Editor.dll`` by copying them directly into the extension directory in your user AppData folder:
@@ -176,7 +170,6 @@ For **Release**:
176170

177171
vsintegration\update-vsintegration.cmd release
178172

179-
180173
# Notes
181174

182175
#### Windows: Links to Additional frameworks
@@ -192,10 +185,9 @@ For **Release**:
192185
- [Windows 8.1 SDK](http://msdn.microsoft.com/en-us/library/windows/desktop/bg162891.aspx)
193186
- [Windows 10 SDK](https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk)
194187

195-
196188
#### Notes on the Windows .NET Framework build
197189

198-
1. The `update.cmd` script adds required strong name validation skips, and NGens the compiler and libraries. This requires admin privileges.
190+
1. The `update.cmd` script adds required strong name validation skips and NGens the compiler and libraries. This requires admin privileges.
199191
1. The compiler binaries produced are "private" and strong-named signed with a test key.
200192
1. Some additional tools are required to build the compiler, notably `fslex.exe`, `fsyacc.exe`, `FSharp.PowerPack.Build.Tasks.dll`, `FsSrGen.exe`, `FSharp.SRGen.Build.Tasks.dll`, and the other tools found in the `lkg` directory.
201193
1. The overall bootstrapping process executes as follows
@@ -217,4 +209,3 @@ Where you should set proper proxy address, user name and password.
217209
#### Resources
218210

219211
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.
220-

PublishToBlob.proj

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,25 @@
1010
<PropertyGroup>
1111
<FeedTasksPackage>Microsoft.DotNet.Build.Tasks.Feed</FeedTasksPackage>
1212
<!-- This version should be kept in sync with `packages.config` -->
13-
<FeedTasksPackageVersion>1.0.0-prerelease-02121-01</FeedTasksPackageVersion>
13+
<FeedTasksPackageVersion>1.0.0-prerelease-02219-01</FeedTasksPackageVersion>
1414
</PropertyGroup>
1515

1616
<Import Project="$(MSBuildThisFileDirectory)packages\$(FeedTasksPackage).$(FeedTasksPackageVersion)\build\$(FeedTasksPackage).targets" />
1717

1818
<ItemGroup>
19-
<ItemsToPush Include="$(MSBuildThisFileDirectory)artifacts\**\*.nupkg" />
19+
<NuGetPackages Include="$(MSBuildThisFileDirectory)artifacts\**\*.nupkg" />
20+
<OtherAssets Include="$(MSBuildThisFileDirectory)insertion\**" />
2021
</ItemGroup>
2122

2223
<Target Name="Build">
2324
<PushToBlobFeed ExpectedFeedUrl="$(ExpectedFeedUrl)"
2425
AccountKey="$(AccountKey)"
25-
ItemsToPush="@(ItemsToPush)"
26+
ItemsToPush="@(NuGetPackages)"
27+
Overwrite="$(PublishOverwrite)" />
28+
<PushToBlobFeed ExpectedFeedUrl="$(ExpectedFeedUrl)"
29+
AccountKey="$(AccountKey)"
30+
ItemsToPush="@(OtherAssets)"
31+
PublishFlatContainer="true"
2632
Overwrite="$(PublishOverwrite)" />
2733
</Target>
2834

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
{
2+
"sign": [
3+
{
4+
"certificate": "Microsoft",
5+
"strongName": "StrongName",
6+
"values": [
7+
"net40\\bin\\FSharp.Core.dll",
8+
"net40\\bin\\*\\FSharp.Core.resources.dll",
9+
"net40\\bin\\FSharp.Build.dll",
10+
"net40\\bin\\*\\FSharp.Build.resources.dll",
11+
"net40\\bin\\FSharp.Compiler.Private.dll",
12+
"net40\\bin\\*\\FSharp.Compiler.Private.resources.dll",
13+
"net40\\bin\\FSharp.Compiler.Server.Shared.dll",
14+
"net40\\bin\\FSharp.Compiler.Interactive.Settings.dll",
15+
"net40\\bin\\*\\FSharp.Compiler.Interactive.Settings.resources.dll",
16+
"net40\\bin\\fsc.exe",
17+
"net40\\bin\\fsi.exe",
18+
"net40\\bin\\fsiAnyCpu.exe",
19+
"net40\\bin\\FSharp.VS.FSI.dll",
20+
"net40\\bin\\*\\FSharp.VS.FSI.resources.dll",
21+
"net40\\bin\\FSharp.LanguageService.Base.dll",
22+
"net40\\bin\\*\\FSharp.LanguageService.Base.resources.dll",
23+
"net40\\bin\\FSharp.LanguageService.dll",
24+
"net40\\bin\\*\\FSharp.LanguageService.resources.dll",
25+
"net40\\bin\\FSharp.UIResources.dll",
26+
"net40\\bin\\*\\FSharp.UIResources.resources.dll",
27+
"net40\\bin\\FSharp.Editor.dll",
28+
"net40\\bin\\*\\FSharp.Editor.resources.dll",
29+
"net40\\bin\\FSharp.ProjectSystem.Base.dll",
30+
"net40\\bin\\*\\FSharp.ProjectSystem.Base.resources.dll",
31+
"net40\\bin\\FSharp.ProjectSystem.PropertyPages.dll",
32+
"net40\\bin\\*\\FSharp.ProjectSystem.PropertyPages.resources.dll",
33+
"net40\\bin\\FSharp.ProjectSystem.FSharp.dll",
34+
"net40\\bin\\*\\FSharp.ProjectSystem.FSharp.resources.dll",
35+
"coreclr\\bin\\FSharp.Core.dll",
36+
"coreclr\\bin\\*\\FSharp.Core.resources.dll",
37+
"coreclr\\bin\\FSharp.Build.dll",
38+
"coreclr\\bin\\*\\FSharp.Build.resources.dll",
39+
"coreclr\\bin\\FSharp.Compiler.Private.dll",
40+
"coreclr\\bin\\*\\FSharp.Compiler.Private.resources.dll",
41+
"coreclr\\bin\\FSharp.Compiler.Interactive.Settings.dll",
42+
"coreclr\\bin\\*\\FSharp.Compiler.Interactive.Settings.resources.dll",
43+
"coreclr\\bin\\fsc.exe",
44+
"coreclr\\bin\\fsi.exe"
45+
]
46+
},
47+
{
48+
"certificate": "VsixSHA2",
49+
"strongName": null,
50+
"values": [
51+
"net40\\bin\\VisualFSharpFull.vsix",
52+
"net40\\bin\\VisualFSharpTemplate.vsix",
53+
"net40\\bin\\VisualFSharpOpenSource.vsix",
54+
"insertion\\Microsoft.FSharp.Dependencies.vsix",
55+
"insertion\\Microsoft.FSharp.VSIX.Full.Resources.*.vsix"
56+
]
57+
}
58+
],
59+
"exclude": [
60+
"Microsoft.Build.Conversion.Core.dll",
61+
"Microsoft.Build.dll",
62+
"Microsoft.Build.Engine.dll",
63+
"Microsoft.Build.Framework.dll",
64+
"Microsoft.Build.Tasks.Core.dll",
65+
"Microsoft.Build.Utilities.Core.dll",
66+
"Microsoft.DiaSymReader.dll",
67+
"Microsoft.DiaSymReader.PortablePdb.dll",
68+
"Newtonsoft.Json.dll",
69+
"System.ValueTuple.4.3.1.nupkg",
70+
"System.Collections.Immutable.dll",
71+
"System.Reflection.Metadata.dll",
72+
"System.ValueTuple.dll"
73+
]
74+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"sign": [
3+
{
4+
"certificate": "VsixSHA2",
5+
"strongName": null,
6+
"values": [
7+
"insertion\\Microsoft.FSharp.SDK.Resources.ENU.vsix"
8+
]
9+
}
10+
],
11+
"exclude": [
12+
]
13+
}
14+

build/config/MsiSignToolData.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"sign": [
3+
{
4+
"certificate": "Microsoft400",
5+
"strongName": null,
6+
"values": [
7+
"msi\\Microsoft.FSharp.SDK.Core.msi",
8+
"msi\\Microsoft.FSharp.SDK.Resources.*.msi"
9+
]
10+
}
11+
],
12+
"exclude": [
13+
]
14+
}
15+

build/config/packages.config

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<packages>
2+
<package id="MicroBuild.Core" version="0.2.0" />
3+
<package id="MicroBuild.Core.Sentinel" version="1.0.0" />
4+
<package id="RoslynTools.SignTool" version="1.0.0-beta-62328-01" />
5+
</packages>

build/scripts/run-signtool.cmd

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
@echo off
2+
:: Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
3+
setlocal enableDelayedExpansion
4+
set scriptdir=%~dp0
5+
set MSBuild=
6+
set SignType=
7+
set ConfigFile=
8+
9+
::
10+
:: Validate arguments
11+
::
12+
13+
:parsearg
14+
if "%1" == "" goto doneargs
15+
set arg=%1
16+
set argv=%2
17+
18+
if /i "%arg%" == "/?" goto help
19+
if /i "%arg%" == "-h" goto help
20+
if /i "%arg%" == "--help" goto help
21+
if /i "%arg%" == "-MSBuild" (
22+
set MSBuild=%argv%
23+
shift
24+
)
25+
if /i "%arg%" == "-SignType" (
26+
set SignType=%argv%
27+
shift
28+
)
29+
if /i "%arg%" == "-ConfigFile" (
30+
set ConfigFile=%argv%
31+
shift
32+
)
33+
34+
shift
35+
goto parsearg
36+
37+
:doneargs
38+
39+
if not defined MSBuild echo Location of MSBuild.exe not specified. && goto error
40+
if not defined ConfigFile echo Configuration file not specified. && goto error
41+
if not exist "%MSBuild%" echo The specified MSBuild.exe does not exist. && goto error
42+
43+
set NUGET_PACKAGES=%USERPROFILE%\.nuget\packages
44+
set _signtoolexe=%NUGET_PACKAGES%\RoslynTools.SignTool\1.0.0-beta-62328-01\tools\SignTool.exe
45+
set SignToolArgs=-msbuildPath %MSBuild% -config "%ConfigFile%" -nugetPackagesPath "%NUGET_PACKAGES%"
46+
if /i "%SignType%" == "real" goto runsigntool
47+
if /i "%SignType%" == "test" set SignToolArgs=%SignToolArgs% -testSign && goto runsigntool
48+
set SignToolArgs=%SignToolArgs% -test
49+
50+
:runsigntool
51+
52+
if not exist "%_signtoolexe%" echo The signing tool could not be found at location '%_signtoolexe%' && goto error
53+
set SignToolArgs=%SignToolArgs% "%scriptdir%..\..\release"
54+
echo "%_signtoolexe%" %SignToolArgs%
55+
"%_signtoolexe%" %SignToolArgs%
56+
if errorlevel 1 goto error
57+
goto :EOF
58+
59+
:help
60+
echo Usage: %0 -MSBuild path\to\msbuild.exe -ConfigFile path\to\SignToolData.json [-SignType ^<real/test^>]
61+
goto :EOF
62+
63+
:error
64+
echo Error running the sign tool.
65+
exit /b 1

build/targets/GitHash.props

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!-- Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -->
3+
4+
<!--
5+
Copied from RepoToolset. Might be slightly modified to adjust for the current F# build system specifics if necessary.
6+
-->
7+
8+
<Project>
9+
<!--
10+
11+
Defines the following properties:
12+
GitHeadSha
13+
14+
-->
15+
16+
<PropertyGroup>
17+
<RepoRoot>$(MSBuildThisFileDirectory)..\..\</RepoRoot>
18+
</PropertyGroup>
19+
20+
<Choose>
21+
<When Condition="'$(BUILD_SOURCEVERSION)' != ''">
22+
<PropertyGroup>
23+
<GitHeadSha>$(BUILD_SOURCEVERSION)</GitHeadSha>
24+
</PropertyGroup>
25+
</When>
26+
27+
<When Condition="'$(BUILD_SOURCEVERSION)' == '' and '$(GIT_COMMIT)' != ''">
28+
<PropertyGroup>
29+
<GitHeadSha>$(GIT_COMMIT)</GitHeadSha>
30+
</PropertyGroup>
31+
</When>
32+
33+
<When Condition="'$(CI)' != '1'">
34+
<PropertyGroup>
35+
<GitHeadSha>&lt;developer build&gt;</GitHeadSha>
36+
</PropertyGroup>
37+
</When>
38+
39+
<Otherwise>
40+
<PropertyGroup>
41+
<GitHeadSha></GitHeadSha>
42+
<_DotGitDir>$(RepoRoot).git</_DotGitDir>
43+
<_HeadFileContent Condition="Exists('$(_DotGitDir)/HEAD')">$([System.IO.File]::ReadAllText('$(_DotGitDir)/HEAD').Trim())</_HeadFileContent>
44+
<_RefPath Condition="$(_HeadFileContent.StartsWith('ref: '))">$(_DotGitDir)/$(_HeadFileContent.Substring(5))</_RefPath>
45+
<GitHeadSha Condition="'$(_RefPath)' != '' and Exists('$(_RefPath)')">$([System.IO.File]::ReadAllText('$(_RefPath)').Trim())</GitHeadSha>
46+
<GitHeadSha Condition="'$(_HeadFileContent)' != '' and '$(_RefPath)' == ''">$(_HeadFileContent)</GitHeadSha>
47+
</PropertyGroup>
48+
</Otherwise>
49+
</Choose>
50+
51+
</Project>

fcs/.paket/Paket.Restore.targets

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@
1818
<PaketExePath Condition=" '$(PaketExePath)' == '' ">$(PaketToolsPath)paket.exe</PaketExePath>
1919
<PaketCommand Condition=" '$(OS)' == 'Windows_NT'">"$(PaketExePath)"</PaketCommand>
2020
<PaketCommand Condition=" '$(OS)' != 'Windows_NT' ">$(MonoPath) --runtime=v4.0.30319 "$(PaketExePath)"</PaketCommand>
21+
22+
<!-- .net core fdd -->
23+
<_PaketExeExtension>$([System.IO.Path]::GetExtension("$(PaketExePath)"))</_PaketExeExtension>
24+
<PaketCommand Condition=" '$(_PaketExeExtension)' == '.dll' ">dotnet "$(PaketExePath)"</PaketCommand>
25+
2126
<PaketBootStrapperExePath Condition=" '$(PaketBootStrapperExePath)' == '' AND Exists('$(PaketRootPath)paket.bootstrapper.exe')">$(PaketRootPath)paket.bootstrapper.exe</PaketBootStrapperExePath>
2227
<PaketBootStrapperExePath Condition=" '$(PaketBootStrapperExePath)' == '' ">$(PaketToolsPath)paket.bootstrapper.exe</PaketBootStrapperExePath>
2328
<PaketBootStrapperCommand Condition=" '$(OS)' == 'Windows_NT'">"$(PaketBootStrapperExePath)"</PaketBootStrapperCommand>
@@ -114,9 +119,11 @@
114119
<PaketReferencesFileLinesInfo Include="@(PaketReferencesFileLines)" >
115120
<PackageName>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[0])</PackageName>
116121
<PackageVersion>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[1])</PackageVersion>
122+
<AllPrivateAssets>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[4])</AllPrivateAssets>
117123
</PaketReferencesFileLinesInfo>
118124
<PackageReference Include="%(PaketReferencesFileLinesInfo.PackageName)">
119125
<Version>%(PaketReferencesFileLinesInfo.PackageVersion)</Version>
126+
<PrivateAssets Condition="%(PaketReferencesFileLinesInfo.AllPrivateAssets) == 'true'">All</PrivateAssets>
120127
</PackageReference>
121128
</ItemGroup>
122129

0 commit comments

Comments
 (0)