integrate dev15.8
This commit is contained in:
Коммит
f3e3fe0d3c
|
@ -99,7 +99,6 @@ ossreadme*.txt
|
|||
*.csproj.user
|
||||
*.fsproj.user
|
||||
*.sln.DotSettings.user
|
||||
*.ide
|
||||
*.log
|
||||
*.jrs
|
||||
*.chk
|
||||
|
|
|
@ -52,13 +52,15 @@ steps:
|
|||
continueOnError: true
|
||||
|
||||
# Create static drop
|
||||
- task: ms-vseng.MicroBuildTasks.bd4b789e-7292-4b73-a8ee-612d3dd615f1.MicroBuildStaticDrop@1
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: Create static drop
|
||||
inputs:
|
||||
CopyRoot: '$(MSBuildConfiguration)'
|
||||
Contents: '**'
|
||||
ArtifactName: Binaries
|
||||
TargetPath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)\$(Build.BuildNumber)\Binaries'
|
||||
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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -221,9 +221,9 @@ If you change error messages you may need to update FSComp.fs in `src\buildfroms
|
|||
|
||||
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.
|
||||
|
||||
copy /y src\fsharp\FSharp.Compiler.Private\obj\Debug\net40\FSComp.fs src\buildfromsource\FSharp.Compiler.Private\
|
||||
copy /y src\fsharp\FSharp.Compiler.Private\obj\Debug\net40\FSComp.resx src\buildfromsource\FSharp.Compiler.Private\
|
||||
|
||||
.\build net40
|
||||
copy /y src\fsharp\FSharp.Compiler.Private\obj\release\net40\FSComp.* src\buildfromsource\FSharp.Compiler.Private\
|
||||
|
||||
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
|
||||
|
||||
pushd src\fsharp\FSharp.Compiler.Private
|
||||
|
|
|
@ -1 +1 @@
|
|||
2.1.300-preview3-008433
|
||||
2.1.300-rtm-008707
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
<ToolsRoot>$(RepoRoot)Tools</ToolsRoot>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<ProtoOutputPath>$(RepoRoot)Proto\net40\bin</ProtoOutputPath>
|
||||
<ValueTupleImplicitPackageVersion>4.4.0</ValueTupleImplicitPackageVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- nuget -->
|
||||
|
|
|
@ -1 +1 @@
|
|||
2.8.0-beta1-62707-12
|
||||
2.8.0
|
||||
|
|
29
build.cmd
29
build.cmd
|
@ -17,7 +17,7 @@ echo Build and run a subset of test suites
|
|||
echo.
|
||||
echo Usage:
|
||||
echo.
|
||||
echo build.cmd ^<all^|net40^|coreclr^|vs^>
|
||||
echo build.cmd ^<all^|net40^|coreclr^|vs^|fcs^>
|
||||
echo ^<proto^|protofx^>
|
||||
echo ^<ci^|ci_part1^|ci_part2^|ci_part3^|ci_part4^|microbuild^|nuget^>
|
||||
echo ^<debug^|release^>
|
||||
|
@ -481,6 +481,9 @@ if NOT EXIST Proto\net40\bin\fsc.exe (
|
|||
set BUILD_PROTO=1
|
||||
)
|
||||
|
||||
rem turn off vs ide unit tests until they pass again
|
||||
set TEST_VS_IDEUNIT_SUITE= 0
|
||||
|
||||
rem
|
||||
rem This stops the dotnet cli from hunting around and
|
||||
rem finding the highest possible dotnet sdk version to use.
|
||||
|
@ -793,8 +796,8 @@ if "%BUILD_NET40%" == "1" (
|
|||
echo ---------------- Done with assembly version checks, starting assembly signing ---------------
|
||||
|
||||
if not "%SIGN_TYPE%" == "" (
|
||||
echo build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -ConfigFile build\config\AssemblySignToolData.json
|
||||
call build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -ConfigFile build\config\AssemblySignToolData.json
|
||||
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
|
||||
)
|
||||
|
||||
|
@ -805,20 +808,8 @@ echo %_msbuildexe% %msbuildflags% build-nuget-packages.proj /p:Configuration=%BU
|
|||
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% -ConfigFile build\config\PackageSignToolData.json
|
||||
call build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -ConfigFile build\config\PackageSignToolData.json
|
||||
if ERRORLEVEL 1 echo Error running sign tool && goto :failure
|
||||
)
|
||||
|
||||
if "%BUILD_SETUP%" == "1" (
|
||||
echo %_msbuildexe% %msbuildflags% setup\build-msi.proj /p:Configuration=%BUILD_CONFIG%
|
||||
%_msbuildexe% %msbuildflags% setup\build-msi.proj /p:Configuration=%BUILD_CONFIG%
|
||||
if ERRORLEVEL 1 echo Error building MSI && goto :failure
|
||||
)
|
||||
|
||||
if not "%SIGN_TYPE%" == "" (
|
||||
echo build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -ConfigFile build\config\MsiSignToolData.json
|
||||
call build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -ConfigFile build\config\MsiSignToolData.json
|
||||
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
|
||||
)
|
||||
|
||||
|
@ -829,8 +820,8 @@ if "%BUILD_SETUP%" == "1" (
|
|||
)
|
||||
|
||||
if not "%SIGN_TYPE%" == "" (
|
||||
echo build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -ConfigFile build\config\InsertionSignToolData.json
|
||||
call build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -ConfigFile build\config\InsertionSignToolData.json
|
||||
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
|
||||
)
|
||||
|
||||
|
|
|
@ -57,6 +57,8 @@
|
|||
}
|
||||
],
|
||||
"exclude": [
|
||||
"FSharp.Core.4.3.4.nupkg",
|
||||
"FSharp.Data.TypeProviders.dll",
|
||||
"Microsoft.Build.Conversion.Core.dll",
|
||||
"Microsoft.Build.dll",
|
||||
"Microsoft.Build.Engine.dll",
|
||||
|
|
|
@ -1,14 +1,39 @@
|
|||
{
|
||||
"sign": [
|
||||
{
|
||||
"certificate": "VsixSHA2",
|
||||
"strongName": null,
|
||||
"values": [
|
||||
"insertion\\Microsoft.FSharp.SDK.Resources.ENU.vsix"
|
||||
]
|
||||
}
|
||||
],
|
||||
"exclude": [
|
||||
]
|
||||
}
|
||||
|
||||
"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.Conversion.Core.dll",
|
||||
"Microsoft.Build.Engine.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"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
{
|
||||
"sign": [
|
||||
{
|
||||
"certificate": "Microsoft400",
|
||||
"strongName": null,
|
||||
"values": [
|
||||
"msi\\Microsoft.FSharp.SDK.Core.msi",
|
||||
"msi\\Microsoft.FSharp.SDK.Resources.*.msi"
|
||||
]
|
||||
}
|
||||
],
|
||||
"exclude": [
|
||||
]
|
||||
}
|
||||
|
|
@ -26,6 +26,10 @@ if /i "%arg%" == "-SignType" (
|
|||
set SignType=%argv%
|
||||
shift
|
||||
)
|
||||
if /i "%arg%" == "-Configuration" (
|
||||
set Configuration=%argv%
|
||||
shift
|
||||
)
|
||||
if /i "%arg%" == "-ConfigFile" (
|
||||
set ConfigFile=%argv%
|
||||
shift
|
||||
|
@ -50,7 +54,7 @@ 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%..\..\release"
|
||||
set SignToolArgs=%SignToolArgs% "%scriptdir%..\..\%Configuration%"
|
||||
echo "%_signtoolexe%" %SignToolArgs%
|
||||
"%_signtoolexe%" %SignToolArgs%
|
||||
if errorlevel 1 goto error
|
||||
|
|
|
@ -19,9 +19,9 @@
|
|||
<_Build_Number>$(BUILD_BUILDNUMBER.Substring(9))</_Build_Number>
|
||||
<Build_FileVersion>$(_Build_Year).$(_Build_Month).$(_Build_Day).$(_Build_Number)</Build_FileVersion>
|
||||
|
||||
<FSCoreVersion>4.4.3.0</FSCoreVersion>
|
||||
<FSProductVersion>10.1.1.0</FSProductVersion>
|
||||
<FSPackageVersion>10.1.4</FSPackageVersion>
|
||||
<FSCoreVersion>4.5.0.0</FSCoreVersion>
|
||||
<FSProductVersion>10.2.0.0</FSProductVersion>
|
||||
<FSPackageVersion>10.2.0</FSPackageVersion>
|
||||
<VSAssemblyVersion>15.8.0.0</VSAssemblyVersion>
|
||||
<MicroBuildAssemblyVersion Condition="'$(MicroBuildAssemblyVersion)' == ''">$(FSCoreVersion)</MicroBuildAssemblyVersion>
|
||||
|
||||
|
|
|
@ -2,6 +2,24 @@
|
|||
|
||||
<Import Project="GitHash.props" />
|
||||
|
||||
<Target Name="GenerateAssemblyLevelAttributes"
|
||||
BeforeTargets="CoreCompile">
|
||||
|
||||
<PropertyGroup>
|
||||
<GeneratedFSharpAssemblyLevelAttributesFile>$(IntermediateOutputPath)$(MSBuildProjectName).AssemblyLevelAttributes$(DefaultLanguageSourceExtension)</GeneratedFSharpAssemblyLevelAttributesFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<WriteCodeFragment AssemblyAttributes="@(AssemblyLevelAttribute)"
|
||||
Language="$(Language)"
|
||||
OutputFile="$(GeneratedFSharpAssemblyLevelAttributesFile)"
|
||||
Condition="'@(AssemblyLevelAttribute)' != ''">
|
||||
<Output TaskParameter="OutputFile" ItemName="Compile" Condition="'$(Language)' != 'F#'" />
|
||||
<Output TaskParameter="OutputFile" ItemName="CompileBefore" Condition="'$(Language)' == 'F#'" />
|
||||
<Output TaskParameter="OutputFile" ItemName="FileWrites" />
|
||||
</WriteCodeFragment>
|
||||
|
||||
</Target>
|
||||
|
||||
<Target Name="GenerateAssemblyFileVersion"
|
||||
BeforeTargets="CoreCompile"
|
||||
Condition="'$(Configuration)' != 'Proto'">
|
||||
|
|
|
@ -15,6 +15,14 @@
|
|||
<MicrosoftCodeAnalysisWorkspacesCommonPackageVersion>$(RoslynPackageVersion)</MicrosoftCodeAnalysisWorkspacesCommonPackageVersion>
|
||||
<MicrosoftVisualStudioLanguageServicesPackageVersion>$(RoslynPackageVersion)</MicrosoftVisualStudioLanguageServicesPackageVersion>
|
||||
|
||||
<!-- Microsoft Build packages -->
|
||||
<MicrosoftBuildOverallPackagesVersion>15.6.85</MicrosoftBuildOverallPackagesVersion>
|
||||
<MicrosoftBuildPackageVersion>$(MicrosoftBuildOverallPackagesVersion)</MicrosoftBuildPackageVersion>
|
||||
<MicrosoftBuildFrameworkPackageVersion>$(MicrosoftBuildOverallPackagesVersion)</MicrosoftBuildFrameworkPackageVersion>
|
||||
<MicrosoftBuildTasksCorePackageVersion>$(MicrosoftBuildOverallPackagesVersion)</MicrosoftBuildTasksCorePackageVersion>
|
||||
<MicrosoftBuildUtilitiesCorePackageVersion>$(MicrosoftBuildOverallPackagesVersion)</MicrosoftBuildUtilitiesCorePackageVersion>
|
||||
<MicrosoftVisualFSharpMSBuild150PackageVersion>1.0.1</MicrosoftVisualFSharpMSBuild150PackageVersion>
|
||||
|
||||
<!-- Visual Studio packages -->
|
||||
<EnvDTE80PackageVersion>8.0.1</EnvDTE80PackageVersion>
|
||||
<MicrosoftVisualFSharpMicrosoftVisualStudioShellUIInternalPackageVersion>14.0.25420</MicrosoftVisualFSharpMicrosoftVisualStudioShellUIInternalPackageVersion>
|
||||
|
@ -27,6 +35,7 @@
|
|||
<MicrosoftVisualStudioManagedInterfacesPackageVersion>8.0.50727</MicrosoftVisualStudioManagedInterfacesPackageVersion>
|
||||
<MicrosoftVisualStudioPackageLanguageService150PackageVersion>15.0.26201</MicrosoftVisualStudioPackageLanguageService150PackageVersion>
|
||||
<MicrosoftVisualStudioProjectAggregatorPackageVersion>8.0.50727</MicrosoftVisualStudioProjectAggregatorPackageVersion>
|
||||
<MicrosoftVisualStudioProjectSystemManagedVersion>2.3.6152103</MicrosoftVisualStudioProjectSystemManagedVersion>
|
||||
<MicrosoftVisualStudioShell140PackageVersion>14.3.25407</MicrosoftVisualStudioShell140PackageVersion>
|
||||
<MicrosoftVisualStudioShell150PackageVersion>15.0.26201</MicrosoftVisualStudioShell150PackageVersion>
|
||||
<MicrosoftVisualStudioShellDesignPackageVersion>15.0.26201</MicrosoftVisualStudioShellDesignPackageVersion>
|
||||
|
@ -36,11 +45,11 @@
|
|||
<MicrosoftVisualStudioShellInterop100PackageVersion>10.0.30319</MicrosoftVisualStudioShellInterop100PackageVersion>
|
||||
<MicrosoftVisualStudioShellInterop110PackageVersion>11.0.61030</MicrosoftVisualStudioShellInterop110PackageVersion>
|
||||
<MicrosoftVisualStudioShellInterop120PackageVersion>12.0.30110</MicrosoftVisualStudioShellInterop120PackageVersion>
|
||||
<MicrosoftVisualStudioTextUIPackageVersion>15.6.27740</MicrosoftVisualStudioTextUIPackageVersion>
|
||||
<MicrosoftVisualStudioTextUIWpfPackageVersion>15.6.27740</MicrosoftVisualStudioTextUIWpfPackageVersion>
|
||||
<MicrosoftVisualStudioTextManagerInteropPackageVersion>7.10.6070</MicrosoftVisualStudioTextManagerInteropPackageVersion>
|
||||
<MicrosoftVisualStudioTextManagerInterop80PackageVersion>8.0.50727</MicrosoftVisualStudioTextManagerInterop80PackageVersion>
|
||||
<MicrosoftVisualStudioTextManagerInterop100PackageVersion>10.0.30319</MicrosoftVisualStudioTextManagerInterop100PackageVersion>
|
||||
<MicrosoftVisualStudioTextUIPackageVersion>15.6.27740</MicrosoftVisualStudioTextUIPackageVersion>
|
||||
<MicrosoftVisualStudioTextUIWpfPackageVersion>15.6.27740</MicrosoftVisualStudioTextUIWpfPackageVersion>
|
||||
<MicrosoftVisualStudioWCFReferenceInteropPackageVersion>9.0.30729</MicrosoftVisualStudioWCFReferenceInteropPackageVersion>
|
||||
<MicrosoftVSSDKBuildToolsPackageVersion>15.1.192</MicrosoftVSSDKBuildToolsPackageVersion>
|
||||
<VSSDKDebuggerVisualizersPackageVersion>12.0.4</VSSDKDebuggerVisualizersPackageVersion>
|
||||
|
@ -53,7 +62,7 @@
|
|||
<MicrosoftCompositionPackageVersion>1.0.30</MicrosoftCompositionPackageVersion>
|
||||
<MicrosoftDiaSymReaderPdb2PdbPackageVersion>1.1.0-roslyn-62714-01</MicrosoftDiaSymReaderPdb2PdbPackageVersion>
|
||||
<MicrosoftMSXMLPackageVersion>8.0.0-alpha</MicrosoftMSXMLPackageVersion>
|
||||
<MicrosoftVisualFSharpMSBuild150PackageVersion>1.0.1</MicrosoftVisualFSharpMSBuild150PackageVersion>
|
||||
<MicrosoftVisualFSharpTypeProvidersRedistPackageVersion>1.0.0</MicrosoftVisualFSharpTypeProvidersRedistPackageVersion>
|
||||
<NewtonsoftJsonPackageVersion>9.0.1</NewtonsoftJsonPackageVersion>
|
||||
<NUnitPackageVersion>3.5.0</NUnitPackageVersion>
|
||||
<XliffTasksPackageVersion>0.2.0-beta-000081</XliffTasksPackageVersion>
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Runtime" />
|
||||
<Reference Include="System.IO" />
|
||||
<PackageReference Include="FSharp.Core" Version="4.1.*" />
|
||||
<ProjectReference Include="..\FSharp.Compiler.Service\FSharp.Compiler.Service.fsproj" />
|
||||
<Reference Include="Microsoft.Build.Framework, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
|
|
|
@ -28,6 +28,8 @@
|
|||
<Content Include="..\..\release\fcs\net45\FSharp.Compiler.Service.ProjectCrackerTool.exe.config" PackagePath="utilities\net45" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Runtime" />
|
||||
<Reference Include="System.IO" />
|
||||
<PackageReference Include="FSharp.Core" Version="4.1.*" />
|
||||
<ProjectReference Include="..\FSharp.Compiler.Service\FSharp.Compiler.Service.fsproj" />
|
||||
</ItemGroup>
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
<None Include="App.config" />
|
||||
<None Include="FSharp.Compiler.Service.ProjectCracker.targets" />
|
||||
<None Include="paket.references" />
|
||||
<Reference Include="System.Runtime" />
|
||||
<Reference Include="System.IO" />
|
||||
<Reference Include="FSharp.Core">
|
||||
<HintPath>$(FSharpSourcesRoot)\..\packages\Microsoft.Portable.FSharp.Core.$(FSharpCoreFrozenPortablePackageVersion)\lib\profiles\net40\FSharp.Core.dll</HintPath>
|
||||
<Private>false</Private>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<FSharpSourcesRoot>$(MSBuildProjectDirectory)\..\..\src</FSharpSourcesRoot>
|
||||
</PropertyGroup>
|
||||
|
@ -26,6 +26,9 @@
|
|||
<Compile Include="$(FSharpSourcesRoot)\..\tests\service\Common.fs">
|
||||
<Link>Common.fs</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FSharpSourcesRoot)\..\tests\service\AssemblyReaderShim.fs">
|
||||
<Link>AssemblyReaderShim.fs</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FSharpSourcesRoot)\..\tests\service\EditorTests.fs">
|
||||
<Link>EditorTests.fs</Link>
|
||||
</Compile>
|
||||
|
@ -77,6 +80,8 @@
|
|||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(TargetFramework)' == 'net46'">
|
||||
<Reference Include="mscorlib" />
|
||||
<Reference Include="System.Runtime" />
|
||||
<Reference Include="System.IO" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
net4*/
|
||||
netstandard*/
|
|
@ -1,4 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<FSharpSourcesRoot>$(MSBuildProjectDirectory)\..\..\src</FSharpSourcesRoot>
|
||||
</PropertyGroup>
|
||||
|
@ -63,6 +63,12 @@
|
|||
<OtherFlags>--module Microsoft.FSharp.Compiler.Parser --open Microsoft.FSharp.Compiler --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing</OtherFlags>
|
||||
<Link>pars.fsy</Link>
|
||||
</FsYacc>
|
||||
<Compile Include="$(FSharpSourcesRoot)/fsharp/Logger.fsi">
|
||||
<Link>Logger.fsi</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FSharpSourcesRoot)/fsharp/Logger.fs">
|
||||
<Link>Logger.fs</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FSharpSourcesRoot)/utils/reshapedreflection.fs">
|
||||
<Link>Reshaped/reshapedreflection.fs</Link>
|
||||
</Compile>
|
||||
|
@ -641,8 +647,8 @@
|
|||
<PackageReference Include="System.Security.Cryptography.Algorithms" Version="4.3.0" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(TargetFramework)' == 'net45'">
|
||||
<Reference Include="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<Reference Include="System.IO, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<Reference Include="System.Runtime" />
|
||||
<Reference Include="System.IO" />
|
||||
<Reference Include="ISymWrapper, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<Reference Include="System.ValueTuple">
|
||||
<HintPath>$(FSharpSourcesRoot)\..\packages\System.ValueTuple.4.4.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
|
||||
|
@ -650,5 +656,5 @@
|
|||
</ItemGroup>
|
||||
<Import Project="$(FSharpSourcesRoot)\scripts\fssrgen.targets" Condition="'$(TargetFramework)' != ''" />
|
||||
<Import Project="$(FSharpSourcesRoot)\..\packages\FsLexYacc.7.0.6\build\FsLexYacc.targets" Condition="'$(TargetFramework)' != '' AND Exists('$(FSharpSourcesRoot)\..\packages\FsLexYacc.7.0.6\build\FsLexYacc.targets')" />
|
||||
<Target Name="GenerateCode" AfterTargets="Restore" BeforeTargets="BeforeBuild" DependsOnTargets="CallFsLex;CallFsYacc;ProcessFsSrGen" Condition="'$(TargetFramework)' != ''"></Target>
|
||||
<Target Name="GenerateCode" AfterTargets="Restore" BeforeTargets="BeforeBuild" DependsOnTargets="CallFsLex;CallFsYacc;ProcessFsSrGen" Condition="'$(TargetFramework)' != ''"></Target>
|
||||
</Project>
|
|
@ -24,7 +24,7 @@ let isMono = false
|
|||
// Utilities
|
||||
// --------------------------------------------------------------------------------------
|
||||
|
||||
let dotnetExePath = DotNetCli.InstallDotNetSDK "2.1.100"
|
||||
let dotnetExePath = DotNetCli.InstallDotNetSDK "2.1.201"
|
||||
|
||||
let runDotnet workingDir args =
|
||||
let result =
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
<VersionPrefix>22.0.3</VersionPrefix>
|
||||
<OtherFlags>--version:$(VersionPrefix)</OtherFlags>
|
||||
<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
|
||||
<!-- FSharp.Compiler.Tools is currently only used to get a working FSI.EXE to execute some scripts during the build -->
|
||||
<!-- The LKG FSI.EXE requires MSBuild 15 to be installed, which is painful -->
|
||||
<FsiToolPath>$(FSharpSourcesRoot)\..\packages\FSharp.Compiler.Tools.4.1.27\tools</FsiToolPath>
|
||||
|
|
|
@ -15,4 +15,8 @@
|
|||
<ProjectReference Include="..\..\FSharp.Compiler.Service\FSharp.Compiler.Service.fsproj" />
|
||||
<PackageReference Include="System.Reflection.Metadata" Version="1.4.2" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(TargetFramework)' == 'net46'">
|
||||
<Reference Include="System.Runtime" />
|
||||
<Reference Include="System.IO" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
@ -16,4 +16,8 @@
|
|||
<PackageReference Include="FSharp.Core" Version="4.1.*" />
|
||||
<ProjectReference Include="..\..\FSharp.Compiler.Service\FSharp.Compiler.Service.fsproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(TargetFramework)' == 'net46'">
|
||||
<Reference Include="System.Runtime" />
|
||||
<Reference Include="System.IO" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
@ -18,4 +18,8 @@
|
|||
<PackageReference Include="FSharp.Core" Version="4.1.*" />
|
||||
<ProjectReference Include="..\..\FSharp.Compiler.Service\FSharp.Compiler.Service.fsproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(TargetFramework)' == 'net46'">
|
||||
<Reference Include="System.Runtime" />
|
||||
<Reference Include="System.IO" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
@ -14,4 +14,8 @@
|
|||
<PackageReference Include="FSharp.Core" Version="4.1.*" />
|
||||
<ProjectReference Include="..\..\FSharp.Compiler.Service\FSharp.Compiler.Service.fsproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(TargetFramework)' == 'net46'">
|
||||
<Reference Include="System.Runtime" />
|
||||
<Reference Include="System.IO" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
@ -14,4 +14,8 @@
|
|||
<PackageReference Include="FSharp.Core" Version="4.1.*" />
|
||||
<ProjectReference Include="..\..\FSharp.Compiler.Service\FSharp.Compiler.Service.fsproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(TargetFramework)' == 'net46'">
|
||||
<Reference Include="System.Runtime" />
|
||||
<Reference Include="System.IO" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
@ -14,4 +14,8 @@
|
|||
<PackageReference Include="FSharp.Core" Version="4.1.*" />
|
||||
<ProjectReference Include="..\..\FSharp.Compiler.Service\FSharp.Compiler.Service.fsproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(TargetFramework)' == 'net46'">
|
||||
<Reference Include="System.Runtime" />
|
||||
<Reference Include="System.IO" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<package id="System.Reflection.Metadata" version="1.4.2" />
|
||||
<package id="System.ValueTuple" version="4.3.1" />
|
||||
<package id="System.ValueTuple" version="4.4.0" />
|
||||
<package id="FSharp.Core" version="4.3.4"/>
|
||||
<package id="Microsoft.VisualFSharp.Msbuild.15.0" version="1.0.1" />
|
||||
<package id="Microsoft.Build" version="14.3.0" />
|
||||
<package id="Microsoft.Build.Framework" version="14.3.0" />
|
||||
|
@ -34,6 +35,7 @@
|
|||
<package id="BenchmarkDotNet" version="0.9.8"/>
|
||||
<package id="BenchmarkDotNet.Diagnostics.Windows" version="0.9.8"/>
|
||||
<package id="Newtonsoft.Json" version="9.0.1"/>
|
||||
<package id="Microsoft.VisualFSharp.Type.Providers.Redist" version="1.0.0" />
|
||||
<package id="Microsoft.FSharp.TupleSample" version="1.0.0-alpha-161121"/>
|
||||
<package id="Microsoft.VSSDK.BuildTools" version="15.1.192" />
|
||||
|
||||
|
|
|
@ -1,100 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. -->
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
|
||||
<!-- Common Folders -->
|
||||
<Fragment>
|
||||
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||
<Directory Id="ProgramFilesFolder" Name="Program Files">
|
||||
<Directory Id="ReferenceAssemblies" Name="Reference Assemblies">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft" Name="Microsoft">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp" Name="FSharp">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework" Name=".NETFramework">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0" Name="v4.0">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.4.3.0" Name="4.4.3.0">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.4.3.0_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.4.1.0" Name="4.4.1.0">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.4.1.0_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.4.0.0" Name="4.4.0.0">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.4.0.0_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.3.1.0" Name="4.3.1.0">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.3.1.0_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.3.0.0" Name="4.3.0.0">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.3.0.0_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETPortable" Name=".NETPortable">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETPortable_3.47.41.0" Name="3.47.41.0">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETPortable_3.47.41.0_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETPortable_3.47.4.0" Name="3.47.4.0">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETPortable_3.47.4.0_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETPortable_2.3.5.1" Name="2.3.5.1">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETPortable_2.3.5.1_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETPortable_2.3.5.0" Name="2.3.5.0">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETPortable_2.3.5.0_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore" Name=".NETCore">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.7.41.0" Name="3.7.41.0">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.7.41.0_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.7.4.0" Name="3.7.4.0">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.7.4.0_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.3.1.0" Name="3.3.1.0">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.3.1.0_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.78.41.0" Name="3.78.41.0">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.78.41.0_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.78.4.0" Name="3.78.4.0">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.78.4.0_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.78.3.1" Name="3.78.3.1">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.78.3.1_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.259.41.0" Name="3.259.41.0">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.259.41.0_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.259.4.0" Name="3.259.4.0">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.259.4.0_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.259.3.1" Name="3.259.3.1">
|
||||
<Directory Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.259.3.1_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
<Directory Id="MicrosoftSDKs" Name="Microsoft SDKs">
|
||||
<Directory Id="MicrosoftSDKs_FS" Name="F#">
|
||||
<Directory Id="MicrosoftSDKs_FS_10.1" Name="10.1">
|
||||
<Directory Id="MicrosoftSDKs_FS_10.1_Framework" Name="Framework">
|
||||
<Directory Id="MicrosoftSDKs_FS_10.1_Framework_v4.0" Name="v4.0">
|
||||
<Directory Id="MicrosoftSDKs_FS_10.1_Framework_v4.0_$(var.LocaleId)" Name="$(var.LocaleParentCulture)" />
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
<Directory Id="MicrosoftSDKs_FS_Licenses" Name="Licenses">
|
||||
<Directory Id="MicrosoftSDKs_FS_Licenses_$(var.LocaleId)" Name="$(var.LocaleId)" />
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Fragment>
|
||||
</Wix>
|
|
@ -1,77 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. -->
|
||||
<Project InitialTargets="CheckPropertiesArePassed" ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<FSharpTreeRoot>$(MSBuildProjectDirectory)\..\..</FSharpTreeRoot>
|
||||
<SetupRootFolder>$(FSharpTreeRoot)\setup</SetupRootFolder>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" />
|
||||
<Import Project="$(SetupRootFolder)\FSharp.Setup.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputName Condition="'$(IsLangPack)' != 'true'">Microsoft.FSharp.SDK.Core</OutputName>
|
||||
<OutputName Condition="'$(IsLangPack)' == 'true'">Microsoft.FSharp.SDK.Resources.$(LocaleCode)</OutputName>
|
||||
<ProjectGuid>da0da41f-0e00-4598-8eee-b29d31b0ca04</ProjectGuid>
|
||||
<OutputType>Package</OutputType>
|
||||
<Media>net</Media>
|
||||
<IsPackage>true</IsPackage>
|
||||
<OutputLocalized>false</OutputLocalized>
|
||||
<ServiceByMajorUpgrade>true</ServiceByMajorUpgrade>
|
||||
<DefineSolutionProperties>false</DefineSolutionProperties>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<DefineConstants>$(DefineConstants);LocaleCode=$(LocaleCode)</DefineConstants>
|
||||
<DefineConstants>$(DefineConstants);LocaleId=$(LocaleId)</DefineConstants>
|
||||
<DefineConstants>$(DefineConstants);LocaleParentId=$(LocaleParentId)</DefineConstants>
|
||||
<DefineConstants>$(DefineConstants);LocaleParentCulture=$(LocaleParentCulture)</DefineConstants>
|
||||
<DefineConstants>$(DefineConstants);LocaleSpecificCulture=$(LocaleSpecificCulture)</DefineConstants>
|
||||
<DefineConstants>$(DefineConstants);IsLangPack=$(IsLangPack)</DefineConstants>
|
||||
|
||||
<DefineConstants>$(DefineConstants);BinariesDir=$(BinariesDir)</DefineConstants>
|
||||
<DefineConstants>$(DefineConstants);FSharpTreeRoot=$(FSharpTreeRoot)</DefineConstants>
|
||||
<DefineConstants>$(DefineConstants);NugetPackagesDir=$(NugetPackagesDir)</DefineConstants>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<WixExtension Include="WixNetFxExtension">
|
||||
<Name>WixNetFxExtension</Name>
|
||||
</WixExtension>
|
||||
<WixExtension Include="FSharp.Wix.Extensions">
|
||||
<Name>FSharp.Wix.Extensions</Name>
|
||||
<HintPath>$(BinariesDir)\setup\FSharp.Wix.Extensions.dll</HintPath>
|
||||
</WixExtension>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="Common.Wix.Properties.wxs" />
|
||||
|
||||
<Compile Include="FSharp.SDK.wxs" />
|
||||
|
||||
<Compile Condition="'$(IsLangPack)' != 'true'" Include="component-groups\Compiler_Redist.wxs" />
|
||||
<Compile Condition="'$(IsLangPack)' == 'true'" Include="component-groups\Compiler_LangPack.wxs" />
|
||||
|
||||
<Compile Condition="'$(IsLangPack)' != 'true'" Include="component-groups\Runtime_Redist.wxs" />
|
||||
<Compile Condition="'$(IsLangPack)' == 'true'" Include="component-groups\Runtime_LangPack.wxs" />
|
||||
</ItemGroup>
|
||||
|
||||
<Import Project="$(WixInstallPath)\wix.targets" />
|
||||
<Import Project="$(FSharpTreeRoot)\src\Microbuild.Settings.targets" />
|
||||
|
||||
<Target Name="CheckPropertiesArePassed">
|
||||
<Error Condition="'$(LocaleCode)' == ''" Text="A 'LocaleCode' property must be passed to the project." />
|
||||
<Error Condition="'$(LocaleId)' == ''" Text="A 'LocaleId' property must be passed to the project." />
|
||||
<Error Condition="'$(LocaleParentCulture)' == ''" Text="A 'LocaleParentCulture' property must be passed to the project." />
|
||||
<Error Condition="'$(LocaleSpecificCulture)' == ''" Text="A 'LocaleSpecificCulture' property must be passed to the project." />
|
||||
<Error Condition="'$(IsLangPack)' == ''" Text="A 'IsLangPack' property must be passed to the project." />
|
||||
</Target>
|
||||
|
||||
<Target Name="CopyMsiToInsertionFolder" AfterTargets="Build">
|
||||
<ItemGroup>
|
||||
<MsiPath Include="$(OutDir)$(OutputName).msi" />
|
||||
</ItemGroup>
|
||||
|
||||
<Copy SourceFiles="@(MsiPath)" DestinationFiles="@(MsiPath->'$(SetupRootFolder)\..\$(Configuration)\msi\%(Filename)%(Extension)')" />
|
||||
</Target>
|
||||
</Project>
|
|
@ -1,41 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. -->
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
|
||||
<?define ProductVersion = "10.1"?>
|
||||
<?define ProductPlatform = "x86"?>
|
||||
<?define ProductManufacturer = "Microsoft Corporation"?>
|
||||
<?define ProductDescription = "Visual F# $(var.ProductVersion) SDK"?>
|
||||
<?define ProductUpgradeCode = "$(fsharp.guid($(var.ProductDescription),$(var.ProductPlatform),$(var.LocaleId),$(var.ProductVersion)))" ?>
|
||||
|
||||
<Product Id="*" Name="$(var.ProductDescription)" Manufacturer="$(var.ProductManufacturer)" Version="$(var.ProductVersion)" Language="$(var.LocaleId)" UpgradeCode="$(var.ProductUpgradeCode)">
|
||||
|
||||
<Package Description="$(var.ProductDescription)" Platform="$(var.ProductPlatform)" Manufacturer="$(var.ProductManufacturer)" InstallerVersion="300" Compressed="yes" InstallScope="perMachine" />
|
||||
<MajorUpgrade AllowDowngrades="no" DowngradeErrorMessage="A newer version of this product is already installed." Schedule="afterInstallInitialize" />
|
||||
<MediaTemplate EmbedCab="yes" />
|
||||
|
||||
<Feature Id="Compiler_Feature"
|
||||
AllowAdvertise="no"
|
||||
Description="Installs the Visual F# programming language and all associated components."
|
||||
Title="Visual F#">
|
||||
|
||||
<?if $(var.IsLangPack) = true ?>
|
||||
<ComponentGroupRef Id="Compiler_LangPack" />
|
||||
<?else ?>
|
||||
<ComponentGroupRef Id="Compiler_Redist" />
|
||||
<?endif ?>
|
||||
</Feature>
|
||||
|
||||
<Feature Id="Runtime_Feature"
|
||||
Title="Microsoft Visual F# Runtime for .NET"
|
||||
Description="Runtime components for F# compiled binaries."
|
||||
Display="hidden">
|
||||
|
||||
<?if $(var.IsLangPack) = true ?>
|
||||
<ComponentGroupRef Id="Runtime_LangPack" />
|
||||
<?else ?>
|
||||
<ComponentGroupRef Id="Runtime_Redist" />
|
||||
<?endif ?>
|
||||
</Feature>
|
||||
</Product>
|
||||
</Wix>
|
|
@ -1,26 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. -->
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:NetFx="http://schemas.microsoft.com/wix/NetFxExtension">
|
||||
|
||||
<Fragment>
|
||||
<ComponentGroup Id="Compiler_LangPack">
|
||||
<ComponentRef Id="Compiler_LangPack_FSharp.Core.dll_$(var.LocaleCode)" />
|
||||
<ComponentRef Id="Compiler_LangPack_FSharp.Build.dll_$(var.LocaleCode)" />
|
||||
<ComponentRef Id="Compiler_LangPack_FSharp.Compiler.Private.dll_$(var.LocaleCode)" />
|
||||
</ComponentGroup>
|
||||
|
||||
<DirectoryRef Id="MicrosoftSDKs_FS_10.1_Framework_v4.0_$(var.LocaleId)">
|
||||
<Component Id="Compiler_LangPack_FSharp.Core.dll_$(var.LocaleCode)" Guid="$(fsharp.guid(Compiler_LangPack_FSharp.Core.dll_$(var.LocaleCode), $(var.LocaleCode)))">
|
||||
<File Id="Compiler_LangPack_FSharp.Core.dll_$(var.LocaleCode)" Source="$(var.BinariesDir)\net40\bin\$(var.LocaleParentCulture)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_LangPack_FSharp.Build.dll_$(var.LocaleCode)" Guid="$(fsharp.guid(Compiler_LangPack_FSharp.Build.dll_$(var.LocaleCode), $(var.LocaleCode)))">
|
||||
<File Id="Compiler_LangPack_FSharp.Build.dll_$(var.LocaleCode)" Source="$(var.BinariesDir)\net40\bin\$(var.LocaleParentCulture)\FSharp.Build.resources.dll" KeyPath="yes" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_LangPack_FSharp.Compiler.Private.dll_$(var.LocaleCode)" Guid="$(fsharp.guid(Compiler_LangPack_FSharp.Compiler.Private.dll_$(var.LocaleCode), $(var.LocaleCode)))">
|
||||
<File Id="Compiler_LangPack_FSharp.Compiler.Private.dll_$(var.LocaleCode)" Source="$(var.BinariesDir)\net40\bin\$(var.LocaleParentCulture)\FSharp.Compiler.Private.resources.dll" KeyPath="yes" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
</Fragment>
|
||||
</Wix>
|
|
@ -1,208 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. -->
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:NetFx="http://schemas.microsoft.com/wix/NetFxExtension">
|
||||
|
||||
<Fragment>
|
||||
<ComponentGroup Id="Compiler_Redist">
|
||||
<ComponentRef Id="Compiler_Redist_FSharp.Core.dll" />
|
||||
<ComponentRef Id="Compiler_Redist_FSharp.Build.dll" />
|
||||
<ComponentRef Id="Compiler_Redist_FSharp.Compiler.Private.dll" />
|
||||
<ComponentRef Id="Compiler_Redist_FSharp.Compiler.Interactive.Settings.dll" />
|
||||
<ComponentRef Id="Compiler_Redist_FSharp.Data.TypeProviders.dll" />
|
||||
<ComponentRef Id="Compiler_Redist_fsc.exe" />
|
||||
<ComponentRef Id="Compiler_Redist_fsi.exe" />
|
||||
<ComponentRef Id="Compiler_Redist_fsiAnyCPU.exe" />
|
||||
<ComponentRef Id="Compiler_Redist_FSharp.Compiler.Server.Shared.dll" />
|
||||
<ComponentRef Id="Compiler_Redist_Microsoft.FSharp.targets" />
|
||||
<ComponentRef Id="Compiler_Redist_Microsoft.Portable.FSharp.targets" />
|
||||
<ComponentRef Id="Compiler_Redist_Microsoft.FSharp.NetSdk.props" />
|
||||
<ComponentRef Id="Compiler_Redist_Microsoft.FSharp.NetSdk.targets" />
|
||||
<ComponentRef Id="Compiler_Redist_Microsoft.FSharp.Overrides.NetSdk.targets" />
|
||||
<ComponentRef Id="Compiler_Redist_SupportedRuntimes.xml" />
|
||||
<ComponentRef Id="Compiler_Redist_RegistryKeys_CompilerLocation" />
|
||||
|
||||
<ComponentRef Id="Compiler_Redist_Microsoft.Build.Conversion.Core.dll" />
|
||||
<ComponentRef Id="Compiler_Redist_Microsoft.Build.dll" />
|
||||
<ComponentRef Id="Compiler_Redist_Microsoft.Build.Engine.dll" />
|
||||
<ComponentRef Id="Compiler_Redist_Microsoft.Build.Framework.dll" />
|
||||
<ComponentRef Id="Compiler_Redist_Microsoft.Build.Tasks.Core.dll" />
|
||||
<ComponentRef Id="Compiler_Redist_Microsoft.Build.Utilities.Core.dll" />
|
||||
|
||||
<ComponentRef Id="Compiler_Redist_System.Reflection.Metadata.dll" />
|
||||
<ComponentRef Id="Compiler_Redist_System.Collections.Immutable.dll" />
|
||||
<ComponentRef Id="Compiler_Redist_System.ValueTuple.dll" />
|
||||
|
||||
<ComponentRef Id="Compiler_Redist_OtherResources_Redist.txt" />
|
||||
<ComponentRef Id="Compiler_Redist_OtherResources_ThirdPartyNotices.txt" />
|
||||
<ComponentRef Id="Compiler_Redist_OtherResources_FSharp_eula.$(var.LocaleCode).rtf" />
|
||||
|
||||
</ComponentGroup>
|
||||
|
||||
<DirectoryRef Id="MicrosoftSDKs_FS_10.1_Framework_v4.0">
|
||||
|
||||
<Component Id="Compiler_Redist_FSharp.Core.dll" Guid="$(fsharp.guid(Compiler_Redist_FSharp.Core.dll, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_FSharp.Core.dll" Source="$(var.BinariesDir)\net40\bin\FSharp.Core.dll" KeyPath="yes">
|
||||
<NetFx:NativeImage Id="Compiler_Redist_FSharp.Core.Native.dll" Priority="0" Dependencies="no" Platform="all" AssemblyApplication="Compiler_Redist_fsc.exe" />
|
||||
</File>
|
||||
<!-- NOTE: The optdata and sigdata files are now integrated as resources for more recent FSharp.Core.dll's. -->
|
||||
<!-- However old versions of FSharp.Core still need these files. For consistency we also continue to produce the files -->
|
||||
<!-- for FSharp.Core 4.4.1.0, and include them in the redist. -->
|
||||
<!-- -->
|
||||
<!-- We should continue to produce the files for FSharp.Core 4.4.2.0 and beyond, for inclusion in the FSharp.Core -->
|
||||
<!-- nuget package. We should do this for as long as it is possible that old F# compilers (VS2010-VS2017) will end up referring to newer -->
|
||||
<!-- versions of the FSharp.Core package (which can happen automatically on package upgrade). However for FSharp.Core 4.4.2.0 -->
|
||||
<!-- beyond the files will not be needed in the redist, which is only ever installed on machines alongside a recent -->
|
||||
<!-- F# compiler -->
|
||||
<File Id="FSharp_Core_Sigdata_File" Source="$(var.BinariesDir)\net40\bin\FSharp.Core.sigdata" />
|
||||
<File Id="FSharp_Core_Optdata_File" Source="$(var.BinariesDir)\net40\bin\FSharp.Core.optdata" />
|
||||
<File Id="FSharp_Core_Xml_File" Source="$(var.BinariesDir)\net40\bin\FSharp.Core.xml" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_FSharp.Build.dll" Guid="$(fsharp.guid(Compiler_Redist_FSharp.Build.dll, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_FSharp.Build.dll" Source="$(var.BinariesDir)\net40\bin\FSharp.Build.dll" KeyPath="yes">
|
||||
<NetFx:NativeImage Id="Compiler_Redist_FSharp.Build.Native.dll" Priority="0" Dependencies="no" Platform="all" AssemblyApplication="Compiler_Redist_fsc.exe" />
|
||||
</File>
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_FSharp.Compiler.Private.dll" Guid="$(fsharp.guid(Compiler_Redist_FSharp.Compiler.Private.dll, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_FSharp.Compiler.Private.dll" Source="$(var.BinariesDir)\net40\bin\FSharp.Compiler.Private.dll" KeyPath="yes">
|
||||
<NetFx:NativeImage Id="Compiler_Redist_FSharp.Compiler.Private.Native.dll" Priority="0" Dependencies="no" Platform="all" AssemblyApplication="Compiler_Redist_fsc.exe" />
|
||||
</File>
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_FSharp.Compiler.Interactive.Settings.dll" Guid="$(fsharp.guid(Compiler_Redist_FSharp.Compiler.Interactive.Settings.dll, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_FSharp.Compiler.Interactive.Settings.dll" Source="$(var.BinariesDir)\net40\bin\FSharp.Compiler.Interactive.Settings.dll" KeyPath="yes">
|
||||
<NetFx:NativeImage Id="Compiler_Redist_FSharp.Compiler.Interactive.Settings.Native.dll" Priority="0" Dependencies="no" Platform="all" AssemblyApplication="Compiler_Redist_fsc.exe" />
|
||||
</File>
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_FSharp.Data.TypeProviders.dll" Guid="$(fsharp.guid(Compiler_Redist_FSharp.Data.TypeProviders.dll, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_FSharp.Data.TypeProviders.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Type.Providers.Redist.1.0.0\content\4.3.0.0\FSharp.Data.TypeProviders.dll" KeyPath="yes">
|
||||
<NetFx:NativeImage Id="Compiler_Redist_FSharp.Data.TypeProviders.Native.dll" Priority="0" Dependencies="no" Platform="all" AssemblyApplication="Compiler_Redist_fsc.exe" />
|
||||
</File>
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_fsc.exe" Guid="$(fsharp.guid(Compiler_Redist_fsc.exe, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_fsc.exe" Source="$(var.BinariesDir)\net40\bin\fsc.exe" KeyPath="yes">
|
||||
<NetFx:NativeImage Id="Compiler_Redist_fsc.Native.exe" Priority="0" Dependencies="no" Platform="32bit" AssemblyApplication="Compiler_Redist_fsc.exe" />
|
||||
</File>
|
||||
<File Id="Compiler_Redist_fsc.exe.config" Source="$(var.BinariesDir)\net40\bin\fsc.exe.config" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_fsi.exe" Guid="$(fsharp.guid(Compiler_Redist_fsi.exe, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_fsi.exe" Source="$(var.BinariesDir)\net40\bin\fsi.exe" KeyPath="yes">
|
||||
<NetFx:NativeImage Id="Compiler_Redist_fsi.Native.exe" Priority="0" Dependencies="no" Platform="32bit" AssemblyApplication="Compiler_Redist_fsc.exe" />
|
||||
</File>
|
||||
<File Id="Compiler_Redist_fsi.exe.config" Source="$(var.BinariesDir)\net40\bin\fsi.exe.config" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_fsiAnyCPU.exe" Guid="$(fsharp.guid(Compiler_Redist_fsiAnyCPU.exe, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_fsiAnyCPU.exe" Source="$(var.BinariesDir)\net40\bin\fsiAnyCpu.exe" KeyPath="yes">
|
||||
<NetFx:NativeImage Id="Compiler_Redist_fsiAnyCPU.Native.exe" Priority="0" Dependencies="no" Platform="32bit" AssemblyApplication="Compiler_Redist_fsc.exe" />
|
||||
</File>
|
||||
<File Id="Compiler_Redist_fsianycpu.exe.config" Source="$(var.BinariesDir)\net40\bin\fsiAnyCpu.exe.config" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_FSharp.Compiler.Server.Shared.dll" Guid="$(fsharp.guid(Compiler_Redist_FSharp.Compiler.Server.Shared.dll, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_FSharp.Compiler.Server.Shared.dll" Source="$(var.BinariesDir)\net40\bin\FSharp.Compiler.Server.Shared.dll" KeyPath="yes">
|
||||
<NetFx:NativeImage Id="Compiler_Redist_FSharp.Compiler.Server.Shared.Native.dll" Priority="0" Dependencies="no" Platform="all" AssemblyApplication="Compiler_Redist_fsc.exe" />
|
||||
</File>
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_Microsoft.FSharp.targets" Guid="$(fsharp.guid(Compiler_Redist_Microsoft.FSharp.targets, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_Microsoft.FSharp.targets" Source="$(var.BinariesDir)\net40\bin\Microsoft.FSharp.Targets" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_Microsoft.Portable.FSharp.targets" Guid="$(fsharp.guid(Compiler_Redist_Microsoft.Portable.FSharp.targets, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_Microsoft.Portable.FSharp.targets" Source="$(var.BinariesDir)\net40\bin\Microsoft.Portable.FSharp.Targets" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_Microsoft.FSharp.NetSdk.props" Guid="$(fsharp.guid(Compiler_Redist_Microsoft.FSharp.NetSdk.props, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_Microsoft.FSharp.NetSdk.props" Source="$(var.BinariesDir)\net40\bin\Microsoft.FSharp.NetSdk.props" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_Microsoft.FSharp.NetSdk.targets" Guid="$(fsharp.guid(Compiler_Redist_Microsoft.FSharp.NetSdk.targets, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_Microsoft.FSharp.NetSdk.targets" Source="$(var.BinariesDir)\net40\bin\Microsoft.FSharp.NetSdk.targets" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_Microsoft.FSharp.Overrides.NetSdk.targets" Guid="$(fsharp.guid(Compiler_Redist_Microsoft.FSharp.Overrides.NetSdk.targets, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_Microsoft.FSharp.Overrides.NetSdk.targets" Source="$(var.BinariesDir)\net40\bin\Microsoft.FSharp.Overrides.NetSdk.targets" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_SupportedRuntimes.xml" Guid="$(fsharp.guid(Compiler_Redist_SupportedRuntimes.xml, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_SupportedRuntimes.xml" Source="$(var.FSharpTreeRoot)\vsintegration\src\SupportedRuntimes\SupportedRuntimes.xml" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_RegistryKeys_CompilerLocation" Guid="$(fsharp.guid(Compiler_Redist_RegistryKeys_CompilerLocation, $(var.LocaleCode)))">
|
||||
<Environment Id="Compiler_Redist_FSHARPINSTALLDIR_Environment_Variable" Name="FSHARPINSTALLDIR" Value="[MicrosoftSDKs_FS_10.1_Framework_v4.0]" Action="set" System="yes" />
|
||||
<RegistryKey Root="HKLM" Key="Software\Microsoft\FSharp\10.1\Runtime\v4.0" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
|
||||
<RegistryValue Value="[MicrosoftSDKs_FS_10.1_Framework_v4.0]" Type="string" />
|
||||
</RegistryKey>
|
||||
<RegistryKey Root="HKLM" Key="Software\Microsoft\VisualStudio\15.0\MSBuild\SafeImports" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
|
||||
<RegistryValue Name="Microsoft.FSharp.Targets" Value="[MicrosoftSDKs_FS_10.1_Framework_v4.0]Microsoft.FSharp.Targets" Type="string" />
|
||||
<RegistryValue Name="Microsoft.Portable.FSharp.Targets" Value="[MicrosoftSDKs_FS_10.1_Framework_v4.0]Microsoft.Portable.FSharp.Targets" Type="string" />
|
||||
<RegistryValue Name="Microsoft.FSharp.NetSdk.props" Value="[MicrosoftSDKs_FS_10.1_Framework_v4.0]Microsoft.FSharp.NetSdk.props" Type="string" />
|
||||
<RegistryValue Name="Microsoft.FSharp.NetSdk.targets" Value="[MicrosoftSDKs_FS_10.1_Framework_v4.0]Microsoft.FSharpNetSdk.targets" Type="string" />
|
||||
<RegistryValue Name="Microsoft.FSharp.Overrides.NetSdk.targets" Value="[MicrosoftSDKs_FS_10.1_Framework_v4.0]Microsoft.Overrides.FSharpNetSdk.targets" Type="string" />
|
||||
</RegistryKey>
|
||||
<RegistryKey Root="HKLM" Key="Software\Microsoft\VisualStudio\15.0\Setup\F#" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
|
||||
<RegistryValue Name="ProductDir" Value="[MicrosoftSDKs_FS_10.1_Framework_v4.0]" Type="string" />
|
||||
</RegistryKey>
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_Microsoft.Build.Conversion.Core.dll" Guid="$(fsharp.guid(Compiler_Redist_Microsoft.Build.Conversion.Core.dll, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_Microsoft.Build.Conversion.Core.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Conversion.Core.dll" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_Microsoft.Build.dll" Guid="$(fsharp.guid(Compiler_Redist_Microsoft.Build.dll, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_Microsoft.Build.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.dll" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_Microsoft.Build.Engine.dll" Guid="$(fsharp.guid(Compiler_Redist_Microsoft.Build.Engine.dll, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_Microsoft.Build.Engine.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Engine.dll" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_Microsoft.Build.Framework.dll" Guid="$(fsharp.guid(Compiler_Redist_Microsoft.Build.Framework.dll, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_Microsoft.Build.Framework.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Framework.dll" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_Microsoft.Build.Tasks.Core.dll" Guid="$(fsharp.guid(Compiler_Redist_Microsoft.Build.Tasks.Core.dll, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_Microsoft.Build.Tasks.Core.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Tasks.Core.dll" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_Microsoft.Build.Utilities.Core.dll" Guid="$(fsharp.guid(Compiler_Redist_Microsoft.Build.Utilities.Core.dll, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_Microsoft.Build.Utilities.Core.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Utilities.Core.dll" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_System.Collections.Immutable.dll" Guid="$(fsharp.guid(Compiler_Redist_System.Collections.Immutable.dll, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_System.Collections.Immutable.dll" Source="$(var.NugetPackagesDir)\System.Collections.Immutable.1.3.1\lib\netstandard1.0\System.Collections.Immutable.dll" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_System.Reflection.Metadata.dll" Guid="$(fsharp.guid(Compiler_Redist_System.Reflection.Metadata.dll, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_System.Reflection.Metadata.dll" Source="$(var.NugetPackagesDir)\System.Reflection.Metadata.1.4.2\lib\netstandard1.1\System.Reflection.Metadata.dll" />
|
||||
</Component>
|
||||
|
||||
<Component Id="Compiler_Redist_System.ValueTuple.dll" Guid="$(fsharp.guid(Compiler_Redist_System.ValueTuple.dll, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_System.ValueTuple.dll" Source="$(var.NugetPackagesDir)\System.ValueTuple.4.4.0\lib\netstandard1.0\System.ValueTuple.dll" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp">
|
||||
<Component Id="Compiler_Redist_OtherResources_Redist.txt" Guid="$(fsharp.guid(Compiler_OtherResources_Redist.txt, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_OtherResources_Redist.txt" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\Redist.txt" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
|
||||
<DirectoryRef Id="MicrosoftSDKs_FS_Licenses">
|
||||
<Component Id="Compiler_Redist_OtherResources_ThirdPartyNotices.txt" Guid="$(fsharp.guid(Compiler_OtherResources_ThirdPartyNotices.txt, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_OtherResources_ThirdPartyNotices.txt" Source="$(var.BinariesDir)\setup\resources\ThirdPartyNotices.txt" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
|
||||
<DirectoryRef Id="MicrosoftSDKs_FS_Licenses_$(var.LocaleId)">
|
||||
<Component Id="Compiler_Redist_OtherResources_FSharp_eula.$(var.LocaleCode).rtf" Guid="$(fsharp.guid(Compiler_OtherResources_FSharp_eula.$(var.LocaleCode).rtf, $(var.LocaleCode)))">
|
||||
<File Id="Compiler_Redist_OtherResources_FSharp_eula.$(var.LocaleCode).rtf" Source="$(var.BinariesDir)\setup\resources\eula\VF_EULA.$(var.LocaleCode).rtf" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
</Fragment>
|
||||
</Wix>
|
|
@ -1,177 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. -->
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
|
||||
<Fragment>
|
||||
<?define LangLCID = $(var.LocaleId) ?>
|
||||
<?define LangCulture = $(var.LocaleSpecificCulture) ?>
|
||||
|
||||
<ComponentGroup Id="Runtime_LangPack">
|
||||
|
||||
<!-- F# 4.3 -->
|
||||
|
||||
<ComponentRef Id="Runtime_LangPack_4.4.3.0_FSharp.Core_LangPack" />
|
||||
|
||||
<!-- F# 4.1 -->
|
||||
|
||||
<ComponentRef Id="Runtime_LangPack_4.4.1.0_FSharp.Core_LangPack" />
|
||||
<ComponentRef Id="Runtime_LangPack_3.47.41.0_FSharp.Core_LangPack" />
|
||||
<ComponentRef Id="Runtime_LangPack_3.7.41.0_FSharp.Core_LangPack" />
|
||||
<ComponentRef Id="Runtime_LangPack_3.78.41.0_FSharp.Core_LangPack" />
|
||||
<ComponentRef Id="Runtime_LangPack_3.259.41.0_FSharp.Core_LangPack" />
|
||||
|
||||
<!-- F# 4.0 -->
|
||||
|
||||
<ComponentRef Id="Runtime_LangPack_4.4.0.0_FSharp.Core_LangPack" />
|
||||
<ComponentRef Id="Runtime_LangPack_3.47.4.0_FSharp.Core_LangPack" />
|
||||
<ComponentRef Id="Runtime_LangPack_3.7.4.0_FSharp.Core_LangPack" />
|
||||
<ComponentRef Id="Runtime_LangPack_3.78.4.0_FSharp.Core_LangPack" />
|
||||
<ComponentRef Id="Runtime_LangPack_3.259.4.0_FSharp.Core_LangPack" />
|
||||
|
||||
<!-- F# 3.1 -->
|
||||
|
||||
<ComponentRef Id="Runtime_LangPack_4.3.1.0_FSharp.Core_LangPack" />
|
||||
<ComponentRef Id="Runtime_LangPack_2.3.5.1_FSharp.Core_LangPack" />
|
||||
<ComponentRef Id="Runtime_LangPack_3.3.1.0_FSharp.Core_LangPack" />
|
||||
<ComponentRef Id="Runtime_LangPack_3.78.3.1_FSharp.Core_LangPack" />
|
||||
<ComponentRef Id="Runtime_LangPack_3.259.3.1_FSharp.Core_LangPack" />
|
||||
|
||||
<!-- F# 3.0 -->
|
||||
|
||||
<ComponentRef Id="Runtime_LangPack_4.3.0.0_FSharp.Core_LangPack" />
|
||||
<ComponentRef Id="Runtime_LangPack_2.3.5.0_FSharp.Core_LangPack" />
|
||||
|
||||
<!-- Registery Keys -->
|
||||
|
||||
<ComponentRef Id="Runtime_LangPack_RegistryKeys_InstallSuccess_$(var.LocaleCode)" />
|
||||
|
||||
</ComponentGroup>
|
||||
|
||||
<!-- F# 4.3 -->
|
||||
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.4.3.0_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_4.4.3.0_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_4.4.3.0_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_4.4.3.0_FSharp.Core.resources.dll" Source="$(var.BinariesDir)\net40\bin\$(var.LocaleParentCulture)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
|
||||
<!-- F# 4.1 -->
|
||||
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.4.1.0_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_4.4.1.0_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_4.4.1.0_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_4.4.1.0_FSharp.Core.resources.dll" Source="$(var.BinariesDir)\net40\bin\$(var.LocaleParentCulture)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETPortable_3.47.41.0_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_3.47.41.0_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_3.47.41.0_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_3.47.41._FSharp.Core.resources.dll" Source="$(var.BinariesDir)\profiles\portable-net45+sl5+netcore45\localize\$(var.LocaleCode)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.7.41.0_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_3.7.41.0_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_3.7.41.0_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_3.7.41.0_FSharp.Core.resources.dll" Source="$(var.BinariesDir)\profiles\portable-net45+netcore45\localize\$(var.LocaleCode)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.78.41.0_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_3.78.41.0_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_3.78.41.0_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_3.78.41.0_FSharp.Core.resources.dll" Source="$(var.BinariesDir)\profiles\portable-net45+netcore45+wp8\localize\$(var.LocaleCode)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.259.41.0_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_3.259.41.0_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_3.259.41.0_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_3.259.41.0_FSharp.Core.resources.dll" Source="$(var.BinariesDir)\profiles\portable-net45+netcore45+wpa81+wp8\localize\$(var.LocaleCode)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
|
||||
<!-- F# 4.0 -->
|
||||
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.4.0.0_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_4.4.0.0_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_4.4.0.0_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_4.4.0.0_FSharp.Core.resources.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.4.0.0\$(var.LocaleCode)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_LangPack_4.4.0.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.4.0.0\Intellisense\$(var.LocaleId)\FSharp.Core.xml" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETPortable_3.47.4.0_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_3.47.4.0_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_3.47.4.0_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_3.47.4.0_FSharp.Core.resources.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\3.47.4.0\$(var.LocaleCode)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_LangPack_3.47.4.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\3.47.4.0\Intellisense\$(var.LocaleId)\FSharp.Core.xml" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.7.4.0_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_3.7.4.0_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_3.7.4.0_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_3.7.4.0_FSharp.Core.resources.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.7.4.0\$(var.LocaleCode)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_LangPack_3.7.4.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.7.4.0\Intellisense\$(var.LocaleId)\FSharp.Core.xml" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.78.4.0_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_3.78.4.0_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_3.78.4.0_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_3.78.4.0_FSharp.Core.resources.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.4.0\$(var.LocaleCode)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_LangPack_3.78.4.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.4.0\Intellisense\$(var.LocaleId)\FSharp.Core.xml" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.259.4.0_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_3.259.4.0_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_3.259.4.0_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_3.259.4.0_FSharp.Core.resources.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.4.0\$(var.LocaleCode)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_LangPack_3.259.4.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.4.0\Intellisense\$(var.LocaleId)\FSharp.Core.xml" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
|
||||
<!-- F# 3.1 -->
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.3.1.0_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_4.3.1.0_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_4.3.1.0_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_4.3.1.0_FSharp.Core.resources.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.1.0\$(var.LocaleCode)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_LangPack_4.3.1.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.1.0\Intellisense\$(var.LocaleId)\FSharp.Core.xml" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETPortable_2.3.5.1_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_2.3.5.1_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_2.3.5.1_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_2.3.5.1_FSharp.Core.resources.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.1\$(var.LocaleCode)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_LangPack_2.3.5.1_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.1\Intellisense\$(var.LocaleId)\FSharp.Core.xml" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.3.1.0_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_3.3.1.0_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_3.3.1.0_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_3.3.1.0_FSharp.Core.resources.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.3.1.0\$(var.LocaleCode)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_LangPack_3.3.1.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.3.1.0\Intellisense\$(var.LocaleId)\FSharp.Core.xml" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.78.3.1_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_3.78.3.1_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_3.78.3.1_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_3.78.3.1_FSharp.Core.resources.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.3.1\$(var.LocaleCode)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_LangPack_3.78.3.1_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.3.1\Intellisense\$(var.LocaleId)\FSharp.Core.xml" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.259.3.1_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_3.259.3.1_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_3.259.3.1_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_3.259.3.1_FSharp.Core.resources.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.3.1\$(var.LocaleCode)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_LangPack_3.259.3.1_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.3.1\Intellisense\$(var.LocaleId)\FSharp.Core.xml" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
|
||||
<!-- F# 3.0 -->
|
||||
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.3.0.0_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_4.3.0.0_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_4.3.0.0_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_4.3.0.0_FSharp.Core.resources.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.0.0\$(var.LocaleCode)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_LangPack_4.3.0.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.0.0\Intellisense\$(var.LocaleId)\FSharp.Core.xml" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETPortable_2.3.5.0_$(var.LocaleId)">
|
||||
<Component Id="Runtime_LangPack_2.3.5.0_FSharp.Core_LangPack" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_2.3.5.0_FSharp.Core_LangPack, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_LangPack_2.3.5.0_FSharp.Core.resources.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.0\$(var.LocaleCode)\FSharp.Core.resources.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_LangPack_2.3.5.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.0\Intellisense\$(var.LocaleId)\FSharp.Core.xml" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
|
||||
<!-- Registry Keys -->
|
||||
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp">
|
||||
<Component Id="Runtime_LangPack_RegistryKeys_InstallSuccess_$(var.LocaleCode)" Transitive="yes" Guid="$(fsharp.guid(Runtime_LangPack_RegistryKeys_InstallSuccess_$(var.LocaleCode), $(var.LocaleCode)))">
|
||||
<RegistryKey Root="HKLM" Key="Software\Microsoft\FSharp\10.1\Runtime\v4.0_$(var.LocaleId)\Install" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
|
||||
<RegistryValue Name="InstallSuccess" Value="4.4.3.0" Type="string" />
|
||||
</RegistryKey>
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
|
||||
</Fragment>
|
||||
</Wix>
|
|
@ -1,240 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. -->
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
|
||||
<Fragment>
|
||||
<ComponentGroup Id="Runtime_Redist">
|
||||
|
||||
<!-- F# 4.3 -->
|
||||
<ComponentRef Id="Runtime_Redist_4.4.3.0_FSharp.Core" />
|
||||
|
||||
<!-- F# 4.1 -->
|
||||
<ComponentRef Id="Runtime_Redist_4.4.1.0_FSharp.Core" />
|
||||
<ComponentRef Id="Runtime_Redist_3.47.41.0_FSharp.Core" />
|
||||
<ComponentRef Id="Runtime_Redist_3.7.41.0_FSharp.Core" />
|
||||
<ComponentRef Id="Runtime_Redist_3.78.41.0_FSharp.Core" />
|
||||
<ComponentRef Id="Runtime_Redist_3.259.41.0_FSharp.Core" />
|
||||
|
||||
<!-- F# 4.0 -->
|
||||
<ComponentRef Id="Runtime_Redist_4.4.0.0_FSharp.Core" />
|
||||
<ComponentRef Id="Runtime_Redist_3.47.4.0_FSharp.Core" />
|
||||
<ComponentRef Id="Runtime_Redist_3.7.4.0_FSharp.Core" />
|
||||
<ComponentRef Id="Runtime_Redist_3.78.4.0_FSharp.Core" />
|
||||
<ComponentRef Id="Runtime_Redist_3.259.4.0_FSharp.Core" />
|
||||
|
||||
<!-- F# 3.1 -->
|
||||
<ComponentRef Id="Runtime_Redist_4.3.1.0_FSharp.Core" />
|
||||
<ComponentRef Id="Runtime_Redist_2.3.5.1_FSharp.Core" />
|
||||
<ComponentRef Id="Runtime_Redist_3.3.1.0_FSharp.Core" />
|
||||
<ComponentRef Id="Runtime_Redist_3.78.3.1_FSharp.Core" />
|
||||
<ComponentRef Id="Runtime_Redist_3.259.3.1_FSharp.Core" />
|
||||
|
||||
<!-- F# 3.0 -->
|
||||
<ComponentRef Id="Runtime_Redist_4.3.0.0_FSharp.Core" />
|
||||
<ComponentRef Id="Runtime_Redist_2.3.5.0_FSharp.Core" />
|
||||
|
||||
</ComponentGroup>
|
||||
|
||||
<!-- F# 4.3 -->
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.4.3.0">
|
||||
<Component Id="Runtime_Redist_4.4.3.0_FSharp.Core" Transitive="yes" Guid="$(fsharp.guid(Runtime_Redist_4.4.3.0_FSharp.Core, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_Redist_4.4.3.0_FSharp.Core.dll" Source="$(var.BinariesDir)\net40\bin\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_4.4.3.0_FSharp.Core.xml" Source="$(var.BinariesDir)\net40\bin\FSharp.Core.xml" />
|
||||
<!-- NOTE: The optdata and sigdata files are now integrated as resources for more recent FSharp.Core.dll's. -->
|
||||
<!-- However old versions of FSharp.Core still need these files. For consistency we also continue to produce the files -->
|
||||
<!-- for FSharp.Core 4.4.1.0, and include them in the redist. -->
|
||||
<!-- -->
|
||||
<!-- We should continue to produce the files for FSharp.Core 4.4.2.0 and beyond, for inclusion in the FSharp.Core -->
|
||||
<!-- nuget package. We should do this for as long as it is possible that old F# compilers (VS2010-VS2017) will end up referring to newer -->
|
||||
<!-- versions of the FSharp.Core package (which can happen automatically on package upgrade). However for FSharp.Core 4.4.2.0 -->
|
||||
<!-- beyond the files will not be needed in the redist, which is only ever installed on machines alongside a recent -->
|
||||
<!-- F# compiler -->
|
||||
<File Id="Runtime_Redist_4.4.3.0_FSharp.Core.sigdata" Source="$(var.BinariesDir)\net40\bin\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_4.4.3.0_FSharp.Core.optdata" Source="$(var.BinariesDir)\net40\bin\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<!-- F# 4.1 -->
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.4.1.0">
|
||||
<Component Id="Runtime_Redist_4.4.1.0_FSharp.Core" Transitive="yes" Guid="$(fsharp.guid(Runtime_Redist_4.4.1.0_FSharp.Core, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_Redist_4.4.1.0_FSharp.Core.dll" Source="$(var.BinariesDir)\versions\4.4.1.0\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_4.4.1.0_FSharp.Core.xml" Source="$(var.BinariesDir)\versions\4.4.1.0\FSharp.Core.xml" />
|
||||
<!-- NOTE: The optdata and sigdata files are now integrated as resources for more recent FSharp.Core.dll's. -->
|
||||
<!-- However old versions of FSharp.Core still need these files. For consistency we also continue to produce the files -->
|
||||
<!-- for FSharp.Core 4.4.1.0, and include them in the redist. -->
|
||||
<!-- -->
|
||||
<!-- We should continue to produce the files for FSharp.Core 4.4.2.0 and beyond, for inclusion in the FSharp.Core -->
|
||||
<!-- nuget package. We should do this for as long as it is possible that old F# compilers (VS2010-VS2017) will end up referring to newer -->
|
||||
<!-- versions of the FSharp.Core package (which can happen automatically on package upgrade). However for FSharp.Core 4.4.2.0 -->
|
||||
<!-- beyond the files will not be needed in the redist, which is only ever installed on machines alongside a recent -->
|
||||
<!-- F# compiler -->
|
||||
<File Id="Runtime_Redist_4.4.1.0_FSharp.Core.sigdata" Source="$(var.BinariesDir)\versions\4.4.1.0\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_4.4.1.0_FSharp.Core.optdata" Source="$(var.BinariesDir)\versions\4.4.1.0\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETPortable_3.47.41.0">
|
||||
<Component Id="Runtime_Redist_3.47.41.0_FSharp.Core" Transitive="yes" Guid="$(fsharp.guid(Runtime_Redist_3.47.41.0_FSharp.Core, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_Redist_3.47.41.0_FSharp.Core.dll" Source="$(var.BinariesDir)\profiles\portable-net45+sl5+netcore45\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_3.47.41.0_FSharp.Core.xml" Source="$(var.BinariesDir)\profiles\portable-net45+sl5+netcore45\FSharp.Core.xml" />
|
||||
<!-- See notes above on signdata/optdata and why they are still included here. -->
|
||||
<File Id="Runtime_Redist_3.47.41.0_FSharp.Core.sigdata" Source="$(var.BinariesDir)\profiles\portable-net45+sl5+netcore45\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_3.47.41.0_FSharp.Core.optdata" Source="$(var.BinariesDir)\profiles\portable-net45+sl5+netcore45\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.7.41.0">
|
||||
<Component Id="Runtime_Redist_3.7.41.0_FSharp.Core" Transitive="yes" Guid="$(fsharp.guid(Runtime_Redist_3.7.41.0_FSharp.Core, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_Redist_3.7.41.0_FSharp.Core.dll" Source="$(var.BinariesDir)\profiles\portable-net45+netcore45\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_3.7.41.0_FSharp.Core.xml" Source="$(var.BinariesDir)\profiles\portable-net45+netcore45\FSharp.Core.xml" />
|
||||
<!-- See notes above on signdata/optdata and why they are still included here. -->
|
||||
<File Id="Runtime_Redist_3.7.41.0_FSharp.Core.sigdata" Source="$(var.BinariesDir)\profiles\portable-net45+netcore45\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_3.7.41.0_FSharp.Core.optdata" Source="$(var.BinariesDir)\profiles\portable-net45+netcore45\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.78.41.0">
|
||||
<Component Id="Runtime_Redist_3.78.41.0_FSharp.Core" Transitive="yes" Guid="$(fsharp.guid(Runtime_Redist_3.78.41.0_FSharp.Core, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_Redist_3.78.41.0_FSharp.Core.dll" Source="$(var.BinariesDir)\profiles\portable-net45+netcore45+wp8\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_3.78.41.0_FSharp.Core.xml" Source="$(var.BinariesDir)\profiles\portable-net45+netcore45+wp8\FSharp.Core.xml" />
|
||||
<!-- See notes above on signdata/optdata and why they are still included here. -->
|
||||
<File Id="Runtime_Redist_3.78.41.0_FSharp.Core.sigdata" Source="$(var.BinariesDir)\profiles\portable-net45+netcore45+wp8\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_3.78.41.0_FSharp.Core.optdata" Source="$(var.BinariesDir)\profiles\portable-net45+netcore45+wp8\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.259.41.0">
|
||||
<Component Id="Runtime_Redist_3.259.41.0_FSharp.Core" Transitive="yes" Guid="$(fsharp.guid(Runtime_Redist_3.259.41.0_FSharp.Core, $(var.LocaleCode)))">
|
||||
<File Id="Runtime_Redist_3.259.41.0_FSharp.Core.dll" Source="$(var.BinariesDir)\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_3.259.41.0_FSharp.Core.xml" Source="$(var.BinariesDir)\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.xml" />
|
||||
<!-- See notes above on signdata/optdata and why they are still included here. -->
|
||||
<File Id="Runtime_Redist_3.259.41.0_FSharp.Core.sigdata" Source="$(var.BinariesDir)\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_3.259.41.0_FSharp.Core.optdata" Source="$(var.BinariesDir)\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
|
||||
<!-- F# 4.0 -->
|
||||
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.4.0.0">
|
||||
<Component Id="Runtime_Redist_4.4.0.0_FSharp.Core" Transitive="yes" Guid="DA07D2FE-8B67-566A-A48C-88AB3188BBCA">
|
||||
<File Id="Runtime_Redist_4.4.0.0_FSharp.Core.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.4.0.0\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_4.4.0.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.4.0.0\FSharp.Core.xml" />
|
||||
<!-- NOTE: The optdata and sigdata files are now integrated as resources for more recent FSharp.Core.dll's. -->
|
||||
<!-- However old versions of FSharp.Core still need these files, which is why they are included here - and always shoul be. -->
|
||||
<File Id="Runtime_Redist_4.4.0.0_FSharp.Core.sigdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.4.0.0\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_4.4.0.0_FSharp.Core.optdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.4.0.0\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETPortable_3.47.4.0">
|
||||
<Component Id="Runtime_Redist_3.47.4.0_FSharp.Core" Transitive="yes" Guid="37873912-7DAC-5992-9FEA-92CF91857AA8">
|
||||
<File Id="Runtime_Redist_3.47.4.0_FSharp.Core.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\3.47.4.0\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_3.47.4.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\3.47.4.0\FSharp.Core.xml" />
|
||||
<!-- NOTE: The optdata and sigdata files are now integrated as resources for more recent FSharp.Core.dll's. -->
|
||||
<!-- However old versions of FSharp.Core still need these files, which is why they are included here - and always shoul be. -->
|
||||
<File Id="Runtime_Redist_3.47.4.0_FSharp.Core.sigdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\3.47.4.0\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_3.47.4.0_FSharp.Core.optdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\3.47.4.0\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.7.4.0">
|
||||
<Component Id="Runtime_Redist_3.7.4.0_FSharp.Core" Transitive="yes" Guid="1574403D-39A7-5946-A982-AF82AAC8D7EB">
|
||||
<File Id="Runtime_Redist_3.7.4.0_FSharp.Core.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.7.4.0\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_3.7.4.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.7.4.0\FSharp.Core.xml" />
|
||||
<!-- NOTE: The optdata and sigdata files are now integrated as resources for more recent FSharp.Core.dll's. -->
|
||||
<!-- However old versions of FSharp.Core still need these files, which is why they are included here - and always shoul be. -->
|
||||
<File Id="Runtime_Redist_3.7.4.0_FSharp.Core.sigdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.7.4.0\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_3.7.4.0_FSharp.Core.optdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.7.4.0\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.78.4.0">
|
||||
<Component Id="Runtime_Redist_3.78.4.0_FSharp.Core" Transitive="yes" Guid="38863225-7332-5676-B315-D075D92EE7B3">
|
||||
<File Id="Runtime_Redist_3.78.4.0_FSharp.Core.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.4.0\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_3.78.4.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.4.0\FSharp.Core.xml" />
|
||||
<!-- NOTE: The optdata and sigdata files are now integrated as resources for more recent FSharp.Core.dll's. -->
|
||||
<!-- However old versions of FSharp.Core still need these files, which is why they are included here - and always shoul be. -->
|
||||
<File Id="Runtime_Redist_3.78.4.0_FSharp.Core.sigdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.4.0\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_3.78.4.0_FSharp.Core.optdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.4.0\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.259.4.0">
|
||||
<Component Id="Runtime_Redist_3.259.4.0_FSharp.Core" Transitive="yes" Guid="DCD97222-B0CF-5CA6-AFED-E12CA45E3A50">
|
||||
<File Id="Runtime_Redist_3.259.4.0_FSharp.Core.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.4.0\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_3.259.4.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.4.0\FSharp.Core.xml" />
|
||||
<!-- NOTE: The optdata and sigdata files are now integrated as resources for more recent FSharp.Core.dll's. -->
|
||||
<!-- However old versions of FSharp.Core still need these files, which is why they are included here - and always shoul be. -->
|
||||
<File Id="Runtime_Redist_3.259.4.0_FSharp.Core.sigdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.4.0\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_3.259.4.0_FSharp.Core.optdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.4.0\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
|
||||
<!-- F# 3.1 -->
|
||||
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.3.1.0">
|
||||
<Component Id="Runtime_Redist_4.3.1.0_FSharp.Core" Transitive="yes" Guid="4A1993AA-FA5A-45E5-A08C-7A1887DA52B9">
|
||||
<File Id="Runtime_Redist_4.3.1.0_FSharp.Core.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.1.0\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_4.3.1.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.1.0\FSharp.Core.xml" />
|
||||
<!-- NOTE: The optdata and sigdata files are now integrated as resources for more recent FSharp.Core.dll's. -->
|
||||
<!-- However old versions of FSharp.Core still need these files, which is why they are included here - and always shoul be. -->
|
||||
<File Id="Runtime_Redist_4.3.1.0_FSharp.Core.sigdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.1.0\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_4.3.1.0_FSharp.Core.optdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.1.0\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETPortable_2.3.5.1">
|
||||
<Component Id="Runtime_Redist_2.3.5.1_FSharp.Core" Transitive="yes" Guid="32033C8F-1065-453D-B97F-382FA8E47711">
|
||||
<File Id="Runtime_Redist_2.3.5.1_FSharp.Core.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.1\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_2.3.5.1_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.1\FSharp.Core.xml" />
|
||||
<!-- NOTE: The optdata and sigdata files are now integrated as resources for more recent FSharp.Core.dll's. -->
|
||||
<!-- However old versions of FSharp.Core still need these files, which is why they are included here - and always shoul be. -->
|
||||
<File Id="Runtime_Redist_2.3.5.1_FSharp.Core.sigdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.1\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_2.3.5.1_FSharp.Core.optdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.1\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.3.1.0">
|
||||
<Component Id="Runtime_Redist_3.3.1.0_FSharp.Core" Transitive="yes" Guid="66247184-2DBA-45FC-8F6C-620DB406D01E">
|
||||
<File Id="Runtime_Redist_3.3.1.0_FSharp.Core.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.3.1.0\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_3.3.1.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.3.1.0\FSharp.Core.xml" />
|
||||
<!-- NOTE: The optdata and sigdata files are now integrated as resources for more recent FSharp.Core.dll's. -->
|
||||
<!-- However old versions of FSharp.Core still need these files, which is why they are included here - and always shoul be. -->
|
||||
<File Id="Runtime_Redist_3.3.1.0_FSharp.Core.sigdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.3.1.0\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_3.3.1.0_FSharp.Core.optdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.3.1.0\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.78.3.1">
|
||||
<Component Id="Runtime_Redist_3.78.3.1_FSharp.Core" Transitive="yes" Guid="4E980E06-B1D8-4CE1-AA06-8BECA0CE042F">
|
||||
<File Id="Runtime_Redist_3.78.3.1_FSharp.Core.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.3.1\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_3.78.3.1_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.3.1\FSharp.Core.xml" />
|
||||
<!-- NOTE: The optdata and sigdata files are now integrated as resources for more recent FSharp.Core.dll's. -->
|
||||
<!-- However old versions of FSharp.Core still need these files, which is why they are included here - and always shoul be. -->
|
||||
<File Id="Runtime_Redist_3.78.3.1_FSharp.Core.sigdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.3.1\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_3.78.3.1_FSharp.Core.optdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.3.1\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETCore_3.259.3.1">
|
||||
<Component Id="Runtime_Redist_3.259.3.1_FSharp.Core" Transitive="yes" Guid="F0C04DA6-86D2-49DF-9348-E8A69B95EA70">
|
||||
<File Id="Runtime_Redist_3.259.3.1_FSharp.Core.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.3.1\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_3.259.3.1_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.3.1\FSharp.Core.xml" />
|
||||
<!-- NOTE: The optdata and sigdata files are now integrated as resources for more recent FSharp.Core.dll's. -->
|
||||
<!-- However old versions of FSharp.Core still need these files, which is why they are included here - and always shoul be. -->
|
||||
<File Id="Runtime_Redist_3.259.3.1_FSharp.Core.sigdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.3.1\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_3.259.3.1_FSharp.Core.optdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.3.1\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
|
||||
<!-- F# 3.0 -->
|
||||
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETFramework_4.0_4.3.0.0">
|
||||
<Component Id="Runtime_Redist_4.3.0.0_FSharp.Core" Transitive="yes" Guid="A0608A0C-5B4A-439E-B058-5930433BF254">
|
||||
<File Id="Runtime_Redist_4.3.0.0_FSharp.Core.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.0.0\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_4.3.0.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.0.0\FSharp.Core.xml" />
|
||||
<!-- NOTE: The optdata and sigdata files are now integrated as resources for more recent FSharp.Core.dll's. -->
|
||||
<!-- However old versions of FSharp.Core still need these files, which is why they are included here - and always shoul be. -->
|
||||
<File Id="Runtime_Redist_4.3.0.0_FSharp.Core.sigdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.0.0\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_4.3.0.0_FSharp.Core.optdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.0.0\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
<DirectoryRef Id="ReferenceAssemblies_Microsoft_FSharp_NETPortable_2.3.5.0">
|
||||
<Component Id="Runtime_Redist_2.3.5.0_FSharp.Core" Transitive="yes" Guid="AFE254E7-FC12-4F7D-A804-9DF009BFBD8E">
|
||||
<File Id="Runtime_Redist_2.3.5.0_FSharp.Core.dll" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.0\FSharp.Core.dll" KeyPath="yes" />
|
||||
<File Id="Runtime_Redist_2.3.5.0_FSharp.Core.xml" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.0\FSharp.Core.xml" />
|
||||
<!-- NOTE: The optdata and sigdata files are now integrated as resources for more recent FSharp.Core.dll's. -->
|
||||
<!-- However old versions of FSharp.Core still need these files, which is why they are included here - and always shoul be. -->
|
||||
<File Id="Runtime_Redist_2.3.5.0_FSharp.Core.sigdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.0\FSharp.Core.sigdata" />
|
||||
<File Id="Runtime_Redist_2.3.5.0_FSharp.Core.optdata" Source="$(var.NugetPackagesDir)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.0\FSharp.Core.optdata" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
</Fragment>
|
||||
</Wix>
|
|
@ -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))]
|
|
@ -1,45 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. -->
|
||||
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<SetupRootFolder>$(MSBuildProjectDirectory)\..</SetupRootFolder>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" />
|
||||
<Import Project="$(SetupRootFolder)\FSharp.Setup.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<ProjectLanguage>CSharp</ProjectLanguage>
|
||||
<MinimumVisualStudioVersion>15.0</MinimumVisualStudioVersion>
|
||||
<MicroBuildAssemblyVersion>$(FSCoreVersion)</MicroBuildAssemblyVersion>
|
||||
<MicroBuildAssemblyFileLanguage>cs</MicroBuildAssemblyFileLanguage>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Library</OutputType>
|
||||
<AssemblyName>FSharp.Wix.Extensions</AssemblyName>
|
||||
<ProjectGuid>{321E6C2C-9E1C-4506-B1C0-1F81DCAEF207}</ProjectGuid>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile></TargetFrameworkProfile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="$(WixInstallPath)\wix.dll" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="AssemblyInfo.cs" />
|
||||
<Compile Include="FSharpPreprocessorExtension.cs" />
|
||||
<Compile Include="FSharpWixExtension.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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<FSharpPreprocessorExtension> preprocessorExtension = new Lazy<FSharpPreprocessorExtension>();
|
||||
|
||||
public override PreprocessorExtension PreprocessorExtension
|
||||
{
|
||||
get { return this.preprocessorExtension.Value; }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
use vs
|
||||
|
||||
package name=Microsoft.FSharp.Compiler.Resources
|
||||
version=$(FSharpPackageVersion)
|
||||
vs.package.language=$(LocaleSpecificCulture)
|
|
@ -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"
|
|
@ -5,13 +5,12 @@
|
|||
<FSharpSourcesRoot>..\..\..\src</FSharpSourcesRoot>
|
||||
<OutputArchitecture>neutral</OutputArchitecture>
|
||||
<OutputLocalized>false</OutputLocalized>
|
||||
<OutputName>Microsoft.FSharp.SDK.Resources.$(LocaleCode)</OutputName>
|
||||
<OutputType>vsix</OutputType>
|
||||
<IsPackage>true</IsPackage>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
|
||||
<BinariesFolder>$(FSharpSourcesRoot)\..\$(Configuration)</BinariesFolder>
|
||||
<OutputPath>$(BinariesFolder)\insertion</OutputPath>
|
||||
<OutputType Condition="'$(IsLangPack)' != 'true'">vsix</OutputType>
|
||||
<OutputType Condition="'$(IsLangPack)' == 'true'">manifest</OutputType>
|
||||
<OutputName>Microsoft.FSharp.Compiler.Resources.$(LocaleCode)</OutputName>
|
||||
<IntermediateOutputPath>$(MSBuildThisFileDirectory)obj</IntermediateOutputPath>
|
||||
</PropertyGroup>
|
||||
|
||||
|
@ -20,28 +19,20 @@
|
|||
<PropertyGroup>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder)</PackagePreprocessorDefinitions>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion)</PackagePreprocessorDefinitions>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);LocaleCode=$(LocaleCode)</PackagePreprocessorDefinitions>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);LocaleId=$(LocaleId)</PackagePreprocessorDefinitions>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);LocaleParentId=$(LocaleParentId)</PackagePreprocessorDefinitions>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);LocaleParentCulture=$(LocaleParentCulture)</PackagePreprocessorDefinitions>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);LocaleSpecificCulture=$(LocaleSpecificCulture)</PackagePreprocessorDefinitions>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);IsLangPack=$(IsLangPack)</PackagePreprocessorDefinitions>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup Condition="'$(IsLangPack)' != 'true'">
|
||||
<Package Include="Empty.swr" />
|
||||
<ItemGroup>
|
||||
<Package Include="Files.swr" Condition="'$(IsLangPack)' == 'true'" />
|
||||
<Package Include="Empty.swr" Condition="'$(IsLangPack)' != 'true'" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(IsLangPack)' == 'true'">
|
||||
<Package Include="Files.swr" />
|
||||
</ItemGroup>
|
||||
<Target Name="CheckPropertiesArePassed">
|
||||
<Error Condition="'$(LocaleCode)' == ''" Text="A 'LocaleCode' property must be passed to the project." />
|
||||
<Error Condition="'$(LocaleId)' == ''" Text="A 'LocaleId' property must be passed to the project." />
|
||||
<Error Condition="'$(FSharpPackageVersion)' == ''" Text="A 'FSharpPackageVersion' property must be passed to the project." />
|
||||
<Error Condition="'$(LocaleParentCulture)' == ''" Text="A 'LocaleParentCulture' property must be passed to the project." />
|
||||
<Error Condition="'$(LocaleSpecificCulture)' == ''" Text="A 'LocaleSpecificCulture' property must be passed to the project." />
|
||||
<Error Condition="'$(IsLangPack)' == ''" Text="A 'IsLangPack' property must be passed to the project." />
|
||||
<Error Condition="'$(FSharpPackageVersion)' == ''" Text="A 'FSharpPackageVersion' property must be passed to the project." />
|
||||
</Target>
|
||||
|
||||
<Target Name="SignFiles">
|
|
@ -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
|
|
@ -0,0 +1,34 @@
|
|||
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
|
||||
file source="$(BinariesFolder)\net40\bin\fsc.exe.config"
|
||||
file source="$(BinariesFolder)\net40\bin\FSharp.Build.dll" vs.file.ngen=yes
|
||||
file source="$(BinariesFolder)\net40\bin\FSharp.Compiler.Interactive.Settings.dll" vs.file.ngen=yes
|
||||
file source="$(BinariesFolder)\net40\bin\FSharp.Compiler.Private.dll" vs.file.ngen=yes
|
||||
file source="$(BinariesFolder)\net40\bin\FSharp.Compiler.Server.Shared.dll" vs.file.ngen=yes
|
||||
file source="$(BinariesFolder)\net40\bin\FSharp.Core.dll" vs.file.ngen=yes
|
||||
file source="$(BinariesFolder)\net40\bin\FSharp.Core.optdata"
|
||||
file source="$(BinariesFolder)\net40\bin\FSharp.Core.sigdata"
|
||||
file source="$(PackagesFolder)\Microsoft.VisualFSharp.Type.Providers.Redist.$(MicrosoftVisualFSharpTypeProvidersRedistPackageVersion)\content\4.3.0.0\FSharp.Data.TypeProviders.dll" vs.file.ngen=yes
|
||||
file source="$(BinariesFolder)\net40\bin\fsi.exe" vs.file.ngen=yes
|
||||
file source="$(BinariesFolder)\net40\bin\fsi.exe.config"
|
||||
file source="$(BinariesFolder)\net40\bin\fsiAnyCpu.exe" vs.file.ngen=yes
|
||||
file source="$(BinariesFolder)\net40\bin\fsiAnyCpu.exe.config"
|
||||
file source="$(BinariesFolder)\net40\bin\Microsoft.Build.Conversion.Core.dll"
|
||||
file source="$(BinariesFolder)\net40\bin\Microsoft.Build.dll"
|
||||
file source="$(BinariesFolder)\net40\bin\Microsoft.Build.Engine.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.FSharp.NetSdk.props"
|
||||
file source="$(BinariesFolder)\net40\bin\Microsoft.FSharp.NetSdk.targets"
|
||||
file source="$(BinariesFolder)\net40\bin\Microsoft.FSharp.Targets"
|
||||
file source="$(BinariesFolder)\net40\bin\Microsoft.Portable.FSharp.Targets"
|
||||
file source="$(FSharpTreeRoot)\vsintegration\src\SupportedRuntimes\SupportedRuntimes.xml"
|
||||
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"
|
|
@ -0,0 +1,42 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. -->
|
||||
<Project InitialTargets="CheckPropertiesArePassed" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<FSharpSourcesRoot>$(MSBuildThisFileDirectory)..\..\..\src</FSharpSourcesRoot>
|
||||
<FSharpTreeRoot>$(FSharpSourcesRoot)\..</FSharpTreeRoot>
|
||||
<OutputArchitecture>neutral</OutputArchitecture>
|
||||
<OutputLocalized>false</OutputLocalized>
|
||||
<OutputType>vsix</OutputType>
|
||||
<IsPackage>true</IsPackage>
|
||||
<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
|
||||
<BinariesFolder>$(FSharpSourcesRoot)\..\$(Configuration)</BinariesFolder>
|
||||
<PackagesFolder>$(FSharpSourcesRoot)\..\packages</PackagesFolder>
|
||||
<OutputPath>$(BinariesFolder)\insertion</OutputPath>
|
||||
<OutputName>Microsoft.FSharp.Compiler</OutputName>
|
||||
<IntermediateOutputPath>$(MSBuildThisFileDirectory)obj</IntermediateOutputPath>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="$(FSharpSourcesRoot)\Microbuild.Settings.targets" />
|
||||
<Import Project="$(FSharpSourcesRoot)\..\build\targets\PackageVersions.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder)</PackagePreprocessorDefinitions>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);PackagesFolder=$(PackagesFolder)</PackagePreprocessorDefinitions>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);FSharpTreeRoot=$(FSharpTreeRoot)</PackagePreprocessorDefinitions>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion)</PackagePreprocessorDefinitions>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);MicrosoftVisualFSharpTypeProvidersRedistPackageVersion=$(MicrosoftVisualFSharpTypeProvidersRedistPackageVersion)</PackagePreprocessorDefinitions>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Package Include="Files.swr" />
|
||||
<Package Include="Dependencies.swr" />
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="CheckPropertiesArePassed">
|
||||
<Error Condition="'$(FSharpPackageVersion)' == ''" Text="A 'FSharpPackageVersion' property must be passed to the project." />
|
||||
</Target>
|
||||
|
||||
<Target Name="SignFiles">
|
||||
<!-- Signing is handled by the RoslynSignTool -->
|
||||
</Target>
|
||||
</Project>
|
|
@ -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
|
||||
|
|
|
@ -4,8 +4,8 @@ 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"
|
||||
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.NetSdk.Overrides.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"
|
||||
|
@ -15,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"
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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"
|
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. -->
|
||||
<Project InitialTargets="CheckPropertiesArePassed" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<FSharpSourcesRoot>$(MSBuildThisFileDirectory)..\..\..\src</FSharpSourcesRoot>
|
||||
<OutputArchitecture>neutral</OutputArchitecture>
|
||||
<OutputLocalized>false</OutputLocalized>
|
||||
<OutputType>vsix</OutputType>
|
||||
<IsPackage>true</IsPackage>
|
||||
<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
|
||||
<BinariesFolder>$(FSharpSourcesRoot)\..\$(Configuration)</BinariesFolder>
|
||||
<PackagesFolder>$(FSharpSourcesRoot)\..\packages</PackagesFolder>
|
||||
<OutputPath>$(BinariesFolder)\insertion</OutputPath>
|
||||
<OutputName>Microsoft.FSharp.IDE</OutputName>
|
||||
<IntermediateOutputPath>$(MSBuildThisFileDirectory)obj</IntermediateOutputPath>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="$(FSharpSourcesRoot)\Microbuild.Settings.targets" />
|
||||
|
||||
<PropertyGroup>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder)</PackagePreprocessorDefinitions>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);PackagesFolder=$(PackagesFolder)</PackagePreprocessorDefinitions>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion)</PackagePreprocessorDefinitions>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Package Include="Files.swr" />
|
||||
<Package Include="Dependencies.swr" />
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="CheckPropertiesArePassed">
|
||||
<Error Condition="'$(FSharpPackageVersion)' == ''" Text="A 'FSharpPackageVersion' property must be passed to the project." />
|
||||
</Target>
|
||||
|
||||
<Target Name="SignFiles">
|
||||
<!-- Signing is handled by the RoslynSignTool -->
|
||||
</Target>
|
||||
</Project>
|
|
@ -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,v10.1
|
||||
|
||||
vs.installSize
|
||||
SystemDrive=194670592
|
||||
TargetDrive=0
|
||||
SharedDrive=0
|
||||
|
||||
vs.payloads
|
||||
vs.payload source="$(BinariesFolder)\msi\Microsoft.FSharp.SDK.Core.msi"
|
|
@ -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),v10.1
|
|
@ -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),v10.1
|
||||
|
||||
vs.installSize
|
||||
SystemDrive=12681438
|
||||
TargetDrive=0
|
||||
SharedDrive=0
|
||||
|
||||
vs.payloads
|
||||
vs.payload source="$(BinariesFolder)\msi\Microsoft.FSharp.SDK.Resources.$(LocaleCode).msi"
|
|
@ -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="$(BinariesFolder)\profiles\portable-net45+netcore45\FSharp.Core.dll"
|
||||
file source="$(BinariesFolder)\profiles\portable-net45+netcore45\FSharp.Core.optdata"
|
||||
file source="$(BinariesFolder)\profiles\portable-net45+netcore45\FSharp.Core.sigdata"
|
||||
file source="$(BinariesFolder)\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="$(BinariesFolder)\profiles\portable-net45+netcore45+wp8\FSharp.Core.dll"
|
||||
file source="$(BinariesFolder)\profiles\portable-net45+netcore45+wp8\FSharp.Core.optdata"
|
||||
file source="$(BinariesFolder)\profiles\portable-net45+netcore45+wp8\FSharp.Core.sigdata"
|
||||
file source="$(BinariesFolder)\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="$(BinariesFolder)\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.dll"
|
||||
file source="$(BinariesFolder)\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.optdata"
|
||||
file source="$(BinariesFolder)\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.sigdata"
|
||||
file source="$(BinariesFolder)\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="$(BinariesFolder)\versions\4.4.1.0\FSharp.Core.dll"
|
||||
file source="$(BinariesFolder)\versions\4.4.1.0\FSharp.Core.optdata"
|
||||
file source="$(BinariesFolder)\versions\4.4.1.0\FSharp.Core.sigdata"
|
||||
file source="$(BinariesFolder)\versions\4.4.1.0\FSharp.Core.xml"
|
||||
folder "4.4.3.0"
|
||||
file source="$(BinariesFolder)\net40\bin\FSharp.Core.dll"
|
||||
file source="$(BinariesFolder)\net40\bin\FSharp.Core.optdata"
|
||||
file source="$(BinariesFolder)\net40\bin\FSharp.Core.sigdata"
|
||||
file source="$(BinariesFolder)\net40\bin\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="$(BinariesFolder)\profiles\portable-net45+sl5+netcore45\FSharp.Core.dll"
|
||||
file source="$(BinariesFolder)\profiles\portable-net45+sl5+netcore45\FSharp.Core.optdata"
|
||||
file source="$(BinariesFolder)\profiles\portable-net45+sl5+netcore45\FSharp.Core.sigdata"
|
||||
file source="$(BinariesFolder)\profiles\portable-net45+sl5+netcore45\FSharp.Core.xml"
|
|
@ -5,11 +5,12 @@
|
|||
<FSharpSourcesRoot>..\..\..\src</FSharpSourcesRoot>
|
||||
<OutputArchitecture>neutral</OutputArchitecture>
|
||||
<OutputLocalized>false</OutputLocalized>
|
||||
<OutputType>manifest</OutputType>
|
||||
<OutputName>Microsoft.FSharp.SDK.Core</OutputName>
|
||||
<OutputType>vsix</OutputType>
|
||||
<OutputName>Microsoft.FSharp.SDK</OutputName>
|
||||
<IsPackage>true</IsPackage>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<BinariesFolder>$(FSharpSourcesRoot)\..\$(Configuration)</BinariesFolder>
|
||||
<PackagesFolder>$(FSharpSourcesRoot)\..\packages</PackagesFolder>
|
||||
<OutputPath>$(BinariesFolder)\insertion</OutputPath>
|
||||
<IntermediateOutputPath>$(MSBuildThisFileDirectory)obj</IntermediateOutputPath>
|
||||
</PropertyGroup>
|
||||
|
@ -18,6 +19,7 @@
|
|||
|
||||
<PropertyGroup>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder)</PackagePreprocessorDefinitions>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);PackagesFolder=$(PackagesFolder)</PackagePreprocessorDefinitions>
|
||||
<PackagePreprocessorDefinitions>$(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion)</PackagePreprocessorDefinitions>
|
||||
</PropertyGroup>
|
||||
|
|
@ -27,14 +27,17 @@
|
|||
|
||||
<Target Name="IncludeFSharpManifests" DependsOnTargets="CopyInsertionItems">
|
||||
<ItemGroup>
|
||||
<MergeManifest Include="$(OutputPath)\Microsoft.FSharp.SDK.Core.json" />
|
||||
<MergeManifest Include="$(OutputPath)\Microsoft.FSharp.SDK.Resources.%(SetupLanguages.LocaleCode).json" />
|
||||
<MergeManifest Include="$(OutputPath)\Microsoft.FSharp.Compiler.json" />
|
||||
<MergeManifest Include="$(OutputPath)\Microsoft.FSharp.Compiler.Resources.%(SetupLanguages.LocaleCode).json" />
|
||||
|
||||
<MergeManifest Include="$(OutputPath)\Microsoft.FSharp.SDK.json" />
|
||||
|
||||
<MergeManifest Include="$(OutputPath)\Microsoft.FSharp.Vsix.Full.Core.json" />
|
||||
<MergeManifest Include="$(OutputPath)\Microsoft.FSharp.Vsix.Full.Resources.%(SetupLanguages.LocaleCode).json" />
|
||||
|
||||
<MergeManifest Include="$(OutputPath)\Microsoft.FSharp.VSIX.Templates.json" />
|
||||
<MergeManifest Include="$(OutputPath)\Microsoft.FSharp.Dependencies.json" />
|
||||
<MergeManifest Include="$(OutputPath)\Microsoft.FSharp.IDE.json" />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
</Project>
|
|
@ -13,13 +13,16 @@
|
|||
|
||||
<Target Name="CollectSetupProjects">
|
||||
<ItemGroup>
|
||||
<SwixSetupProjects Include="Microsoft.FSharp.SDK.Core.swixproj">
|
||||
<ProjectPath>Swix\Microsoft.FSharp.SDK.Core\Microsoft.FSharp.SDK.Core.swixproj</ProjectPath>
|
||||
<SwixSetupProjects Include="Microsoft.FSharp.SDK.swixproj">
|
||||
<ProjectPath>Swix\Microsoft.FSharp.SDK\Microsoft.FSharp.SDK.swixproj</ProjectPath>
|
||||
</SwixSetupProjects>
|
||||
<SwixSetupProjects Include="Microsoft.FSharp.Compiler.swixproj">
|
||||
<ProjectPath>Swix\Microsoft.FSharp.Compiler\Microsoft.FSharp.Compiler.swixproj</ProjectPath>
|
||||
</SwixSetupProjects>
|
||||
</ItemGroup>
|
||||
|
||||
<CreateItem Include="@(SetupLanguages)"
|
||||
AdditionalMetadata="ProjectPath=Swix\Microsoft.FSharp.SDK.Resources\Microsoft.FSharp.SDK.Resources.swixproj">
|
||||
AdditionalMetadata="ProjectPath=Swix\Microsoft.FSharp.Compiler.Resources\Microsoft.FSharp.Compiler.Resources.swixproj">
|
||||
<Output ItemName="SwixSetupProjects" TaskParameter="Include"/>
|
||||
</CreateItem>
|
||||
</Target>
|
||||
|
@ -30,7 +33,7 @@
|
|||
</PropertyGroup>
|
||||
<MSBuild Projects="%(SwixSetupProjects.ProjectPath)"
|
||||
Targets="Build"
|
||||
Properties="LocaleCode=%(SwixSetupProjects.LocaleCode);LocaleId=%(SwixSetupProjects.LocaleId);LocaleParentId=%(SwixSetupProjects.LocaleParentId);LocaleParentCulture=%(SwixSetupProjects.LocaleParentCulture);LocaleSpecificCulture=%(SwixSetupProjects.LocaleSpecificCulture);IsLangPack=%(SwixSetupProjects.IsLangPack);FSharpPackageVersion=$(FSharpPackageVersion);$(CustomProps)"/>
|
||||
Properties="Configuration=$(Configuration);LocaleCode=%(SwixSetupProjects.LocaleCode);LocaleId=%(SwixSetupProjects.LocaleId);LocaleParentId=%(SwixSetupProjects.LocaleParentId);LocaleParentCulture=%(SwixSetupProjects.LocaleParentCulture);LocaleSpecificCulture=%(SwixSetupProjects.LocaleSpecificCulture);IsLangPack=%(SwixSetupProjects.IsLangPack);FSharpPackageVersion=$(FSharpPackageVersion);$(CustomProps)"/>
|
||||
</Target>
|
||||
|
||||
<Target Name="CopyLocalizationResources" BeforeTargets="Build">
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
<!-- Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. -->
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
|
||||
<Import Project="..\src\Microbuild.Settings.targets" />
|
||||
|
||||
<PropertyGroup>
|
||||
<SetupRootFolder>.</SetupRootFolder>
|
||||
<TargetDotnetProfile Condition="'$(TargetDotnetProfile)'==''">net40</TargetDotnetProfile>
|
||||
<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="FSharp.Setup.props" />
|
||||
|
||||
<Target Name="CollectSetupProjects">
|
||||
<ItemGroup>
|
||||
<WixSetupProjects Include="FSharp.Wix.Extensions.csproj">
|
||||
<ProjectPath>FSharp.Wix.Extensions\FSharp.Wix.Extensions.csproj</ProjectPath>
|
||||
</WixSetupProjects>
|
||||
</ItemGroup>
|
||||
|
||||
<CreateItem Include="@(SetupLanguages)"
|
||||
AdditionalMetadata="ProjectPath=FSharp.SDK\FSharp.SDK.wixproj">
|
||||
<Output ItemName="WixSetupProjects" TaskParameter="Include"/>
|
||||
</CreateItem>
|
||||
</Target>
|
||||
|
||||
<Target Name="Build" DependsOnTargets="CollectSetupProjects">
|
||||
<PropertyGroup>
|
||||
<CustomProps>AssemblySearchPaths={HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}</CustomProps>
|
||||
</PropertyGroup>
|
||||
<!-- Wix targets files doesn't handle localization parameters correctly. Cleaning before building files accross languages -->
|
||||
<MSBuild Projects="%(WixSetupProjects.ProjectPath)"
|
||||
Targets="Clean;Build"
|
||||
Properties="LocaleCode=%(WixSetupProjects.LocaleCode);LocaleId=%(WixSetupProjects.LocaleId);LocaleParentId=%(WixSetupProjects.LocaleParentId);LocaleParentCulture=%(WixSetupProjects.LocaleParentCulture);LocaleSpecificCulture=%(WixSetupProjects.LocaleSpecificCulture);IsLangPack=%(WixSetupProjects.IsLangPack);FSharpPackageVersion=$(FSharpPackageVersion);$(CustomProps)"/>
|
||||
</Target>
|
||||
|
||||
<Target Name="CopyLocalizationResources" BeforeTargets="Build">
|
||||
<ItemGroup>
|
||||
<SetupLocalizationResources Include="resources\**\*.*" />
|
||||
</ItemGroup>
|
||||
|
||||
<Copy SourceFiles="@(SetupLocalizationResources)"
|
||||
DestinationFiles="@(SetupLocalizationResources->'$(OutputPath)\resources\%(RecursiveDir)%(Filename)%(Extension)')" />
|
||||
</Target>
|
||||
</Project>
|
|
@ -30,6 +30,9 @@
|
|||
<SwixSetupProjects Include="Microsoft.FSharp.Dependencies.swixproj">
|
||||
<ProjectPath>Swix\Microsoft.FSharp.Dependencies\Microsoft.FSharp.Dependencies.swixproj</ProjectPath>
|
||||
</SwixSetupProjects>
|
||||
<SwixSetupProjects Include="Microsoft.FSharp.IDE.swixproj">
|
||||
<ProjectPath>Swix\Microsoft.FSharp.IDE\Microsoft.FSharp.IDE.swixproj</ProjectPath>
|
||||
</SwixSetupProjects>
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
<package id="MicroBuild.Core" version="0.2.0" />
|
||||
<package id="MicroBuild.Core.Sentinel" version="1.0.0" />
|
||||
<package id="MicroBuild.Plugins.SwixBuild" version="1.0.147" />
|
||||
<package id="WiX.Toolset.2015" version="3.10.0.1503" />
|
||||
<package id="Microsoft.VisualFSharp.Core.Redist" version="1.0.0" />
|
||||
<package id="Microsoft.VisualStudio.Shell.14.0" version="14.3.25407" targetFramework="net46" />
|
||||
<package id="Microsoft.VisualFSharp.Msbuild.15.0" version="1.0.1" />
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
|
||||
<Import Project="$(MSBuildProgramFiles32)\Microsoft SDKs\F#\10.1\Framework\v4.0\Microsoft.FSharp.NetSdk.props" />
|
||||
<Import Condition="'$(FSharpCompilerPath)' != ''" Project="$(FSharpCompilerPath)\Microsoft.FSharp.NetSdk.props" />
|
||||
<Import Condition="'$(FSharpCompilerPath)' == ''" Project="$(VsInstallRoot)\Common7\IDE\CommonExtensions\Microsoft\FSharp\Microsoft.FSharp.NetSdk.props" />
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
|
||||
<Import Project="$(MSBuildProgramFiles32)\Microsoft SDKs\F#\10.1\Framework\v4.0\Microsoft.FSharp.NetSdk.targets" />
|
||||
<Import Condition="'$(FSharpCompilerPath)' != ''" Project="$(FSharpCompilerPath)\Microsoft.FSharp.NetSdk.targets" />
|
||||
<Import Condition="'$(FSharpCompilerPath)' == ''" Project="$(VsInstallRoot)\Common7\IDE\CommonExtensions\Microsoft\FSharp\Microsoft.FSharp.NetSdk.targets" />
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
|
||||
<Import Project="$(MSBuildProgramFiles32)\Microsoft SDKs\F#\10.1\Framework\v4.0\Microsoft.FSharp.Overrides.NetSdk.targets" />
|
||||
<Import Condition="'$(FSharpCompilerPath)' != ''" Project="$(FSharpCompilerPath)\Microsoft.FSharp.Overrides.NetSdk.targets" />
|
||||
<Import Condition="'$(FSharpCompilerPath)' == ''" Project="$(VsInstallRoot)\Common7\IDE\CommonExtensions\Microsoft\FSharp\Microsoft.FSharp.Overrides.NetSdk.targets" />
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
|
||||
<Import Project="$(MSBuildProgramFiles32)\Microsoft SDKs\F#\10.1\Framework\v4.0\Microsoft.FSharp.Targets" />
|
||||
|
||||
|
||||
<Import Condition="'$(FSharpCompilerPath)' != ''" Project="$(FSharpCompilerPath)\Microsoft.FSharp.targets" />
|
||||
<Import Condition="'$(FSharpCompilerPath)' == ''" Project="$(VsInstallRoot)\Common7\IDE\CommonExtensions\Microsoft\FSharp\Microsoft.FSharp.targets" />
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
|
||||
<Import Project="$(MSBuildProgramFiles32)\Microsoft SDKs\F#\10.1\Framework\v4.0\Microsoft.Portable.FSharp.Targets" />
|
||||
|
||||
|
||||
<Import Condition="'$(FSharpCompilerPath)' != ''" Project="$(FSharpCompilerPath)\Microsoft.Portable.FSharp.targets" />
|
||||
<Import Condition="'$(FSharpCompilerPath)' == ''" Project="$(VsInstallRoot)\Common7\IDE\CommonExtensions\Microsoft\FSharp\Microsoft.Portable.FSharp.targets" />
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(TargetFramework)' == 'netstandard1.6' or '$(TargetFramework)' == 'netcoreapp1.0'">
|
||||
<DefineConstants>$(DefineConstants);FX_PORTABLE_OR_NETSTANDARD</DefineConstants>
|
||||
<DefineConstants>$(DefineConstants);NETSTANDARD1_6</DefineConstants>
|
||||
<DefineConstants>$(DefineConstants);FX_NO_APP_DOMAINS</DefineConstants>
|
||||
<DefineConstants>$(DefineConstants);FX_NO_ARRAY_LONG_LENGTH</DefineConstants>
|
||||
|
|
|
@ -20,9 +20,9 @@
|
|||
|
||||
<!-- Version number computation -->
|
||||
<PropertyGroup>
|
||||
<FSCoreVersion>4.4.3.0</FSCoreVersion>
|
||||
<FSProductVersion>10.1.1.0</FSProductVersion>
|
||||
<FSPackageVersion>10.1.4</FSPackageVersion>
|
||||
<FSCoreVersion>4.5.0.0</FSCoreVersion>
|
||||
<FSProductVersion>10.2.0.0</FSProductVersion>
|
||||
<FSPackageVersion>10.2.0</FSPackageVersion>
|
||||
<VSAssemblyVersion>15.7.0.0</VSAssemblyVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
|
@ -101,8 +101,8 @@
|
|||
<!-- Frozen FSharp.Core package being built with this build -->
|
||||
<FSharpCore41TargetPackageVersion>4.1.19</FSharpCore41TargetPackageVersion>
|
||||
<FSharpCore41TargetMajorVersion>4.1</FSharpCore41TargetMajorVersion>
|
||||
<FSharpCoreLatestTargetPackageVersion>4.3.5</FSharpCoreLatestTargetPackageVersion>
|
||||
<FSharpCoreLatestTargetMajorVersion>4.3</FSharpCoreLatestTargetMajorVersion>
|
||||
<FSharpCoreLatestTargetPackageVersion>4.5.0</FSharpCoreLatestTargetPackageVersion>
|
||||
<FSharpCoreLatestTargetMajorVersion>4.5</FSharpCoreLatestTargetMajorVersion>
|
||||
|
||||
<!-- Always qualify the IntermediateOutputPath by the TargetDotnetProfile if any exists -->
|
||||
<IntermediateOutputPath>obj\$(Configuration)\$(TargetDotnetProfile)\</IntermediateOutputPath>
|
||||
|
@ -111,13 +111,12 @@
|
|||
<!-- Frozen FSharp.Core package -->
|
||||
<FSharpCoreFrozenPortablePackageVersion>10.1.0</FSharpCoreFrozenPortablePackageVersion>
|
||||
<FSharpCoreFrozenPortableTargetPackageVersion>10.2.0</FSharpCoreFrozenPortableTargetPackageVersion>
|
||||
<FSharpCoreFrozenPortableTargetMajorVersion>10.1</FSharpCoreFrozenPortableTargetMajorVersion>
|
||||
<FSharpCoreFrozenPortableTargetMajorVersion>10.2</FSharpCoreFrozenPortableTargetMajorVersion>
|
||||
|
||||
<!-- Nunit -->
|
||||
<NUnitVersion>3.5.0</NUnitVersion>
|
||||
<NUnitFullVersion>3.5.0.0</NUnitFullVersion>
|
||||
<NUnitLibDir>$(FSharpSourcesRoot)\..\packages\NUnit.$(NUnitVersion)\lib\net45</NUnitLibDir>
|
||||
<NUnitToolsLibDir>$(FSharpSourcesRoot)\..\packages\NUnit.ConsoleRunner\$(NUnitVersion)\tools\</NUnitToolsLibDir>
|
||||
|
||||
<MonoPackaging Condition="'$(TargetDotnetProfile)' != 'coreclr' AND '$(OS)' == 'Unix'">true</MonoPackaging>
|
||||
|
||||
|
@ -199,18 +198,6 @@
|
|||
<WarningLevel Condition=" '$(WarningLevel)' == '' ">3</WarningLevel>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<DefineConstants Condition="'$(VisualStudioVersion)'=='12.0' AND '$(ProjectLanguage)' == 'VisualBasic'">$(DefineConstants),VS_VERSION_DEV12=True</DefineConstants>
|
||||
<DefineConstants Condition="'$(VisualStudioVersion)'=='12.0' AND '$(ProjectLanguage)' != 'VisualBasic'">$(DefineConstants);VS_VERSION_DEV12</DefineConstants>
|
||||
<DefineConstants Condition="'$(VisualStudioVersion)'=='14.0' AND '$(ProjectLanguage)' == 'VisualBasic'">$(DefineConstants),VS_VERSION_DEV14=True</DefineConstants>
|
||||
<DefineConstants Condition="'$(VisualStudioVersion)'=='14.0' AND '$(ProjectLanguage)' != 'VisualBasic'">$(DefineConstants);VS_VERSION_DEV14</DefineConstants>
|
||||
<DefineConstants Condition="'$(VisualStudioVersion)'=='15.0' AND '$(ProjectLanguage)' == 'VisualBasic'">$(DefineConstants),VS_VERSION_DEV15=True</DefineConstants>
|
||||
<DefineConstants Condition="'$(VisualStudioVersion)'=='15.0' AND '$(ProjectLanguage)' != 'VisualBasic'">$(DefineConstants);VS_VERSION_DEV15</DefineConstants>
|
||||
<!-- VisualStudioVersion is not defined when using xbuild on Mono. Assume 14.0, the last shipped in-the-box with Mono -->
|
||||
<DefineConstants Condition="'$(VisualStudioVersion)'=='' AND '$(ProjectLanguage)' == 'VisualBasic'">$(DefineConstants),VS_VERSION_DEV14=True</DefineConstants>
|
||||
<DefineConstants Condition="'$(VisualStudioVersion)'=='' AND '$(ProjectLanguage)' != 'VisualBasic'">$(DefineConstants);VS_VERSION_DEV14</DefineConstants>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Nuget Package properties -->
|
||||
<PropertyGroup>
|
||||
<BuildRevision>$([System.DateTime]::Now.ToString(`yyMMdd`))</BuildRevision>
|
||||
|
|
1380
src/absil/il.fs
1380
src/absil/il.fs
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -5,14 +5,12 @@ module public Microsoft.FSharp.Compiler.AbstractIL.Internal.Library
|
|||
|
||||
|
||||
open System
|
||||
open System.Collections
|
||||
open System.Collections.Generic
|
||||
open System.Diagnostics
|
||||
open System.IO
|
||||
open System.Reflection
|
||||
open System.Text
|
||||
open System.Threading
|
||||
open Internal.Utilities
|
||||
open System.Runtime.CompilerServices
|
||||
|
||||
#if FX_RESHAPED_REFLECTION
|
||||
open Microsoft.FSharp.Core.ReflectionAdapters
|
||||
|
@ -448,16 +446,16 @@ module List =
|
|||
|
||||
[<Struct>]
|
||||
type ValueOption<'T> =
|
||||
| VSome of 'T
|
||||
| VNone
|
||||
member x.IsSome = match x with VSome _ -> true | VNone -> false
|
||||
member x.IsNone = match x with VSome _ -> false | VNone -> true
|
||||
member x.Value = match x with VSome r -> r | VNone -> failwith "ValueOption.Value: value is None"
|
||||
| ValueSome of 'T
|
||||
| ValueNone
|
||||
member x.IsSome = match x with ValueSome _ -> true | ValueNone -> false
|
||||
member x.IsNone = match x with ValueSome _ -> false | ValueNone -> true
|
||||
member x.Value = match x with ValueSome r -> r | ValueNone -> failwith "ValueOption.Value: value is None"
|
||||
|
||||
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
|
||||
module ValueOption =
|
||||
let inline ofOption x = match x with Some x -> VSome x | None -> VNone
|
||||
let inline bind f x = match x with VSome x -> f x | VNone -> VNone
|
||||
let inline ofOption x = match x with Some x -> ValueSome x | None -> ValueNone
|
||||
let inline bind f x = match x with ValueSome x -> f x | ValueNone -> ValueNone
|
||||
|
||||
module String =
|
||||
let indexNotFound() = raise (new KeyNotFoundException("An index for the character was not found in the string"))
|
||||
|
@ -561,10 +559,23 @@ module String =
|
|||
// http://stackoverflow.com/questions/19365404/stringreader-omits-trailing-linebreak
|
||||
yield String.Empty
|
||||
|]
|
||||
module Dictionary =
|
||||
|
||||
module Dictionary =
|
||||
let inline newWithSize (size: int) = Dictionary<_,_>(size, HashIdentity.Structural)
|
||||
|
||||
|
||||
[<Extension>]
|
||||
type DictionaryExtensions() =
|
||||
[<Extension>]
|
||||
static member inline BagAdd(dic: Dictionary<'key, 'value list>, key: 'key, value: 'value) =
|
||||
match dic.TryGetValue key with
|
||||
| true, values -> dic.[key] <- value :: values
|
||||
| _ -> dic.[key] <- [value]
|
||||
|
||||
[<Extension>]
|
||||
static member inline BagExistsValueForKey(dic: Dictionary<'key, 'value list>, key: 'key, f: 'value -> bool) =
|
||||
match dic.TryGetValue key with
|
||||
| true, values -> values |> List.exists f
|
||||
| _ -> false
|
||||
|
||||
module Lazy =
|
||||
let force (x: Lazy<'T>) = x.Force()
|
||||
|
@ -1145,7 +1156,6 @@ module MultiMap =
|
|||
let find v (m: MultiMap<_,_>) = match Map.tryFind v m with None -> [] | Some r -> r
|
||||
let add v x (m: MultiMap<_,_>) = Map.add v (x :: find v m) m
|
||||
let range (m: MultiMap<_,_>) = Map.foldBack (fun _ x sofar -> x @ sofar) m []
|
||||
//let chooseRange f (m: MultiMap<_,_>) = Map.foldBack (fun _ x sofar -> List.choose f x @ sofar) m []
|
||||
let empty : MultiMap<_,_> = Map.empty
|
||||
let initBy f xs : MultiMap<_,_> = xs |> Seq.groupBy f |> Seq.map (fun (k,v) -> (k,List.ofSeq v)) |> Map.ofSeq
|
||||
|
||||
|
@ -1236,7 +1246,7 @@ module Shim =
|
|||
interface IFileSystem with
|
||||
|
||||
member __.AssemblyLoadFrom(fileName: string) =
|
||||
Assembly.LoadFrom fileName
|
||||
Assembly.UnsafeLoadFrom fileName
|
||||
|
||||
member __.AssemblyLoad(assemblyName: AssemblyName) =
|
||||
Assembly.Load assemblyName
|
||||
|
|
|
@ -3231,14 +3231,18 @@ and seekReadManifestResources (ctxt: ILMetadataReader) (mdv: BinaryView) (pectxt
|
|||
let scoref = seekReadImplAsScopeRef ctxt mdv implIdx
|
||||
|
||||
let location =
|
||||
match scoref with
|
||||
| ILScopeRef.Local ->
|
||||
let start = pectxtEager.anyV2P ("resource", offset + pectxtEager.resourcesAddr)
|
||||
let resourceLength = seekReadInt32 pevEager start
|
||||
let offsetOfBytesFromStartOfPhysicalPEFile = start + 4
|
||||
ILResourceLocation.LocalIn (ctxt.fileName, offsetOfBytesFromStartOfPhysicalPEFile, resourceLength)
|
||||
| ILScopeRef.Module mref -> ILResourceLocation.File (mref, offset)
|
||||
| ILScopeRef.Assembly aref -> ILResourceLocation.Assembly aref
|
||||
match scoref with
|
||||
| ILScopeRef.Local ->
|
||||
let start = pectxtEager.anyV2P ("resource", offset + pectxtEager.resourcesAddr)
|
||||
let resourceLength = seekReadInt32 pevEager start
|
||||
let offsetOfBytesFromStartOfPhysicalPEFile = start + 4
|
||||
if pectxtEager.noFileOnDisk then
|
||||
ILResourceLocation.LocalOut (seekReadBytes pevEager offsetOfBytesFromStartOfPhysicalPEFile resourceLength)
|
||||
else
|
||||
ILResourceLocation.LocalIn (ctxt.fileName, offsetOfBytesFromStartOfPhysicalPEFile, resourceLength)
|
||||
|
||||
| ILScopeRef.Module mref -> ILResourceLocation.File (mref, offset)
|
||||
| ILScopeRef.Assembly aref -> ILResourceLocation.Assembly aref
|
||||
|
||||
let r =
|
||||
{ Name= readStringHeap ctxt nameIdx
|
||||
|
@ -3941,11 +3945,20 @@ type ILReaderOptions =
|
|||
metadataOnly: MetadataOnlyFlag
|
||||
tryGetMetadataSnapshot: ILReaderTryGetMetadataSnapshot }
|
||||
|
||||
|
||||
type ILModuleReader =
|
||||
abstract ILModuleDef : ILModuleDef
|
||||
abstract ILAssemblyRefs : ILAssemblyRef list
|
||||
|
||||
/// ILModuleReader objects only need to be explicitly disposed if memory mapping is used, i.e. reduceMemoryUsage = false
|
||||
inherit System.IDisposable
|
||||
|
||||
|
||||
[<Sealed>]
|
||||
type ILModuleReader(ilModule: ILModuleDef, ilAssemblyRefs: Lazy<ILAssemblyRef list>, dispose: unit -> unit) =
|
||||
member x.ILModuleDef = ilModule
|
||||
member x.ILAssemblyRefs = ilAssemblyRefs.Force()
|
||||
interface IDisposable with
|
||||
type ILModuleReaderImpl(ilModule: ILModuleDef, ilAssemblyRefs: Lazy<ILAssemblyRef list>, dispose: unit -> unit) =
|
||||
interface ILModuleReader with
|
||||
member x.ILModuleDef = ilModule
|
||||
member x.ILAssemblyRefs = ilAssemblyRefs.Force()
|
||||
member x.Dispose() = dispose()
|
||||
|
||||
// ++GLOBAL MUTABLE STATE (concurrency safe via locking)
|
||||
|
@ -3986,7 +3999,7 @@ let tryMemoryMapWholeFile opts fileName =
|
|||
let OpenILModuleReaderFromBytes fileName bytes opts =
|
||||
let pefile = ByteFile(fileName, bytes) :> BinaryFile
|
||||
let ilModule, ilAssemblyRefs, pdb = openPE (fileName, pefile, opts.pdbDirPath, (opts.reduceMemoryUsage = ReduceMemoryFlag.Yes), opts.ilGlobals, true)
|
||||
new ILModuleReader(ilModule, ilAssemblyRefs, (fun () -> ClosePdbReader pdb))
|
||||
new ILModuleReaderImpl(ilModule, ilAssemblyRefs, (fun () -> ClosePdbReader pdb)) :> ILModuleReader
|
||||
|
||||
let OpenILModuleReader fileName opts =
|
||||
// Pseudo-normalize the paths.
|
||||
|
@ -4042,18 +4055,18 @@ let OpenILModuleReader fileName opts =
|
|||
createByteFileChunk opts fullPath (Some (metadataPhysLoc, metadataSize))
|
||||
|
||||
let ilModule, ilAssemblyRefs = openPEMetadataOnly (fullPath, peinfo, pectxtEager, pevEager, mdfile, reduceMemoryUsage, opts.ilGlobals)
|
||||
new ILModuleReader(ilModule, ilAssemblyRefs, ignore)
|
||||
new ILModuleReaderImpl(ilModule, ilAssemblyRefs, ignore)
|
||||
else
|
||||
// If we are not doing metadata-only, then just go ahead and read all the bytes and hold them either strongly or weakly
|
||||
// depending on the heuristic
|
||||
let pefile = createByteFileChunk opts fullPath None
|
||||
let ilModule, ilAssemblyRefs, _pdb = openPE (fullPath, pefile, None, reduceMemoryUsage, opts.ilGlobals, false)
|
||||
new ILModuleReader(ilModule, ilAssemblyRefs, ignore)
|
||||
new ILModuleReaderImpl(ilModule, ilAssemblyRefs, ignore)
|
||||
|
||||
if keyOk then
|
||||
ilModuleReaderCacheLock.AcquireLock (fun ltok -> ilModuleReaderCache.Put(ltok, key, ilModuleReader))
|
||||
|
||||
ilModuleReader
|
||||
ilModuleReader :> ILModuleReader
|
||||
|
||||
else
|
||||
// This case is primarily used in fsc.exe.
|
||||
|
@ -4075,13 +4088,25 @@ let OpenILModuleReader fileName opts =
|
|||
disposer, pefile
|
||||
|
||||
let ilModule, ilAssemblyRefs, pdb = openPE (fullPath, pefile, opts.pdbDirPath, reduceMemoryUsage, opts.ilGlobals, false)
|
||||
let ilModuleReader = new ILModuleReader(ilModule, ilAssemblyRefs, (fun () -> ClosePdbReader pdb))
|
||||
let ilModuleReader = new ILModuleReaderImpl(ilModule, ilAssemblyRefs, (fun () -> ClosePdbReader pdb))
|
||||
|
||||
// Readers with PDB reader disposal logic don't go in the cache. Note the PDB reader is only used in static linking.
|
||||
if keyOk && opts.pdbDirPath.IsNone then
|
||||
ilModuleReaderCacheLock.AcquireLock (fun ltok -> ilModuleReaderCache.Put(ltok, key, ilModuleReader))
|
||||
|
||||
ilModuleReader
|
||||
ilModuleReader :> ILModuleReader
|
||||
|
||||
[<AutoOpen>]
|
||||
module Shim =
|
||||
open Microsoft.FSharp.Compiler.Lib
|
||||
|
||||
type IAssemblyReader =
|
||||
abstract GetILModuleReader: filename: string * readerOptions: ILReaderOptions -> ILModuleReader
|
||||
|
||||
[<Sealed>]
|
||||
type DefaultAssemblyReader() =
|
||||
interface IAssemblyReader with
|
||||
member __.GetILModuleReader(filename, readerOptions) =
|
||||
OpenILModuleReader filename readerOptions
|
||||
|
||||
let mutable AssemblyReader = DefaultAssemblyReader() :> IAssemblyReader
|
||||
|
|
|
@ -38,12 +38,12 @@ type ILReaderMetadataSnapshot = (obj * nativeint * int)
|
|||
type ILReaderTryGetMetadataSnapshot = (* path: *) string * (* snapshotTimeStamp: *) System.DateTime -> ILReaderMetadataSnapshot option
|
||||
|
||||
[<RequireQualifiedAccess>]
|
||||
type internal MetadataOnlyFlag = Yes | No
|
||||
type MetadataOnlyFlag = Yes | No
|
||||
|
||||
[<RequireQualifiedAccess>]
|
||||
type internal ReduceMemoryFlag = Yes | No
|
||||
type ReduceMemoryFlag = Yes | No
|
||||
|
||||
type internal ILReaderOptions =
|
||||
type ILReaderOptions =
|
||||
{ pdbDirPath: string option
|
||||
|
||||
ilGlobals: ILGlobals
|
||||
|
@ -64,16 +64,17 @@ type internal ILReaderOptions =
|
|||
/// and from which we can read the metadata. Only used when metadataOnly=true.
|
||||
tryGetMetadataSnapshot: ILReaderTryGetMetadataSnapshot }
|
||||
|
||||
|
||||
/// Represents a reader of the metadata of a .NET binary. May also give some values (e.g. IL code) from the PE file
|
||||
/// if it was provided.
|
||||
[<Sealed>]
|
||||
type internal ILModuleReader =
|
||||
member ILModuleDef : ILModuleDef
|
||||
member ILAssemblyRefs : ILAssemblyRef list
|
||||
type ILModuleReader =
|
||||
abstract ILModuleDef: ILModuleDef
|
||||
abstract ILAssemblyRefs: ILAssemblyRef list
|
||||
|
||||
/// ILModuleReader objects only need to be explicitly disposed if memory mapping is used, i.e. reduceMemoryUsage = false
|
||||
interface System.IDisposable
|
||||
|
||||
inherit System.IDisposable
|
||||
|
||||
|
||||
/// Open a binary reader, except first copy the entire contents of the binary into
|
||||
/// memory, close the file and ensure any subsequent reads happen from the in-memory store.
|
||||
/// PDB files may not be read with this option.
|
||||
|
@ -89,4 +90,16 @@ type Statistics =
|
|||
mutable weakByteFileCount : int
|
||||
mutable byteFileCount : int }
|
||||
|
||||
val GetStatistics : unit -> Statistics
|
||||
val GetStatistics : unit -> Statistics
|
||||
|
||||
[<AutoOpen>]
|
||||
module Shim =
|
||||
|
||||
type IAssemblyReader =
|
||||
abstract GetILModuleReader: filename: string * readerOptions: ILReaderOptions -> ILModuleReader
|
||||
|
||||
[<Sealed>]
|
||||
type DefaultAssemblyReader =
|
||||
interface IAssemblyReader
|
||||
|
||||
val mutable AssemblyReader: IAssemblyReader
|
||||
|
|
|
@ -587,6 +587,7 @@ type cenv =
|
|||
blobs: MetadataTable<byte[]>
|
||||
strings: MetadataTable<string>
|
||||
userStrings: MetadataTable<string>
|
||||
normalizeAssemblyRefs: ILAssemblyRef -> ILAssemblyRef
|
||||
}
|
||||
member cenv.GetTable (tab:TableName) = cenv.tables.[tab.Index]
|
||||
|
||||
|
@ -714,9 +715,9 @@ let rec GetAssemblyRefAsRow cenv (aref:ILAssemblyRef) =
|
|||
StringIndex (GetStringHeapIdx cenv aref.Name),
|
||||
StringIndex (match aref.Locale with None -> 0 | Some s -> GetStringHeapIdx cenv s),
|
||||
BlobIndex (match aref.Hash with None -> 0 | Some s -> GetBytesAsBlobIdx cenv s))
|
||||
|
||||
|
||||
and GetAssemblyRefAsIdx cenv aref =
|
||||
FindOrAddSharedRow cenv TableNames.AssemblyRef (GetAssemblyRefAsRow cenv aref)
|
||||
FindOrAddSharedRow cenv TableNames.AssemblyRef (GetAssemblyRefAsRow cenv (cenv.normalizeAssemblyRefs aref))
|
||||
|
||||
and GetModuleRefAsRow cenv (mref:ILModuleRef) =
|
||||
SharedRow
|
||||
|
@ -2681,22 +2682,24 @@ and GenEventPass3 cenv env (md: ILEventDef) =
|
|||
|
||||
let rec GetResourceAsManifestResourceRow cenv r =
|
||||
let data, impl =
|
||||
match r.Location with
|
||||
| ILResourceLocation.LocalIn _
|
||||
| ILResourceLocation.LocalOut _ ->
|
||||
let bytes = r.GetBytes()
|
||||
// Embedded managed resources must be word-aligned. However resource format is
|
||||
// not specified in ECMA. Some mscorlib resources appear to be non-aligned - it seems it doesn't matter..
|
||||
let offset = cenv.resources.Position
|
||||
let alignedOffset = (align 0x8 offset)
|
||||
let pad = alignedOffset - offset
|
||||
let resourceSize = bytes.Length
|
||||
cenv.resources.EmitPadding pad
|
||||
cenv.resources.EmitInt32 resourceSize
|
||||
cenv.resources.EmitBytes bytes
|
||||
Data (alignedOffset, true), (i_File, 0)
|
||||
| ILResourceLocation.File (mref, offset) -> ULong offset, (i_File, GetModuleRefAsFileIdx cenv mref)
|
||||
| ILResourceLocation.Assembly aref -> ULong 0x0, (i_AssemblyRef, GetAssemblyRefAsIdx cenv aref)
|
||||
let embedManagedResources (bytes:byte[]) =
|
||||
// Embedded managed resources must be word-aligned. However resource format is
|
||||
// not specified in ECMA. Some mscorlib resources appear to be non-aligned - it seems it doesn't matter..
|
||||
let offset = cenv.resources.Position
|
||||
let alignedOffset = (align 0x8 offset)
|
||||
let pad = alignedOffset - offset
|
||||
let resourceSize = bytes.Length
|
||||
cenv.resources.EmitPadding pad
|
||||
cenv.resources.EmitInt32 resourceSize
|
||||
cenv.resources.EmitBytes bytes
|
||||
Data (alignedOffset, true), (i_File, 0)
|
||||
|
||||
match r.Location with
|
||||
| ILResourceLocation.LocalIn _ -> embedManagedResources (r.GetBytes())
|
||||
| ILResourceLocation.LocalOut bytes -> embedManagedResources bytes
|
||||
| ILResourceLocation.File (mref, offset) -> ULong offset, (i_File, GetModuleRefAsFileIdx cenv mref)
|
||||
| ILResourceLocation.Assembly aref -> ULong 0x0, (i_AssemblyRef, GetAssemblyRefAsIdx cenv aref)
|
||||
|
||||
UnsharedRow
|
||||
[| data
|
||||
ULong (match r.Access with ILResourceAccess.Public -> 0x01 | ILResourceAccess.Private -> 0x02)
|
||||
|
@ -2905,7 +2908,7 @@ let GenModule (cenv : cenv) (modul: ILModuleDef) =
|
|||
GenTypeDefsPass4 [] cenv tds
|
||||
reportTime cenv.showTimes "Module Generation Pass 4"
|
||||
|
||||
let generateIL requiredDataFixups (desiredMetadataVersion, generatePdb, ilg : ILGlobals, emitTailcalls, deterministic, showTimes) (m : ILModuleDef) cilStartAddress =
|
||||
let generateIL requiredDataFixups (desiredMetadataVersion, generatePdb, ilg : ILGlobals, emitTailcalls, deterministic, showTimes) (m : ILModuleDef) cilStartAddress normalizeAssemblyRefs =
|
||||
let isDll = m.IsDLL
|
||||
|
||||
let cenv =
|
||||
|
@ -2953,7 +2956,8 @@ let generateIL requiredDataFixups (desiredMetadataVersion, generatePdb, ilg : IL
|
|||
guids=MetadataTable<_>.New("guids", HashIdentity.Structural)
|
||||
blobs= MetadataTable<_>.New("blobs", HashIdentity.Structural)
|
||||
strings= MetadataTable<_>.New("strings", EqualityComparer.Default)
|
||||
userStrings= MetadataTable<_>.New("user strings", EqualityComparer.Default) }
|
||||
userStrings= MetadataTable<_>.New("user strings", EqualityComparer.Default)
|
||||
normalizeAssemblyRefs = normalizeAssemblyRefs }
|
||||
|
||||
// Now the main compilation step
|
||||
GenModule cenv m
|
||||
|
@ -3050,16 +3054,16 @@ module FileSystemUtilites =
|
|||
#endif
|
||||
()
|
||||
|
||||
let writeILMetadataAndCode (generatePdb, desiredMetadataVersion, ilg, emitTailcalls, deterministic, showTimes) modul cilStartAddress =
|
||||
let writeILMetadataAndCode (generatePdb, desiredMetadataVersion, ilg, emitTailcalls, deterministic, showTimes) modul cilStartAddress normalizeAssemblyRefs =
|
||||
|
||||
// When we know the real RVAs of the data section we fixup the references for the FieldRVA table.
|
||||
// When we know the real RVAs of the data section we fixup the references for the FieldRVA table.
|
||||
// These references are stored as offsets into the metadata we return from this function
|
||||
let requiredDataFixups = ref []
|
||||
|
||||
let next = cilStartAddress
|
||||
|
||||
let strings, userStrings, blobs, guids, tables, entryPointToken, code, requiredStringFixups, data, resources, pdbData, mappings =
|
||||
generateIL requiredDataFixups (desiredMetadataVersion, generatePdb, ilg, emitTailcalls, deterministic, showTimes) modul cilStartAddress
|
||||
generateIL requiredDataFixups (desiredMetadataVersion, generatePdb, ilg, emitTailcalls, deterministic, showTimes) modul cilStartAddress normalizeAssemblyRefs
|
||||
|
||||
reportTime showTimes "Generated Tables and Code"
|
||||
let tableSize (tab: TableName) = tables.[tab.Index].Count
|
||||
|
@ -3503,7 +3507,8 @@ let writeBytes (os: BinaryWriter) (chunk:byte[]) = os.Write(chunk, 0, chunk.Leng
|
|||
|
||||
let writeBinaryAndReportMappings (outfile,
|
||||
ilg: ILGlobals, pdbfile: string option, signer: ILStrongNameSigner option, portablePDB, embeddedPDB,
|
||||
embedAllSource, embedSourceList, sourceLink, emitTailcalls, deterministic, showTimes, dumpDebugInfo ) modul =
|
||||
embedAllSource, embedSourceList, sourceLink, emitTailcalls, deterministic, showTimes, dumpDebugInfo )
|
||||
modul normalizeAssemblyRefs =
|
||||
// Store the public key from the signer into the manifest. This means it will be written
|
||||
// to the binary and also acts as an indicator to leave space for delay sign
|
||||
|
||||
|
@ -3620,7 +3625,7 @@ let writeBinaryAndReportMappings (outfile,
|
|||
| None -> failwith "Expected msorlib to have a version number"
|
||||
|
||||
let entryPointToken, code, codePadding, metadata, data, resources, requiredDataFixups, pdbData, mappings, guidStart =
|
||||
writeILMetadataAndCode ((pdbfile <> None), desiredMetadataVersion, ilg, emitTailcalls, deterministic, showTimes) modul next
|
||||
writeILMetadataAndCode ((pdbfile <> None), desiredMetadataVersion, ilg, emitTailcalls, deterministic, showTimes) modul next normalizeAssemblyRefs
|
||||
|
||||
reportTime showTimes "Generated IL and metadata";
|
||||
let _codeChunk, next = chunk code.Length next
|
||||
|
@ -4266,8 +4271,8 @@ type options =
|
|||
showTimes: bool
|
||||
dumpDebugInfo:bool }
|
||||
|
||||
let WriteILBinary (outfile, (args: options), modul) =
|
||||
let WriteILBinary (outfile, (args: options), modul, normalizeAssemblyRefs) =
|
||||
writeBinaryAndReportMappings (outfile,
|
||||
args.ilg, args.pdbfile, args.signer, args.portablePDB, args.embeddedPDB, args.embedAllSource,
|
||||
args.embedSourceList, args.sourceLink, args.emitTailcalls, args.deterministic, args.showTimes, args.dumpDebugInfo) modul
|
||||
args.embedSourceList, args.sourceLink, args.emitTailcalls, args.deterministic, args.showTimes, args.dumpDebugInfo) modul normalizeAssemblyRefs
|
||||
|> ignore
|
||||
|
|
|
@ -30,4 +30,4 @@ type options =
|
|||
dumpDebugInfo : bool }
|
||||
|
||||
/// Write a binary to the file system. Extra configuration parameters can also be specified.
|
||||
val WriteILBinary: filename: string * options: options * input: ILModuleDef -> unit
|
||||
val WriteILBinary: filename: string * options: options * input: ILModuleDef * (ILAssemblyRef -> ILAssemblyRef) -> unit
|
||||
|
|
|
@ -526,19 +526,22 @@ let writePdbInfo showTimes f fpdb info cvChunk =
|
|||
|
||||
// Partition the sequence points by document
|
||||
let spsets =
|
||||
let res = (Map.empty : Map<int,PdbSequencePoint list ref>)
|
||||
let add res (_,sp) =
|
||||
let k = sp.Document
|
||||
match Map.tryFind k res with
|
||||
| Some xsR -> xsR := sp :: !xsR; res
|
||||
| None -> Map.add k (ref [sp]) res
|
||||
let res = Dictionary<int,PdbSequencePoint list ref>()
|
||||
for (_,sp) in sps do
|
||||
let k = sp.Document
|
||||
let mutable xsR = Unchecked.defaultof<_>
|
||||
if res.TryGetValue(k,&xsR) then
|
||||
xsR := sp :: !xsR
|
||||
else
|
||||
res.[k] <- ref [sp]
|
||||
|
||||
res
|
||||
|
||||
let res = Array.fold add res sps
|
||||
let res = Map.toList res // ordering may not be stable
|
||||
List.map (fun (_,x) -> Array.ofList !x) res
|
||||
|
||||
spsets |> List.iter (fun spset ->
|
||||
if spset.Length > 0 then
|
||||
spsets
|
||||
|> Seq.iter (fun kv ->
|
||||
let spset = !kv.Value
|
||||
if not spset.IsEmpty then
|
||||
let spset = Array.ofList spset
|
||||
Array.sortInPlaceWith SequencePoint.orderByOffset spset
|
||||
let sps =
|
||||
spset |> Array.map (fun sp ->
|
||||
|
@ -594,7 +597,7 @@ open Microsoft.FSharp.Reflection
|
|||
// Supports the following cases:
|
||||
// obj?Foo() // call with no arguments
|
||||
// obj?Foo(1, "a") // call with two arguments (extracted from tuple)
|
||||
// NOTE: This doesn<EFBFBD>t actually handle all overloads. It just picks first entry with right
|
||||
// NOTE: This doesn't actually handle all overloads. It just picks first entry with right
|
||||
// number of arguments.
|
||||
let (?) this memb (args:'Args) : 'R =
|
||||
// Get array of 'obj' arguments for the reflection call
|
||||
|
@ -628,7 +631,7 @@ let createWriter (f:string) =
|
|||
// MDB Writer. Generate debug symbols using the MDB format
|
||||
//---------------------------------------------------------------------
|
||||
let writeMdbInfo fmdb f info =
|
||||
// Note, if we can<EFBFBD>t delete it code will fail later
|
||||
// Note, if we can't delete it code will fail later
|
||||
try FileSystem.FileDelete fmdb with _ -> ()
|
||||
|
||||
// Try loading the MDB symbol writer from an assembly available on Mono dynamically
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
|
||||
<PropertyGroup>
|
||||
<FSCoreVersion>4.4.3.0</FSCoreVersion>
|
||||
<FSCoreVersion>4.5.0.0</FSCoreVersion>
|
||||
<OutputPath>$(MSBuildThisFileDirectory)../../BuildFromSource/$(Configuration)/bin</OutputPath>
|
||||
<FSharpSourcesRoot>$(MSBuildThisFileDirectory)..</FSharpSourcesRoot>
|
||||
|
||||
|
@ -37,21 +37,6 @@
|
|||
<Import Project="..\FSharpSource.Profiles.targets" />
|
||||
<Import Project="$(BuildVersionFilePath)" Condition="Exists('$(BuildVersionFilePath)')" />
|
||||
|
||||
<Target Name="CopyAndSubstituteTextFiles"
|
||||
BeforeTargets="Compile"
|
||||
Inputs="@(CopyAndSubstituteText)"
|
||||
Outputs="@(CopyAndSubstituteText->'$(OutDir)%(TargetFilename)')"
|
||||
Condition="'$(DesignTimeBuild)' != 'true'">
|
||||
|
||||
<ItemGroup>
|
||||
<FileTextMap Include="%(CopyAndSubstituteText.TargetFilename)">
|
||||
<FileText>$([System.Text.RegularExpressions.Regex]::Replace($([System.IO.File]::ReadAllText("%(CopyAndSubstituteText.FullPath)")), "%(CopyAndSubstituteText.Pattern1)", "%(CopyAndSubstituteText.Replacement1)"))</FileText>
|
||||
<FileText Condition = "'$(CurrentPattern2)' != ''">$([System.Text.RegularExpressions.Regex]::Replace($(FileText), "%(CopyAndSubstituteText.Pattern2)", "%(CopyAndSubstituteText.Replacement2)"))</FileText>
|
||||
</FileTextMap>
|
||||
</ItemGroup>
|
||||
<WriteLinesToFile File="$(OutDir)%(FileTextMap.Identity)" Lines="%(FileTextMap.FileText)" Overwrite="true" />
|
||||
</Target>
|
||||
|
||||
<ItemGroup>
|
||||
<AvailableItemName Include="FsLex">
|
||||
<Visible>false</Visible>
|
||||
|
|
|
@ -8,7 +8,7 @@ open System.Reflection
|
|||
[<assembly:AssemblyTitle("FSharp.Build.dll")>]
|
||||
[<assembly:AssemblyCopyright("\169 Microsoft Corporation. All Rights Reserved.")>]
|
||||
[<assembly:AssemblyProduct("Microsoft\174 F#")>]
|
||||
[<assembly:AssemblyInformationalVersion("10.1.1.0")>]
|
||||
[<assembly:AssemblyVersion("10.1.1.0")>]
|
||||
[<assembly:AssemblyFileVersion("2017.06.27.0")>]
|
||||
[<assembly:AssemblyInformationalVersion("10.2.0.0")>]
|
||||
[<assembly:AssemblyVersion("10.2.0.0")>]
|
||||
[<assembly:AssemblyFileVersion("2018.05.22.0")>]
|
||||
do()
|
||||
|
|
|
@ -26,31 +26,11 @@
|
|||
<Compile Include="$(FSharpSourcesRoot)\fsharp\FSharp.Build\FSharpEmbedResXSource.fs" />
|
||||
<Compile Include="$(FSharpSourcesRoot)\fsharp\FSharp.Build\WriteCodeFragment.fs" />
|
||||
<Compile Include="$(FSharpSourcesRoot)\fsharp\FSharp.Build\CreateFSharpManifestResourceName.fs" />
|
||||
<CopyAndSubstituteText Include="$(FSharpSourcesRoot)\fsharp\FSharp.Build\Microsoft.FSharp.Targets">
|
||||
<TargetFilename>Microsoft.FSharp.Targets</TargetFilename>
|
||||
<Pattern1>{BuildSuffix}</Pattern1>
|
||||
<Replacement1></Replacement1>
|
||||
</CopyAndSubstituteText>
|
||||
<CopyAndSubstituteText Include="$(FSharpSourcesRoot)\fsharp\FSharp.Build\Microsoft.Portable.FSharp.Targets">
|
||||
<TargetFilename>Microsoft.Portable.FSharp.Targets</TargetFilename>
|
||||
<Pattern1>{BuildSuffix}</Pattern1>
|
||||
<Replacement1></Replacement1>
|
||||
</CopyAndSubstituteText>
|
||||
<CopyAndSubstituteText Include="$(FSharpSourcesRoot)\fsharp\FSharp.Build\Microsoft.FSharp.NetSdk.props">
|
||||
<TargetFilename>Microsoft.FSharp.NetSdk.props</TargetFilename>
|
||||
<Pattern1>{BuildSuffix}</Pattern1>
|
||||
<Replacement1></Replacement1>
|
||||
</CopyAndSubstituteText>
|
||||
<CopyAndSubstituteText Include="$(FSharpSourcesRoot)\fsharp\FSharp.Build\Microsoft.FSharp.NetSdk.targets">
|
||||
<TargetFilename>Microsoft.FSharp.NetSdk.targets</TargetFilename>
|
||||
<Pattern1>{BuildSuffix}</Pattern1>
|
||||
<Replacement1></Replacement1>
|
||||
</CopyAndSubstituteText>
|
||||
<CopyAndSubstituteText Include="$(FSharpSourcesRoot)\fsharp\FSharp.Build\Microsoft.FSharp.Overrides.NetSdk.targets">
|
||||
<TargetFilename>Microsoft.FSharp.Overrides.NetSdk.targets</TargetFilename>
|
||||
<Pattern1>{BuildSuffix}</Pattern1>
|
||||
<Replacement1></Replacement1>
|
||||
</CopyAndSubstituteText>
|
||||
<None Include="$(FSharpSourcesRoot)\fsharp\FSharp.Build\Microsoft.FSharp.Targets" CopyToOutputDirectory="PreserveNewest" />
|
||||
<None Include="$(FSharpSourcesRoot)\fsharp\FSharp.Build\Microsoft.Portable.FSharp.Targets" CopyToOutputDirectory="PreserveNewest" />
|
||||
<None Include="$(FSharpSourcesRoot)\fsharp\FSharp.Build\Microsoft.FSharp.NetSdk.props" CopyToOutputDirectory="PreserveNewest" />
|
||||
<None Include="$(FSharpSourcesRoot)\fsharp\FSharp.Build\Microsoft.FSharp.NetSdk.targets" CopyToOutputDirectory="PreserveNewest" />
|
||||
<None Include="$(FSharpSourcesRoot)\fsharp\FSharp.Build\Microsoft.FSharp.Overrides.NetSdk.targets" CopyToOutputDirectory="PreserveNewest" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -10,7 +10,7 @@ open System.Runtime.InteropServices
|
|||
[<assembly:AssemblyCopyright("\169 Microsoft Corporation. All Rights Reserved.")>]
|
||||
[<assembly:AssemblyProduct("Microsoft\174 F#")>]
|
||||
[<assembly:ComVisible(false)>]
|
||||
[<assembly:AssemblyInformationalVersion("10.1.1.0")>]
|
||||
[<assembly:AssemblyVersion("10.1.1.0")>]
|
||||
[<assembly:AssemblyFileVersion("2017.06.27.0")>]
|
||||
[<assembly:AssemblyInformationalVersion("10.2.0.0")>]
|
||||
[<assembly:AssemblyVersion("10.2.0.0")>]
|
||||
[<assembly:AssemblyFileVersion("2018.05.22.0")>]
|
||||
do()
|
||||
|
|
|
@ -10,7 +10,7 @@ open System.Runtime.InteropServices
|
|||
[<assembly:AssemblyCopyright("\169 Microsoft Corporation. All Rights Reserved.")>]
|
||||
[<assembly:AssemblyProduct("Microsoft\174 F#")>]
|
||||
[<assembly:ComVisible(false)>]
|
||||
[<assembly:AssemblyInformationalVersion("10.1.1.0")>]
|
||||
[<assembly:AssemblyVersion("10.1.1.0")>]
|
||||
[<assembly:AssemblyFileVersion("2017.06.27.0")>]
|
||||
[<assembly:AssemblyInformationalVersion("10.2.0.0")>]
|
||||
[<assembly:AssemblyVersion("10.2.0.0")>]
|
||||
[<assembly:AssemblyFileVersion("2018.05.22.0")>]
|
||||
do()
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -363,7 +363,7 @@
|
|||
<data name="tastUnexpectedByRef" xml:space="preserve">
|
||||
<value>Unexpected use of a byref-typed variable</value>
|
||||
</data>
|
||||
<data name="tastValueMustBeLocalAndMutable" xml:space="preserve">
|
||||
<data name="tastValueMustBeMutable" xml:space="preserve">
|
||||
<value>A value must be mutable in order to mutate the contents or take the address of a value type, e.g. 'let mutable x = ...'</value>
|
||||
</data>
|
||||
<data name="tastInvalidMutationOfConstant" xml:space="preserve">
|
||||
|
@ -4164,6 +4164,9 @@
|
|||
<data name="keywordDescriptionMatch" xml:space="preserve">
|
||||
<value>Used to branch by comparing a value to a pattern.</value>
|
||||
</data>
|
||||
<data name="keywordDescriptionMatchBang" xml:space="preserve">
|
||||
<value>Used in computation expressions to pattern match directly over the result of another computation expression.</value>
|
||||
</data>
|
||||
<data name="keywordDescriptionMember" xml:space="preserve">
|
||||
<value>Used to declare a property or method in an object type.</value>
|
||||
</data>
|
||||
|
|
|
@ -24,6 +24,12 @@
|
|||
</EmbeddedResource>
|
||||
<Compile Include="FSComp.fs" />
|
||||
<Compile Include="FSIstrings.fs" />
|
||||
<Compile Include="..\..\fsharp\Logger.fsi">
|
||||
<Link>Logger.fsi</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\fsharp\Logger.fs">
|
||||
<Link>Logger.fs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\utils\reshapedreflection.fs">
|
||||
<Link>Reflection\reshapedreflection.fs</Link>
|
||||
</Compile>
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
<PackageAuthors Condition="'$(PackageAuthors)' == ''" >Microsoft and F# Software Foundation</PackageAuthors>
|
||||
<PackageTags Condition="'$(PackageTags)' == ''" >Visual F# Compiler FSharp functional programming</PackageTags>
|
||||
<PreReleaseSuffix Condition="'$(PreRelease)' != 'false'">-rc-$(BuildRevision.Trim())-0</PreReleaseSuffix>
|
||||
<PackageVersion>10.1.1$(PreReleaseSuffix)</PackageVersion>
|
||||
<PackageVersion>10.2.0$(PreReleaseSuffix)</PackageVersion>
|
||||
<PackageProperties>-prop "licenseUrl=$(PackageLicenceUrl)" -prop "version=$(PackageVersion)" -prop "authors=$(PackageAuthors)" -prop "projectUrl=$(PackageProjectUrl)" -prop "tags=$(PackageTags)"</PackageProperties>
|
||||
</PropertyGroup>
|
||||
|
||||
|
|
|
@ -16,8 +16,8 @@ open System.Runtime.InteropServices
|
|||
[<assembly:AssemblyFlags(System.Reflection.AssemblyNameFlags.Retargetable)>]
|
||||
#endif
|
||||
|
||||
[<assembly:AssemblyInformationalVersion("4.4.3.0")>]
|
||||
[<assembly:AssemblyVersion("4.4.3.0")>]
|
||||
[<assembly:AssemblyFileVersion("2017.06.27.0")>]
|
||||
[<assembly:AssemblyInformationalVersion("4.5.0.0")>]
|
||||
[<assembly:AssemblyVersion("4.5.0.0")>]
|
||||
[<assembly:AssemblyFileVersion("2018.05.23.0")>]
|
||||
do()
|
||||
|
||||
|
|
|
@ -19,12 +19,12 @@
|
|||
<EmbeddedResource Include="$(FsCoreDir)\FSCore.resx">
|
||||
<Link>FSCore.resx</Link>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="$(FsCoreDir)\prim-types-prelude.fsi">
|
||||
<CompileBefore Include="$(FsCoreDir)\prim-types-prelude.fsi">
|
||||
<Link>Primitives/prim-types-prelude.fsi</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FsCoreDir)\prim-types-prelude.fs">
|
||||
</CompileBefore>
|
||||
<CompileBefore Include="$(FsCoreDir)\prim-types-prelude.fs">
|
||||
<Link>Primitives/prim-types-prelude.fs</Link>
|
||||
</Compile>
|
||||
</CompileBefore>
|
||||
<Compile Include="$(FsCoreDir)\SR.fs">
|
||||
<Link>Primitives/SR.fs</Link>
|
||||
</Compile>
|
||||
|
@ -121,12 +121,6 @@
|
|||
<Compile Include="$(FsCoreDir)\reflect.fs">
|
||||
<Link>Reflection/reflect.fs</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FsCoreDir)\event.fsi">
|
||||
<Link>Event/event.fsi</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FsCoreDir)\event.fs">
|
||||
<Link>Event/event.fs</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FsCoreDir)\math\n.fsi">
|
||||
<Link>Numerics/n.fsi</Link>
|
||||
</Compile>
|
||||
|
@ -163,11 +157,35 @@
|
|||
<Compile Include="$(FsCoreDir)\nativeptr.fs">
|
||||
<Link>NativeInterop/nativeptr.fs</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FsCoreDir)\control.fsi">
|
||||
<Link>Async/control.fsi</Link>
|
||||
<Compile Include="$(FsCoreDir)\event.fsi">
|
||||
<Link>Control/event.fsi</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FsCoreDir)\control.fs">
|
||||
<Link>Async/control.fs</Link>
|
||||
<Compile Include="$(FsCoreDir)\event.fs">
|
||||
<Link>Control/event.fs</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FsCoreDir)\async.fsi">
|
||||
<Link>Control/async.fsi</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FsCoreDir)\async.fs">
|
||||
<Link>Control/async.fs</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FsCoreDir)\eventmodule.fsi">
|
||||
<Link>Control/eventmodule.fsi</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FsCoreDir)\eventmodule.fs">
|
||||
<Link>Control/eventmodule.fs</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FsCoreDir)\observable.fsi">
|
||||
<Link>Control/observable.fsi</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FsCoreDir)\observable.fs">
|
||||
<Link>Control/observable.fs</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FsCoreDir)\mailbox.fsi">
|
||||
<Link>MailboxProcessor/mailbox.fsi</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FsCoreDir)\mailbox.fs">
|
||||
<Link>MailboxProcessor/mailbox.fs</Link>
|
||||
</Compile>
|
||||
<Compile Include="$(FsCoreDir)\Linq.fsi">
|
||||
<Link>Queries/Linq.fsi</Link>
|
||||
|
|
|
@ -10,7 +10,7 @@ open System.Runtime.InteropServices
|
|||
[<assembly:AssemblyCopyright("\169 Microsoft Corporation. All Rights Reserved.")>]
|
||||
[<assembly:AssemblyProduct("Microsoft\174 F#")>]
|
||||
[<assembly:ComVisible(false)>]
|
||||
[<assembly:AssemblyInformationalVersion("10.1.1.0")>]
|
||||
[<assembly:AssemblyVersion("10.1.1.0")>]
|
||||
[<assembly:AssemblyFileVersion("2017.06.27.0")>]
|
||||
[<assembly:AssemblyInformationalVersion("10.2.0.0")>]
|
||||
[<assembly:AssemblyVersion("10.2.0.0")>]
|
||||
[<assembly:AssemblyFileVersion("2018.05.22.0")>]
|
||||
do()
|
||||
|
|
|
@ -7,7 +7,7 @@ open System.Reflection
|
|||
[<assembly:AssemblyTitle("fsi.exe")>]
|
||||
[<assembly:AssemblyCopyright("\169 Microsoft Corporation. All Rights Reserved.")>]
|
||||
[<assembly:AssemblyProduct("Microsoft\174 F#")>]
|
||||
[<assembly:AssemblyInformationalVersion("10.1.1.0")>]
|
||||
[<assembly:AssemblyVersion("10.1.1.0")>]
|
||||
[<assembly:AssemblyFileVersion("2017.06.27.0")>]
|
||||
[<assembly:AssemblyInformationalVersion("10.2.0.0")>]
|
||||
[<assembly:AssemblyVersion("10.2.0.0")>]
|
||||
[<assembly:AssemblyFileVersion("2018.05.22.0")>]
|
||||
do()
|
||||
|
|
|
@ -47,7 +47,7 @@ type AccessorDomain =
|
|||
| AccessibleFromSomewhere -> 4
|
||||
static member CustomEquals(g:TcGlobals, ad1:AccessorDomain, ad2:AccessorDomain) =
|
||||
match ad1, ad2 with
|
||||
| AccessibleFrom(cs1,tc1), AccessibleFrom(cs2,tc2) -> (cs1 = cs2) && (match tc1,tc2 with None,None -> true | Some tc1, Some tc2 -> tyconRefEq g tc1 tc2 | _ -> false)
|
||||
| AccessibleFrom(cs1, tc1), AccessibleFrom(cs2, tc2) -> (cs1 = cs2) && (match tc1, tc2 with None, None -> true | Some tc1, Some tc2 -> tyconRefEq g tc1 tc2 | _ -> false)
|
||||
| AccessibleFromEverywhere, AccessibleFromEverywhere -> true
|
||||
| AccessibleFromSomeFSharpCode, AccessibleFromSomeFSharpCode -> true
|
||||
| AccessibleFromSomewhere, AccessibleFromSomewhere -> true
|
||||
|
@ -59,7 +59,7 @@ let IsAccessible ad taccess =
|
|||
| AccessibleFromEverywhere -> canAccessFromEverywhere taccess
|
||||
| AccessibleFromSomeFSharpCode -> canAccessFromSomewhere taccess
|
||||
| AccessibleFromSomewhere -> true
|
||||
| AccessibleFrom (cpaths,_tcrefViewedFromOption) ->
|
||||
| AccessibleFrom (cpaths, _tcrefViewedFromOption) ->
|
||||
List.exists (canAccessFrom taccess) cpaths
|
||||
|
||||
/// Indicates if an IL member is accessible (ignoring its enclosing type)
|
||||
|
@ -73,7 +73,7 @@ let private IsILMemberAccessible g amap m (tcrefOfViewedItem : TyconRef) ad acce
|
|||
access = ILMemberAccess.Family ||
|
||||
access = ILMemberAccess.FamilyOrAssembly)
|
||||
|
||||
| AccessibleFrom (cpaths,tcrefViewedFromOption) ->
|
||||
| AccessibleFrom (cpaths, tcrefViewedFromOption) ->
|
||||
|
||||
let accessibleByFamily =
|
||||
((access = ILMemberAccess.Family ||
|
||||
|
@ -115,14 +115,14 @@ let private IsILTypeDefAccessible (amap : Import.ImportMap) m ad encTyconRefOpt
|
|||
| AccessibleFromSomeFSharpCode
|
||||
| AccessibleFrom _ -> tdef.Access = ILTypeDefAccess.Public
|
||||
|
||||
/// Indicates if a TyconRef is visible through the AccessibleFrom(cpaths,_).
|
||||
/// Indicates if a TyconRef is visible through the AccessibleFrom(cpaths, _).
|
||||
/// Note that InternalsVisibleTo extends those cpaths.
|
||||
let private IsTyconAccessibleViaVisibleTo ad (tcrefOfViewedItem:TyconRef) =
|
||||
match ad with
|
||||
| AccessibleFromEverywhere
|
||||
| AccessibleFromSomewhere
|
||||
| AccessibleFromSomeFSharpCode -> false
|
||||
| AccessibleFrom (cpaths,_tcrefViewedFromOption) ->
|
||||
| AccessibleFrom (cpaths, _tcrefViewedFromOption) ->
|
||||
canAccessFromOneOf cpaths tcrefOfViewedItem.CompilationPath
|
||||
|
||||
/// Indicates if given IL based TyconRef is accessible. If TyconRef is nested then we'll
|
||||
|
@ -176,7 +176,7 @@ let IsEntityAccessible amap m ad (tcref:TyconRef) =
|
|||
let CheckTyconAccessible amap m ad tcref =
|
||||
let res = IsEntityAccessible amap m ad tcref
|
||||
if not res then
|
||||
errorR(Error(FSComp.SR.typeIsNotAccessible tcref.DisplayName,m))
|
||||
errorR(Error(FSComp.SR.typeIsNotAccessible tcref.DisplayName, m))
|
||||
res
|
||||
|
||||
/// Indicates if a type definition and its representation contents are accessible
|
||||
|
@ -189,13 +189,13 @@ let CheckTyconReprAccessible amap m ad tcref =
|
|||
CheckTyconAccessible amap m ad tcref &&
|
||||
(let res = IsAccessible ad tcref.TypeReprAccessibility
|
||||
if not res then
|
||||
errorR (Error (FSComp.SR.unionCasesAreNotAccessible tcref.DisplayName,m))
|
||||
errorR (Error (FSComp.SR.unionCasesAreNotAccessible tcref.DisplayName, m))
|
||||
res)
|
||||
|
||||
/// Indicates if a type is accessible (both definition and instantiation)
|
||||
let rec IsTypeAccessible g amap m ad ty =
|
||||
not (isAppTy g ty) ||
|
||||
let tcref,tinst = destAppTy g ty
|
||||
let tcref, tinst = destAppTy g ty
|
||||
IsEntityAccessible amap m ad tcref && IsTypeInstAccessible g amap m ad tinst
|
||||
|
||||
and IsTypeInstAccessible g amap m ad tinst =
|
||||
|
@ -210,7 +210,7 @@ let IsProvidedMemberAccessible (amap:Import.ImportMap) m ad ty access =
|
|||
if not isTyAccessible then false
|
||||
else
|
||||
not (isAppTy g ty) ||
|
||||
let tcrefOfViewedItem,_ = destAppTy g ty
|
||||
let tcrefOfViewedItem, _ = destAppTy g ty
|
||||
IsILMemberAccessible g amap m tcrefOfViewedItem ad access
|
||||
|
||||
/// Compute the accessibility of a provided member
|
||||
|
@ -224,14 +224,14 @@ let ComputeILAccess isPublic isFamily isFamilyOrAssembly isFamilyAndAssembly =
|
|||
/// IndiCompute the accessibility of a provided member
|
||||
let IsILFieldInfoAccessible g amap m ad x =
|
||||
match x with
|
||||
| ILFieldInfo (tinfo,fd) -> IsILTypeAndMemberAccessible g amap m ad ad tinfo fd.Access
|
||||
| ILFieldInfo (tinfo, fd) -> IsILTypeAndMemberAccessible g amap m ad ad tinfo fd.Access
|
||||
#if !NO_EXTENSIONTYPING
|
||||
| ProvidedField (amap, tpfi, m) ->
|
||||
let access = tpfi.PUntaint((fun fi -> ComputeILAccess fi.IsPublic fi.IsFamily fi.IsFamilyOrAssembly fi.IsFamilyAndAssembly), m)
|
||||
IsProvidedMemberAccessible amap m ad x.ApparentEnclosingType access
|
||||
#endif
|
||||
|
||||
let GetILAccessOfILEventInfo (ILEventInfo (tinfo,edef)) =
|
||||
let GetILAccessOfILEventInfo (ILEventInfo (tinfo, edef)) =
|
||||
(resolveILMethodRef tinfo.RawMetadata edef.AddMethod).Access
|
||||
|
||||
let IsILEventInfoAccessible g amap m ad einfo =
|
||||
|
@ -240,10 +240,10 @@ let IsILEventInfoAccessible g amap m ad einfo =
|
|||
|
||||
let private IsILMethInfoAccessible g amap m adType ad ilminfo =
|
||||
match ilminfo with
|
||||
| ILMethInfo (_,typ,None,mdef,_) -> IsILTypeAndMemberAccessible g amap m adType ad (ILTypeInfo.FromType g typ) mdef.Access
|
||||
| ILMethInfo (_,_,Some declaringTyconRef,mdef,_) -> IsILMemberAccessible g amap m declaringTyconRef ad mdef.Access
|
||||
| ILMethInfo (_, typ, None, mdef, _) -> IsILTypeAndMemberAccessible g amap m adType ad (ILTypeInfo.FromType g typ) mdef.Access
|
||||
| ILMethInfo (_, _, Some declaringTyconRef, mdef, _) -> IsILMemberAccessible g amap m declaringTyconRef ad mdef.Access
|
||||
|
||||
let GetILAccessOfILPropInfo (ILPropInfo(tinfo,pdef)) =
|
||||
let GetILAccessOfILPropInfo (ILPropInfo(tinfo, pdef)) =
|
||||
let tdef = tinfo.RawMetadata
|
||||
let ilAccess =
|
||||
match pdef.GetMethod with
|
||||
|
@ -263,7 +263,7 @@ let IsValAccessible ad (vref:ValRef) =
|
|||
|
||||
let CheckValAccessible m ad (vref:ValRef) =
|
||||
if not (IsValAccessible ad vref) then
|
||||
errorR (Error (FSComp.SR.valueIsNotAccessible vref.DisplayName,m))
|
||||
errorR (Error (FSComp.SR.valueIsNotAccessible vref.DisplayName, m))
|
||||
|
||||
let IsUnionCaseAccessible amap m ad (ucref:UnionCaseRef) =
|
||||
IsTyconReprAccessible amap m ad ucref.TyconRef &&
|
||||
|
@ -273,7 +273,7 @@ let CheckUnionCaseAccessible amap m ad (ucref:UnionCaseRef) =
|
|||
CheckTyconReprAccessible amap m ad ucref.TyconRef &&
|
||||
(let res = IsAccessible ad ucref.UnionCase.Accessibility
|
||||
if not res then
|
||||
errorR (Error (FSComp.SR.unionCaseIsNotAccessible ucref.CaseName,m))
|
||||
errorR (Error (FSComp.SR.unionCaseIsNotAccessible ucref.CaseName, m))
|
||||
res)
|
||||
|
||||
let IsRecdFieldAccessible amap m ad (rfref:RecdFieldRef) =
|
||||
|
@ -284,7 +284,7 @@ let CheckRecdFieldAccessible amap m ad (rfref:RecdFieldRef) =
|
|||
CheckTyconReprAccessible amap m ad rfref.TyconRef &&
|
||||
(let res = IsAccessible ad rfref.RecdField.Accessibility
|
||||
if not res then
|
||||
errorR (Error (FSComp.SR.fieldIsNotAccessible rfref.FieldName,m))
|
||||
errorR (Error (FSComp.SR.fieldIsNotAccessible rfref.FieldName, m))
|
||||
res)
|
||||
|
||||
let CheckRecdFieldInfoAccessible amap m ad (rfinfo:RecdFieldInfo) =
|
||||
|
@ -292,7 +292,7 @@ let CheckRecdFieldInfoAccessible amap m ad (rfinfo:RecdFieldInfo) =
|
|||
|
||||
let CheckILFieldInfoAccessible g amap m ad finfo =
|
||||
if not (IsILFieldInfoAccessible g amap m ad finfo) then
|
||||
errorR (Error (FSComp.SR.structOrClassFieldIsNotAccessible finfo.FieldName,m))
|
||||
errorR (Error (FSComp.SR.structOrClassFieldIsNotAccessible finfo.FieldName, m))
|
||||
|
||||
/// Uses a separate accessibility domains for containing type and method itself
|
||||
/// This makes sense cases like
|
||||
|
@ -308,11 +308,11 @@ let CheckILFieldInfoAccessible g amap m ad finfo =
|
|||
/// and 'ad' to determine accessibility of SomeMethod.
|
||||
/// I.e when calling x.Public() and x.Protected() -in both cases first check should succeed and second - should fail in the latter one.
|
||||
let IsTypeAndMethInfoAccessible amap m adTyp ad = function
|
||||
| ILMeth (g,x,_) -> IsILMethInfoAccessible g amap m adTyp ad x
|
||||
| FSMeth (_,_,vref,_) -> IsValAccessible ad vref
|
||||
| DefaultStructCtor(g,typ) -> IsTypeAccessible g amap m ad typ
|
||||
| ILMeth (g, x, _) -> IsILMethInfoAccessible g amap m adTyp ad x
|
||||
| FSMeth (_, _, vref, _) -> IsValAccessible ad vref
|
||||
| DefaultStructCtor(g, typ) -> IsTypeAccessible g amap m ad typ
|
||||
#if !NO_EXTENSIONTYPING
|
||||
| ProvidedMeth(amap,tpmb,_,m) as etmi ->
|
||||
| ProvidedMeth(amap, tpmb, _, m) as etmi ->
|
||||
let access = tpmb.PUntaint((fun mi -> ComputeILAccess mi.IsPublic mi.IsFamily mi.IsFamilyOrAssembly mi.IsFamilyAndAssembly), m)
|
||||
IsProvidedMemberAccessible amap m ad etmi.ApparentEnclosingType access
|
||||
#endif
|
||||
|
@ -320,8 +320,8 @@ let IsMethInfoAccessible amap m ad minfo = IsTypeAndMethInfoAccessible amap m ad
|
|||
|
||||
let IsPropInfoAccessible g amap m ad = function
|
||||
| ILProp ilpinfo -> IsILPropInfoAccessible g amap m ad ilpinfo
|
||||
| FSProp (_,_,Some vref,_)
|
||||
| FSProp (_,_,_,Some vref) -> IsValAccessible ad vref
|
||||
| FSProp (_, _, Some vref, _)
|
||||
| FSProp (_, _, _, Some vref) -> IsValAccessible ad vref
|
||||
#if !NO_EXTENSIONTYPING
|
||||
| ProvidedProp (amap, tppi, m) as pp->
|
||||
let access =
|
||||
|
@ -341,5 +341,3 @@ let IsPropInfoAccessible g amap m ad = function
|
|||
let IsFieldInfoAccessible ad (rfref:RecdFieldInfo) =
|
||||
IsAccessible ad rfref.RecdField.Accessibility
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
/// on items from name resolution
|
||||
module internal Microsoft.FSharp.Compiler.AttributeChecking
|
||||
|
||||
open System.Collections.Generic
|
||||
open Microsoft.FSharp.Compiler.AbstractIL.IL
|
||||
open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library
|
||||
|
||||
|
@ -51,7 +52,7 @@ let rec private evalILAttribElem e =
|
|||
|
||||
let rec private evalFSharpAttribArg g e =
|
||||
match e with
|
||||
| Expr.Const(c,_,_) ->
|
||||
| Expr.Const(c, _, _) ->
|
||||
match c with
|
||||
| Const.Bool b -> box b
|
||||
| Const.SByte i -> box i
|
||||
|
@ -68,7 +69,7 @@ let rec private evalFSharpAttribArg g e =
|
|||
| Const.Zero -> null
|
||||
| Const.String s -> box s
|
||||
| _ -> fail()
|
||||
| Expr.Op (TOp.Array,_,a,_) -> box [| for i in a -> evalFSharpAttribArg g i |]
|
||||
| Expr.Op (TOp.Array, _, a, _) -> box [| for i in a -> evalFSharpAttribArg g i |]
|
||||
| TypeOfExpr g ty -> box ty
|
||||
// TODO: | TypeDefOfExpr g ty
|
||||
| _ -> fail()
|
||||
|
@ -79,31 +80,31 @@ type AttribInfo =
|
|||
|
||||
member x.TyconRef =
|
||||
match x with
|
||||
| FSAttribInfo(_g,Attrib(tcref,_,_,_,_,_,_)) -> tcref
|
||||
| FSAttribInfo(_g, Attrib(tcref, _, _, _, _, _, _)) -> tcref
|
||||
| ILAttribInfo (g, amap, scoref, a, m) ->
|
||||
let ty = ImportILType scoref amap m [] a.Method.DeclaringType
|
||||
tcrefOfAppTy g ty
|
||||
|
||||
member x.ConstructorArguments =
|
||||
match x with
|
||||
| FSAttribInfo(g,Attrib(_,_,unnamedArgs,_,_,_,_)) ->
|
||||
| FSAttribInfo(g, Attrib(_, _, unnamedArgs, _, _, _, _)) ->
|
||||
unnamedArgs
|
||||
|> List.map (fun (AttribExpr(origExpr,evaluatedExpr)) ->
|
||||
|> List.map (fun (AttribExpr(origExpr, evaluatedExpr)) ->
|
||||
let ty = tyOfExpr g origExpr
|
||||
let obj = evalFSharpAttribArg g evaluatedExpr
|
||||
ty,obj)
|
||||
ty, obj)
|
||||
| ILAttribInfo (g, amap, scoref, cattr, m) ->
|
||||
let parms, _args = decodeILAttribData g.ilg cattr
|
||||
[ for (argty,argval) in Seq.zip cattr.Method.FormalArgTypes parms ->
|
||||
[ for (argty, argval) in Seq.zip cattr.Method.FormalArgTypes parms ->
|
||||
let ty = ImportILType scoref amap m [] argty
|
||||
let obj = evalILAttribElem argval
|
||||
ty,obj ]
|
||||
ty, obj ]
|
||||
|
||||
member x.NamedArguments =
|
||||
match x with
|
||||
| FSAttribInfo(g,Attrib(_,_,_,namedArgs,_,_,_)) ->
|
||||
| FSAttribInfo(g, Attrib(_, _, _, namedArgs, _, _, _)) ->
|
||||
namedArgs
|
||||
|> List.map (fun (AttribNamedArg(nm,_,isField,AttribExpr(origExpr,evaluatedExpr))) ->
|
||||
|> List.map (fun (AttribNamedArg(nm, _, isField, AttribExpr(origExpr, evaluatedExpr))) ->
|
||||
let ty = tyOfExpr g origExpr
|
||||
let obj = evalFSharpAttribArg g evaluatedExpr
|
||||
ty, nm, isField, obj)
|
||||
|
@ -129,12 +130,12 @@ let GetAttribInfosOfEntity g amap m (tcref:TyconRef) =
|
|||
#if !NO_EXTENSIONTYPING
|
||||
// TODO: provided attributes
|
||||
| ProvidedTypeMetadata _info -> []
|
||||
//let provAttribs = info.ProvidedType.PApply((fun a -> (a :> IProvidedCustomAttributeProvider)),m)
|
||||
//match provAttribs.PUntaint((fun a -> a. .GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), atref.FullName)),m) with
|
||||
//let provAttribs = info.ProvidedType.PApply((fun a -> (a :> IProvidedCustomAttributeProvider)), m)
|
||||
//match provAttribs.PUntaint((fun a -> a. .GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), atref.FullName)), m) with
|
||||
//| Some args -> f3 args
|
||||
//| None -> None
|
||||
#endif
|
||||
| ILTypeMetadata (TILObjectReprData(scoref,_,tdef)) ->
|
||||
| ILTypeMetadata (TILObjectReprData(scoref, _, tdef)) ->
|
||||
tdef.CustomAttrs |> AttribInfosOfIL g amap scoref m
|
||||
| FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata ->
|
||||
tcref.Attribs |> List.map (fun a -> FSAttribInfo (g, a))
|
||||
|
@ -142,12 +143,12 @@ let GetAttribInfosOfEntity g amap m (tcref:TyconRef) =
|
|||
|
||||
let GetAttribInfosOfMethod amap m minfo =
|
||||
match minfo with
|
||||
| ILMeth (g,ilminfo,_) -> ilminfo.RawMetadata.CustomAttrs |> AttribInfosOfIL g amap ilminfo.MetadataScope m
|
||||
| FSMeth (g,_,vref,_) -> vref.Attribs |> AttribInfosOfFS g
|
||||
| ILMeth (g, ilminfo, _) -> ilminfo.RawMetadata.CustomAttrs |> AttribInfosOfIL g amap ilminfo.MetadataScope m
|
||||
| FSMeth (g, _, vref, _) -> vref.Attribs |> AttribInfosOfFS g
|
||||
| DefaultStructCtor _ -> []
|
||||
#if !NO_EXTENSIONTYPING
|
||||
// TODO: provided attributes
|
||||
| ProvidedMeth (_,_mi,_,_m) ->
|
||||
| ProvidedMeth (_, _mi, _, _m) ->
|
||||
[]
|
||||
|
||||
#endif
|
||||
|
@ -155,8 +156,8 @@ let GetAttribInfosOfMethod amap m minfo =
|
|||
let GetAttribInfosOfProp amap m pinfo =
|
||||
match pinfo with
|
||||
| ILProp ilpinfo -> ilpinfo.RawMetadata.CustomAttrs |> AttribInfosOfIL ilpinfo.TcGlobals amap ilpinfo.ILTypeInfo.ILScopeRef m
|
||||
| FSProp(g,_,Some vref,_)
|
||||
| FSProp(g,_,_,Some vref) -> vref.Attribs |> AttribInfosOfFS g
|
||||
| FSProp(g, _, Some vref, _)
|
||||
| FSProp(g, _, _, Some vref) -> vref.Attribs |> AttribInfosOfFS g
|
||||
| FSProp _ -> failwith "GetAttribInfosOfProp: unreachable"
|
||||
#if !NO_EXTENSIONTYPING
|
||||
// TODO: provided attributes
|
||||
|
@ -176,17 +177,17 @@ let GetAttribInfosOfEvent amap m einfo =
|
|||
/// provided attributes.
|
||||
//
|
||||
// This is used for AttributeUsageAttribute, DefaultMemberAttribute and ConditionalAttribute (on attribute types)
|
||||
let TryBindTyconRefAttribute g m (AttribInfo (atref,_) as args) (tcref:TyconRef) f1 f2 f3 =
|
||||
let TryBindTyconRefAttribute g m (AttribInfo (atref, _) as args) (tcref:TyconRef) f1 f2 f3 =
|
||||
ignore m; ignore f3
|
||||
match metadataOfTycon tcref.Deref with
|
||||
#if !NO_EXTENSIONTYPING
|
||||
| ProvidedTypeMetadata info ->
|
||||
let provAttribs = info.ProvidedType.PApply((fun a -> (a :> IProvidedCustomAttributeProvider)),m)
|
||||
match provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), atref.FullName)),m) with
|
||||
let provAttribs = info.ProvidedType.PApply((fun a -> (a :> IProvidedCustomAttributeProvider)), m)
|
||||
match provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), atref.FullName)), m) with
|
||||
| Some args -> f3 args
|
||||
| None -> None
|
||||
#endif
|
||||
| ILTypeMetadata (TILObjectReprData(_,_,tdef)) ->
|
||||
| ILTypeMetadata (TILObjectReprData(_, _, tdef)) ->
|
||||
match TryDecodeILAttribute g atref tdef.CustomAttrs with
|
||||
| Some attr -> f1 attr
|
||||
| _ -> None
|
||||
|
@ -200,16 +201,16 @@ let TryBindTyconRefAttribute g m (AttribInfo (atref,_) as args) (tcref:TyconRef)
|
|||
let BindMethInfoAttributes m minfo f1 f2 f3 =
|
||||
ignore m; ignore f3
|
||||
match minfo with
|
||||
| ILMeth (_,x,_) -> f1 x.RawMetadata.CustomAttrs
|
||||
| FSMeth (_,_,vref,_) -> f2 vref.Attribs
|
||||
| ILMeth (_, x, _) -> f1 x.RawMetadata.CustomAttrs
|
||||
| FSMeth (_, _, vref, _) -> f2 vref.Attribs
|
||||
| DefaultStructCtor _ -> f2 []
|
||||
#if !NO_EXTENSIONTYPING
|
||||
| ProvidedMeth (_,mi,_,_) -> f3 (mi.PApply((fun st -> (st :> IProvidedCustomAttributeProvider)),m))
|
||||
| ProvidedMeth (_, mi, _, _) -> f3 (mi.PApply((fun st -> (st :> IProvidedCustomAttributeProvider)), m))
|
||||
#endif
|
||||
|
||||
/// Analyze three cases for attributes declared on methods: IL-declared attributes, F#-declared attributes and
|
||||
/// provided attributes.
|
||||
let TryBindMethInfoAttribute g m (AttribInfo(atref,_) as attribSpec) minfo f1 f2 f3 =
|
||||
let TryBindMethInfoAttribute g m (AttribInfo(atref, _) as attribSpec) minfo f1 f2 f3 =
|
||||
#if !NO_EXTENSIONTYPING
|
||||
#else
|
||||
// to prevent unused parameter warning
|
||||
|
@ -220,7 +221,7 @@ let TryBindMethInfoAttribute g m (AttribInfo(atref,_) as attribSpec) minfo f1 f2
|
|||
(fun fsAttribs -> TryFindFSharpAttribute g attribSpec fsAttribs |> Option.bind f2)
|
||||
#if !NO_EXTENSIONTYPING
|
||||
(fun provAttribs ->
|
||||
match provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), atref.FullName)),m) with
|
||||
match provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), atref.FullName)), m) with
|
||||
| Some args -> f3 args
|
||||
| None -> None)
|
||||
#else
|
||||
|
@ -232,9 +233,9 @@ let TryBindMethInfoAttribute g m (AttribInfo(atref,_) as attribSpec) minfo f1 f2
|
|||
/// This is just used for the 'ConditionalAttribute' attribute
|
||||
let TryFindMethInfoStringAttribute g m attribSpec minfo =
|
||||
TryBindMethInfoAttribute g m attribSpec minfo
|
||||
(function ([ILAttribElem.String (Some msg) ],_) -> Some msg | _ -> None)
|
||||
(function (Attrib(_,_,[ AttribStringArg msg ],_,_,_,_)) -> Some msg | _ -> None)
|
||||
(function ([ Some ((:? string as msg) : obj) ],_) -> Some msg | _ -> None)
|
||||
(function ([ILAttribElem.String (Some msg) ], _) -> Some msg | _ -> None)
|
||||
(function (Attrib(_, _, [ AttribStringArg msg ], _, _, _, _)) -> Some msg | _ -> None)
|
||||
(function ([ Some ((:? string as msg) : obj) ], _) -> Some msg | _ -> None)
|
||||
|
||||
/// Check if a method has a specific attribute.
|
||||
let MethInfoHasAttribute g m attribSpec minfo =
|
||||
|
@ -248,19 +249,19 @@ let MethInfoHasAttribute g m attribSpec minfo =
|
|||
|
||||
/// Check IL attributes for 'ObsoleteAttribute', returning errors and warnings as data
|
||||
let private CheckILAttributes (g: TcGlobals) cattrs m =
|
||||
let (AttribInfo(tref,_)) = g.attrib_SystemObsolete
|
||||
let (AttribInfo(tref, _)) = g.attrib_SystemObsolete
|
||||
match TryDecodeILAttribute g tref cattrs with
|
||||
| Some ([ILAttribElem.String (Some msg) ],_) ->
|
||||
WarnD(ObsoleteWarning(msg,m))
|
||||
| Some ([ILAttribElem.String (Some msg); ILAttribElem.Bool isError ],_) ->
|
||||
| Some ([ILAttribElem.String (Some msg) ], _) ->
|
||||
WarnD(ObsoleteWarning(msg, m))
|
||||
| Some ([ILAttribElem.String (Some msg); ILAttribElem.Bool isError ], _) ->
|
||||
if isError then
|
||||
ErrorD (ObsoleteError(msg,m))
|
||||
ErrorD (ObsoleteError(msg, m))
|
||||
else
|
||||
WarnD (ObsoleteWarning(msg,m))
|
||||
| Some ([ILAttribElem.String None ],_) ->
|
||||
WarnD(ObsoleteWarning("",m))
|
||||
WarnD (ObsoleteWarning(msg, m))
|
||||
| Some ([ILAttribElem.String None ], _) ->
|
||||
WarnD(ObsoleteWarning("", m))
|
||||
| Some _ ->
|
||||
WarnD(ObsoleteWarning("",m))
|
||||
WarnD(ObsoleteWarning("", m))
|
||||
| None ->
|
||||
CompleteD
|
||||
|
||||
|
@ -270,13 +271,13 @@ let CheckFSharpAttributes g attribs m =
|
|||
if isNil attribs then CompleteD
|
||||
else
|
||||
(match TryFindFSharpAttribute g g.attrib_SystemObsolete attribs with
|
||||
| Some(Attrib(_,_,[ AttribStringArg s ],_,_,_,_)) ->
|
||||
WarnD(ObsoleteWarning(s,m))
|
||||
| Some(Attrib(_,_,[ AttribStringArg s; AttribBoolArg(isError) ],_,_,_,_)) ->
|
||||
| Some(Attrib(_, _, [ AttribStringArg s ], _, _, _, _)) ->
|
||||
WarnD(ObsoleteWarning(s, m))
|
||||
| Some(Attrib(_, _, [ AttribStringArg s; AttribBoolArg(isError) ], _, _, _, _)) ->
|
||||
if isError then
|
||||
ErrorD (ObsoleteError(s,m))
|
||||
ErrorD (ObsoleteError(s, m))
|
||||
else
|
||||
WarnD (ObsoleteWarning(s,m))
|
||||
WarnD (ObsoleteWarning(s, m))
|
||||
| Some _ ->
|
||||
WarnD(ObsoleteWarning("", m))
|
||||
| None ->
|
||||
|
@ -284,8 +285,8 @@ let CheckFSharpAttributes g attribs m =
|
|||
) ++ (fun () ->
|
||||
|
||||
match TryFindFSharpAttribute g g.attrib_CompilerMessageAttribute attribs with
|
||||
| Some(Attrib(_,_,[ AttribStringArg s ; AttribInt32Arg n ],namedArgs,_,_,_)) ->
|
||||
let msg = UserCompilerMessage(s,n,m)
|
||||
| Some(Attrib(_, _, [ AttribStringArg s ; AttribInt32Arg n ], namedArgs, _, _, _)) ->
|
||||
let msg = UserCompilerMessage(s, n, m)
|
||||
let isError =
|
||||
match namedArgs with
|
||||
| ExtractAttribNamedArg "IsError" (AttribBoolArg v) -> v
|
||||
|
@ -297,8 +298,8 @@ let CheckFSharpAttributes g attribs m =
|
|||
) ++ (fun () ->
|
||||
|
||||
match TryFindFSharpAttribute g g.attrib_ExperimentalAttribute attribs with
|
||||
| Some(Attrib(_,_,[ AttribStringArg(s) ],_,_,_,_)) ->
|
||||
WarnD(Experimental(s,m))
|
||||
| Some(Attrib(_, _, [ AttribStringArg(s) ], _, _, _, _)) ->
|
||||
WarnD(Experimental(s, m))
|
||||
| Some _ ->
|
||||
WarnD(Experimental(FSComp.SR.experimentalConstruct (), m))
|
||||
| _ ->
|
||||
|
@ -315,25 +316,25 @@ let CheckFSharpAttributes g attribs m =
|
|||
#if !NO_EXTENSIONTYPING
|
||||
/// Check a list of provided attributes for 'ObsoleteAttribute', returning errors and warnings as data
|
||||
let private CheckProvidedAttributes (g: TcGlobals) m (provAttribs: Tainted<IProvidedCustomAttributeProvider>) =
|
||||
let (AttribInfo(tref,_)) = g.attrib_SystemObsolete
|
||||
match provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), tref.FullName)),m) with
|
||||
| Some ([ Some (:? string as msg) ], _) -> WarnD(ObsoleteWarning(msg,m))
|
||||
let (AttribInfo(tref, _)) = g.attrib_SystemObsolete
|
||||
match provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), tref.FullName)), m) with
|
||||
| Some ([ Some (:? string as msg) ], _) -> WarnD(ObsoleteWarning(msg, m))
|
||||
| Some ([ Some (:? string as msg); Some (:?bool as isError) ], _) ->
|
||||
if isError then
|
||||
ErrorD (ObsoleteError(msg,m))
|
||||
ErrorD (ObsoleteError(msg, m))
|
||||
else
|
||||
WarnD (ObsoleteWarning(msg,m))
|
||||
WarnD (ObsoleteWarning(msg, m))
|
||||
| Some ([ None ], _) ->
|
||||
WarnD(ObsoleteWarning("",m))
|
||||
WarnD(ObsoleteWarning("", m))
|
||||
| Some _ ->
|
||||
WarnD(ObsoleteWarning("",m))
|
||||
WarnD(ObsoleteWarning("", m))
|
||||
| None ->
|
||||
CompleteD
|
||||
#endif
|
||||
|
||||
/// Indicate if a list of IL attributes contains 'ObsoleteAttribute'. Used to suppress the item in intellisense.
|
||||
let CheckILAttributesForUnseen (g: TcGlobals) cattrs _m =
|
||||
let (AttribInfo(tref,_)) = g.attrib_SystemObsolete
|
||||
let (AttribInfo(tref, _)) = g.attrib_SystemObsolete
|
||||
Option.isSome (TryDecodeILAttribute g tref cattrs)
|
||||
|
||||
/// Checks the attributes for CompilerMessageAttribute, which has an IsHidden argument that allows
|
||||
|
@ -341,15 +342,15 @@ let CheckILAttributesForUnseen (g: TcGlobals) cattrs _m =
|
|||
let CheckFSharpAttributesForHidden g attribs =
|
||||
not (isNil attribs) &&
|
||||
(match TryFindFSharpAttribute g g.attrib_CompilerMessageAttribute attribs with
|
||||
| Some(Attrib(_,_,[AttribStringArg _; AttribInt32Arg messageNumber],
|
||||
ExtractAttribNamedArg "IsHidden" (AttribBoolArg v),_,_,_)) ->
|
||||
| Some(Attrib(_, _, [AttribStringArg _; AttribInt32Arg messageNumber],
|
||||
ExtractAttribNamedArg "IsHidden" (AttribBoolArg v), _, _, _)) ->
|
||||
// Message number 62 is for "ML Compatibility". Items labelled with this are visible in intellisense
|
||||
// when mlCompatibility is set.
|
||||
v && not (messageNumber = 62 && g.mlCompatibility)
|
||||
| _ -> false)
|
||||
||
|
||||
(match TryFindFSharpAttribute g g.attrib_ComponentModelEditorBrowsableAttribute attribs with
|
||||
| Some(Attrib(_,_,[AttribInt32Arg state],_,_,_,_)) -> state = int System.ComponentModel.EditorBrowsableState.Never
|
||||
| Some(Attrib(_, _, [AttribInt32Arg state], _, _, _, _)) -> state = int System.ComponentModel.EditorBrowsableState.Never
|
||||
| _ -> false)
|
||||
|
||||
/// Indicate if a list of F# attributes contains 'ObsoleteAttribute'. Used to suppress the item in intellisense.
|
||||
|
@ -367,19 +368,19 @@ let CheckFSharpAttributesForUnseen g attribs _m =
|
|||
#if !NO_EXTENSIONTYPING
|
||||
/// Indicate if a list of provided attributes contains 'ObsoleteAttribute'. Used to suppress the item in intellisense.
|
||||
let CheckProvidedAttributesForUnseen (provAttribs: Tainted<IProvidedCustomAttributeProvider>) m =
|
||||
provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), typeof<System.ObsoleteAttribute>.FullName).IsSome),m)
|
||||
provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), typeof<System.ObsoleteAttribute>.FullName).IsSome), m)
|
||||
#endif
|
||||
|
||||
/// Check the attributes associated with a property, returning warnings and errors as data.
|
||||
let CheckPropInfoAttributes pinfo m =
|
||||
match pinfo with
|
||||
| ILProp(ILPropInfo(_,pdef)) -> CheckILAttributes pinfo.TcGlobals pdef.CustomAttrs m
|
||||
| FSProp(g,_,Some vref,_)
|
||||
| FSProp(g,_,_,Some vref) -> CheckFSharpAttributes g vref.Attribs m
|
||||
| ILProp(ILPropInfo(_, pdef)) -> CheckILAttributes pinfo.TcGlobals pdef.CustomAttrs m
|
||||
| FSProp(g, _, Some vref, _)
|
||||
| FSProp(g, _, _, Some vref) -> CheckFSharpAttributes g vref.Attribs m
|
||||
| FSProp _ -> failwith "CheckPropInfoAttributes: unreachable"
|
||||
#if !NO_EXTENSIONTYPING
|
||||
| ProvidedProp (amap,pi,m) ->
|
||||
CheckProvidedAttributes amap.g m (pi.PApply((fun st -> (st :> IProvidedCustomAttributeProvider)),m))
|
||||
| ProvidedProp (amap, pi, m) ->
|
||||
CheckProvidedAttributes amap.g m (pi.PApply((fun st -> (st :> IProvidedCustomAttributeProvider)), m))
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -387,11 +388,11 @@ let CheckPropInfoAttributes pinfo m =
|
|||
/// Check the attributes associated with a IL field, returning warnings and errors as data.
|
||||
let CheckILFieldAttributes g (finfo:ILFieldInfo) m =
|
||||
match finfo with
|
||||
| ILFieldInfo(_,pd) ->
|
||||
| ILFieldInfo(_, pd) ->
|
||||
CheckILAttributes g pd.CustomAttrs m |> CommitOperationResult
|
||||
#if !NO_EXTENSIONTYPING
|
||||
| ProvidedField (amap,fi,m) ->
|
||||
CheckProvidedAttributes amap.g m (fi.PApply((fun st -> (st :> IProvidedCustomAttributeProvider)),m)) |> CommitOperationResult
|
||||
| ProvidedField (amap, fi, m) ->
|
||||
CheckProvidedAttributes amap.g m (fi.PApply((fun st -> (st :> IProvidedCustomAttributeProvider)), m)) |> CommitOperationResult
|
||||
#endif
|
||||
|
||||
/// Check the attributes associated with a method, returning warnings and errors as data.
|
||||
|
@ -403,7 +404,7 @@ let CheckMethInfoAttributes g m tyargsOpt minfo =
|
|||
let res =
|
||||
CheckFSharpAttributes g fsAttribs m ++ (fun () ->
|
||||
if Option.isNone tyargsOpt && HasFSharpAttribute g g.attrib_RequiresExplicitTypeArgumentsAttribute fsAttribs then
|
||||
ErrorD(Error(FSComp.SR.tcFunctionRequiresExplicitTypeArguments(minfo.LogicalName),m))
|
||||
ErrorD(Error(FSComp.SR.tcFunctionRequiresExplicitTypeArguments(minfo.LogicalName), m))
|
||||
else
|
||||
CompleteD)
|
||||
Some res)
|
||||
|
@ -465,16 +466,16 @@ let MethInfoIsUnseen g m typ minfo =
|
|||
/// Used to suppress the item in intellisense.
|
||||
let PropInfoIsUnseen m pinfo =
|
||||
match pinfo with
|
||||
| ILProp (ILPropInfo(_,pdef) as ilpinfo) ->
|
||||
| ILProp (ILPropInfo(_, pdef) as ilpinfo) ->
|
||||
// Properties on .NET tuple types are resolvable but unseen
|
||||
isAnyTupleTy pinfo.TcGlobals ilpinfo.ILTypeInfo.ToType ||
|
||||
CheckILAttributesForUnseen pinfo.TcGlobals pdef.CustomAttrs m
|
||||
| FSProp (g,_,Some vref,_)
|
||||
| FSProp (g,_,_,Some vref) -> CheckFSharpAttributesForUnseen g vref.Attribs m
|
||||
| FSProp (g, _, Some vref, _)
|
||||
| FSProp (g, _, _, Some vref) -> CheckFSharpAttributesForUnseen g vref.Attribs m
|
||||
| FSProp _ -> failwith "CheckPropInfoAttributes: unreachable"
|
||||
#if !NO_EXTENSIONTYPING
|
||||
| ProvidedProp (_amap,pi,m) ->
|
||||
CheckProvidedAttributesForUnseen (pi.PApply((fun st -> (st :> IProvidedCustomAttributeProvider)),m)) m
|
||||
| ProvidedProp (_amap, pi, m) ->
|
||||
CheckProvidedAttributesForUnseen (pi.PApply((fun st -> (st :> IProvidedCustomAttributeProvider)), m)) m
|
||||
#endif
|
||||
|
||||
/// Check the attributes on an entity, returning errors and warnings as data.
|
||||
|
@ -503,3 +504,23 @@ let CheckRecdFieldInfoAttributes g (x:RecdFieldInfo) m =
|
|||
CheckRecdFieldAttributes g x.RecdFieldRef m
|
||||
|
||||
|
||||
// Identify any security attributes
|
||||
let IsSecurityAttribute (g: TcGlobals) amap (casmap : Dictionary<Stamp, bool>) (Attrib(tcref, _, _, _, _, _, _)) m =
|
||||
// There's no CAS on Silverlight, so we have to be careful here
|
||||
match g.attrib_SecurityAttribute with
|
||||
| None -> false
|
||||
| Some attr ->
|
||||
match attr.TyconRef.TryDeref with
|
||||
| ValueSome _ ->
|
||||
let tcs = tcref.Stamp
|
||||
match casmap.TryGetValue(tcs) with
|
||||
| true, c -> c
|
||||
| _ ->
|
||||
let exists = ExistsInEntireHierarchyOfType (fun t -> typeEquiv g t (mkAppTy attr.TyconRef [])) g amap m AllowMultiIntfInstantiations.Yes (mkAppTy tcref [])
|
||||
casmap.[tcs] <- exists
|
||||
exists
|
||||
| ValueNone -> false
|
||||
|
||||
let IsSecurityCriticalAttribute g (Attrib(tcref, _, _, _, _, _, _)) =
|
||||
(tyconRefEq g tcref g.attrib_SecurityCriticalAttribute.TyconRef || tyconRefEq g tcref g.attrib_SecuritySafeCriticalAttribute.TyconRef)
|
||||
|
||||
|
|
|
@ -4,17 +4,15 @@
|
|||
module internal Microsoft.FSharp.Compiler.CompileOps
|
||||
|
||||
open System
|
||||
open System.Collections.Concurrent
|
||||
open System.Collections.Generic
|
||||
open System.Diagnostics
|
||||
open System.IO
|
||||
open System.Runtime.CompilerServices
|
||||
open System.Text
|
||||
|
||||
open Internal.Utilities
|
||||
open Internal.Utilities.Text
|
||||
open Internal.Utilities.Collections
|
||||
open Internal.Utilities.Filename
|
||||
open Internal.Utilities.Text
|
||||
|
||||
open Microsoft.FSharp.Compiler.AbstractIL
|
||||
open Microsoft.FSharp.Compiler.AbstractIL.IL
|
||||
|
@ -25,28 +23,27 @@ open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX
|
|||
open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics
|
||||
|
||||
open Microsoft.FSharp.Compiler
|
||||
open Microsoft.FSharp.Compiler.TastPickle
|
||||
open Microsoft.FSharp.Compiler.Range
|
||||
open Microsoft.FSharp.Compiler.TypeChecker
|
||||
open Microsoft.FSharp.Compiler.DiagnosticMessage
|
||||
open Microsoft.FSharp.Compiler.Ast
|
||||
open Microsoft.FSharp.Compiler.AttributeChecking
|
||||
open Microsoft.FSharp.Compiler.ConstraintSolver
|
||||
open Microsoft.FSharp.Compiler.DiagnosticMessage
|
||||
open Microsoft.FSharp.Compiler.ErrorLogger
|
||||
open Microsoft.FSharp.Compiler.Tast
|
||||
open Microsoft.FSharp.Compiler.Tastops
|
||||
open Microsoft.FSharp.Compiler.Tastops.DebugPrint
|
||||
open Microsoft.FSharp.Compiler.TcGlobals
|
||||
open Microsoft.FSharp.Compiler.Import
|
||||
open Microsoft.FSharp.Compiler.Infos
|
||||
open Microsoft.FSharp.Compiler.Lexhelp
|
||||
open Microsoft.FSharp.Compiler.Lib
|
||||
open Microsoft.FSharp.Compiler.Infos
|
||||
open Microsoft.FSharp.Compiler.ConstraintSolver
|
||||
open Microsoft.FSharp.Compiler.ReferenceResolver
|
||||
open Microsoft.FSharp.Compiler.SignatureConformance
|
||||
open Microsoft.FSharp.Compiler.MethodCalls
|
||||
open Microsoft.FSharp.Compiler.MethodOverrides
|
||||
open Microsoft.FSharp.Compiler.NameResolution
|
||||
open Microsoft.FSharp.Compiler.PrettyNaming
|
||||
open Microsoft.FSharp.Compiler.Import
|
||||
|
||||
open Microsoft.FSharp.Compiler.Range
|
||||
open Microsoft.FSharp.Compiler.ReferenceResolver
|
||||
open Microsoft.FSharp.Compiler.SignatureConformance
|
||||
open Microsoft.FSharp.Compiler.TastPickle
|
||||
open Microsoft.FSharp.Compiler.TypeChecker
|
||||
open Microsoft.FSharp.Compiler.Tast
|
||||
open Microsoft.FSharp.Compiler.Tastops
|
||||
open Microsoft.FSharp.Compiler.TcGlobals
|
||||
|
||||
#if !NO_EXTENSIONTYPING
|
||||
open Microsoft.FSharp.Compiler.ExtensionTyping
|
||||
|
@ -1034,6 +1031,7 @@ let OutputPhasedErrorR (os:StringBuilder) (err:PhasedDiagnostic) =
|
|||
| Parser.TOKEN_LAZY -> getErrorString("Parser.TOKEN.LAZY")
|
||||
| Parser.TOKEN_OLAZY -> getErrorString("Parser.TOKEN.LAZY")
|
||||
| Parser.TOKEN_MATCH -> getErrorString("Parser.TOKEN.MATCH")
|
||||
| Parser.TOKEN_MATCH_BANG -> getErrorString("Parser.TOKEN.MATCH.BANG")
|
||||
| Parser.TOKEN_MUTABLE -> getErrorString("Parser.TOKEN.MUTABLE")
|
||||
| Parser.TOKEN_NEW -> getErrorString("Parser.TOKEN.NEW")
|
||||
| Parser.TOKEN_OF -> getErrorString("Parser.TOKEN.OF")
|
||||
|
@ -2626,14 +2624,7 @@ type TcConfigBuilder =
|
|||
ri, fileNameOfPath ri, ILResourceAccess.Public
|
||||
|
||||
|
||||
let OpenILBinary(filename, reduceMemoryUsage, ilGlobalsOpt, pdbDirPath, shadowCopyReferences, tryGetMetadataSnapshot) =
|
||||
let ilGlobals =
|
||||
// ILScopeRef.Local can be used only for primary assembly (mscorlib or System.Runtime) itself
|
||||
// Remaining assemblies should be opened using existing ilGlobals (so they can properly locate fundamental types)
|
||||
match ilGlobalsOpt with
|
||||
| None -> mkILGlobals ILScopeRef.Local
|
||||
| Some g -> g
|
||||
|
||||
let OpenILBinary(filename, reduceMemoryUsage, ilGlobals, pdbDirPath, shadowCopyReferences, tryGetMetadataSnapshot) =
|
||||
let opts : ILReaderOptions =
|
||||
{ ilGlobals = ilGlobals
|
||||
metadataOnly = MetadataOnlyFlag.Yes
|
||||
|
@ -2654,7 +2645,7 @@ let OpenILBinary(filename, reduceMemoryUsage, ilGlobalsOpt, pdbDirPath, shadowCo
|
|||
ignore shadowCopyReferences
|
||||
#endif
|
||||
filename
|
||||
OpenILModuleReader location opts
|
||||
AssemblyReader.GetILModuleReader(location, opts)
|
||||
|
||||
#if DEBUG
|
||||
[<System.Diagnostics.DebuggerDisplayAttribute("AssemblyResolution({resolvedPath})")>]
|
||||
|
@ -2784,12 +2775,13 @@ type TcConfig private (data : TcConfigBuilder, validate:bool) =
|
|||
do if ((primaryAssemblyExplicitFilenameOpt.IsSome || fslibExplicitFilenameOpt.IsSome) && data.framework) then
|
||||
error(Error(FSComp.SR.buildExplicitCoreLibRequiresNoFramework("--noframework"), rangeStartup))
|
||||
|
||||
let ilGlobals = mkILGlobals ILScopeRef.Local
|
||||
let clrRootValue, targetFrameworkVersionValue =
|
||||
match primaryAssemblyExplicitFilenameOpt with
|
||||
| Some(primaryAssemblyFilename) ->
|
||||
let filename = ComputeMakePathAbsolute data.implicitIncludeDir primaryAssemblyFilename
|
||||
try
|
||||
use ilReader = OpenILBinary(filename, data.reduceMemoryUsage, None, None, data.shadowCopyReferences, data.tryGetMetadataSnapshot)
|
||||
use ilReader = OpenILBinary(filename, data.reduceMemoryUsage, ilGlobals, None, data.shadowCopyReferences, data.tryGetMetadataSnapshot)
|
||||
let ilModule = ilReader.ILModuleDef
|
||||
match ilModule.ManifestOfAssembly.Version with
|
||||
| Some(v1, v2, _, _) ->
|
||||
|
@ -2822,7 +2814,7 @@ type TcConfig private (data : TcConfigBuilder, validate:bool) =
|
|||
let filename = ComputeMakePathAbsolute data.implicitIncludeDir fslibFilename
|
||||
if fslibReference.ProjectReference.IsNone then
|
||||
try
|
||||
use ilReader = OpenILBinary(filename, data.reduceMemoryUsage, None, None, data.shadowCopyReferences, data.tryGetMetadataSnapshot)
|
||||
use ilReader = OpenILBinary(filename, data.reduceMemoryUsage, ilGlobals, None, data.shadowCopyReferences, data.tryGetMetadataSnapshot)
|
||||
()
|
||||
with e ->
|
||||
error(Error(FSComp.SR.buildErrorOpeningBinaryFile(filename, e.Message), rangeStartup))
|
||||
|
@ -4146,7 +4138,17 @@ type TcImports(tcConfigP:TcConfigProvider, initialResolutions:TcAssemblyResoluti
|
|||
None
|
||||
else
|
||||
None
|
||||
let ilILBinaryReader = OpenILBinary(filename, tcConfig.reduceMemoryUsage, ilGlobalsOpt, pdbDirPath, tcConfig.shadowCopyReferences, tcConfig.tryGetMetadataSnapshot)
|
||||
|
||||
let ilGlobals =
|
||||
// ILScopeRef.Local can be used only for primary assembly (mscorlib or System.Runtime) itself
|
||||
// Remaining assemblies should be opened using existing ilGlobals (so they can properly locate fundamental types)
|
||||
match ilGlobalsOpt with
|
||||
| None -> mkILGlobals ILScopeRef.Local
|
||||
| Some g -> g
|
||||
|
||||
let ilILBinaryReader =
|
||||
OpenILBinary (filename, tcConfig.reduceMemoryUsage, ilGlobals, pdbDirPath, tcConfig.shadowCopyReferences, tcConfig.tryGetMetadataSnapshot)
|
||||
|
||||
tcImports.AttachDisposeAction(fun _ -> (ilILBinaryReader :> IDisposable).Dispose())
|
||||
ilILBinaryReader.ILModuleDef, ilILBinaryReader.ILAssemblyRefs
|
||||
with e ->
|
||||
|
@ -5531,8 +5533,11 @@ let TypeCheckMultipleInputsFinish(results, tcState: TcState) =
|
|||
|
||||
let TypeCheckOneInputAndFinishEventually(checkForErrors, tcConfig: TcConfig, tcImports, tcGlobals, prefixPathOpt, tcSink, tcState, input) =
|
||||
eventually {
|
||||
Logger.LogBlockStart LogCompilerFunctionId.CompileOps_TypeCheckOneInputAndFinishEventually
|
||||
let! results, tcState = TypeCheckOneInputEventually(checkForErrors, tcConfig, tcImports, tcGlobals, prefixPathOpt, tcSink, tcState, input)
|
||||
return TypeCheckMultipleInputsFinish([results], tcState)
|
||||
let result = TypeCheckMultipleInputsFinish([results], tcState)
|
||||
Logger.LogBlockStop LogCompilerFunctionId.CompileOps_TypeCheckOneInputAndFinishEventually
|
||||
return result
|
||||
}
|
||||
|
||||
let TypeCheckClosedInputSetFinish (declaredImpls: TypedImplFile list, tcState) =
|
||||
|
|
|
@ -116,34 +116,34 @@ let FreshenMethInfo m (minfo:MethInfo) =
|
|||
[<RequireQualifiedAccess>]
|
||||
/// Information about the context of a type equation.
|
||||
type ContextInfo =
|
||||
/// No context was given.
|
||||
| NoContext
|
||||
/// The type equation comes from an IF expression.
|
||||
| IfExpression of range
|
||||
/// The type equation comes from an omitted else branch.
|
||||
| OmittedElseBranch of range
|
||||
/// The type equation comes from a type check of the result of an else branch.
|
||||
| ElseBranchResult of range
|
||||
/// The type equation comes from the verification of record fields.
|
||||
| RecordFields
|
||||
/// The type equation comes from the verification of a tuple in record fields.
|
||||
| TupleInRecordFields
|
||||
/// The type equation comes from a list or array constructor
|
||||
| CollectionElement of bool * range
|
||||
/// The type equation comes from a return in a computation expression.
|
||||
| ReturnInComputationExpression
|
||||
/// The type equation comes from a yield in a computation expression.
|
||||
| YieldInComputationExpression
|
||||
/// The type equation comes from a runtime type test.
|
||||
| RuntimeTypeTest of bool
|
||||
/// The type equation comes from an downcast where a upcast could be used.
|
||||
| DowncastUsedInsteadOfUpcast of bool
|
||||
/// The type equation comes from a return type of a pattern match clause (not the first clause).
|
||||
| FollowingPatternMatchClause of range
|
||||
/// The type equation comes from a pattern match guard.
|
||||
| PatternMatchGuard of range
|
||||
/// The type equation comes from a sequence expression.
|
||||
| SequenceExpression of TType
|
||||
/// No context was given.
|
||||
| NoContext
|
||||
/// The type equation comes from an IF expression.
|
||||
| IfExpression of range
|
||||
/// The type equation comes from an omitted else branch.
|
||||
| OmittedElseBranch of range
|
||||
/// The type equation comes from a type check of the result of an else branch.
|
||||
| ElseBranchResult of range
|
||||
/// The type equation comes from the verification of record fields.
|
||||
| RecordFields
|
||||
/// The type equation comes from the verification of a tuple in record fields.
|
||||
| TupleInRecordFields
|
||||
/// The type equation comes from a list or array constructor
|
||||
| CollectionElement of bool * range
|
||||
/// The type equation comes from a return in a computation expression.
|
||||
| ReturnInComputationExpression
|
||||
/// The type equation comes from a yield in a computation expression.
|
||||
| YieldInComputationExpression
|
||||
/// The type equation comes from a runtime type test.
|
||||
| RuntimeTypeTest of bool
|
||||
/// The type equation comes from an downcast where a upcast could be used.
|
||||
| DowncastUsedInsteadOfUpcast of bool
|
||||
/// The type equation comes from a return type of a pattern match clause (not the first clause).
|
||||
| FollowingPatternMatchClause of range
|
||||
/// The type equation comes from a pattern match guard.
|
||||
| PatternMatchGuard of range
|
||||
/// The type equation comes from a sequence expression.
|
||||
| SequenceExpression of TType
|
||||
|
||||
exception ConstraintSolverTupleDiffLengths of DisplayEnv * TType list * TType list * range * range
|
||||
exception ConstraintSolverInfiniteTypes of ContextInfo * DisplayEnv * TType * TType * range * range
|
||||
|
@ -420,8 +420,6 @@ let PreferUnifyTypar (v1:Typar) (v2:Typar) =
|
|||
| true, false -> false
|
||||
| _ -> true
|
||||
|
||||
|
||||
|
||||
/// Reorder a list of (variable, exponent) pairs so that a variable that is Preferred
|
||||
/// is at the head of the list, if possible
|
||||
let FindPreferredTypar vs =
|
||||
|
@ -473,12 +471,12 @@ and SolveTypStaticReq (csenv:ConstraintSolverEnv) trace req ty =
|
|||
| Some tpr -> SolveTypStaticReqTypar csenv trace req tpr
|
||||
| None -> CompleteD
|
||||
|
||||
let rec TransactDynamicReq (trace:OptionalTrace) (tpr:Typar) req =
|
||||
let TransactDynamicReq (trace:OptionalTrace) (tpr:Typar) req =
|
||||
let orig = tpr.DynamicReq
|
||||
trace.Exec (fun () -> tpr.SetDynamicReq req) (fun () -> tpr.SetDynamicReq orig)
|
||||
CompleteD
|
||||
|
||||
and SolveTypDynamicReq (csenv:ConstraintSolverEnv) trace req ty =
|
||||
let SolveTypDynamicReq (csenv:ConstraintSolverEnv) trace req ty =
|
||||
match req with
|
||||
| TyparDynamicReq.No -> CompleteD
|
||||
| TyparDynamicReq.Yes ->
|
||||
|
@ -487,6 +485,19 @@ and SolveTypDynamicReq (csenv:ConstraintSolverEnv) trace req ty =
|
|||
TransactDynamicReq trace tpr TyparDynamicReq.Yes
|
||||
| _ -> CompleteD
|
||||
|
||||
let TransactIsCompatFlex (trace:OptionalTrace) (tpr:Typar) req =
|
||||
let orig = tpr.IsCompatFlex
|
||||
trace.Exec (fun () -> tpr.SetIsCompatFlex req) (fun () -> tpr.SetIsCompatFlex orig)
|
||||
CompleteD
|
||||
|
||||
let SolveTypIsCompatFlex (csenv:ConstraintSolverEnv) trace req ty =
|
||||
if req then
|
||||
match tryAnyParTy csenv.g ty with
|
||||
| Some tpr when not tpr.IsCompatFlex -> TransactIsCompatFlex trace tpr req
|
||||
| _ -> CompleteD
|
||||
else
|
||||
CompleteD
|
||||
|
||||
let SubstMeasureWarnIfRigid (csenv:ConstraintSolverEnv) trace (v:Typar) ms =
|
||||
if v.Rigidity.WarnIfUnified && not (isAnyParTy csenv.g (TType_measure ms)) then
|
||||
// NOTE: we grab the name eagerly to make sure the type variable prints as a type variable
|
||||
|
@ -721,21 +732,23 @@ let rec SolveTyparEqualsTyp (csenv:ConstraintSolverEnv) ndeep m2 (trace:Optional
|
|||
CompleteD) ++ (fun _ ->
|
||||
|
||||
// Re-solve the other constraints associated with this type variable
|
||||
solveTypMeetsTyparConstraints csenv ndeep m2 trace ty (r.DynamicReq, r.StaticReq, r.Constraints)))
|
||||
solveTypMeetsTyparConstraints csenv ndeep m2 trace ty r))
|
||||
|
||||
| _ -> failwith "SolveTyparEqualsTyp")
|
||||
|
||||
|
||||
/// Given a type 'ty' and a set of constraints on that type, solve those constraints.
|
||||
and solveTypMeetsTyparConstraints (csenv:ConstraintSolverEnv) ndeep m2 trace ty (dreq, sreq, cs) =
|
||||
/// Apply the constraints on 'typar' to the type 'ty'
|
||||
and solveTypMeetsTyparConstraints (csenv:ConstraintSolverEnv) ndeep m2 trace ty (r: Typar) =
|
||||
let g = csenv.g
|
||||
// Propagate compat flex requirements from 'tp' to 'ty'
|
||||
SolveTypIsCompatFlex csenv trace r.IsCompatFlex ty ++ (fun () ->
|
||||
// Propagate dynamic requirements from 'tp' to 'ty'
|
||||
SolveTypDynamicReq csenv trace dreq ty ++ (fun () ->
|
||||
SolveTypDynamicReq csenv trace r.DynamicReq ty ++ (fun () ->
|
||||
// Propagate static requirements from 'tp' to 'ty'
|
||||
SolveTypStaticReq csenv trace sreq ty ++ (fun () ->
|
||||
SolveTypStaticReq csenv trace r.StaticReq ty ++ (fun () ->
|
||||
|
||||
// Solve constraints on 'tp' w.r.t. 'ty'
|
||||
cs |> IterateD (function
|
||||
r.Constraints |> IterateD (function
|
||||
| TyparConstraint.DefaultsTo (priority, dty, m) ->
|
||||
if typeEquiv g ty dty then
|
||||
CompleteD
|
||||
|
@ -758,7 +771,7 @@ and solveTypMeetsTyparConstraints (csenv:ConstraintSolverEnv) ndeep m2 trace ty
|
|||
| TyparConstraint.CoercesTo(ty2, m2) -> SolveTypSubsumesTypKeepAbbrevs csenv ndeep m2 trace None ty2 ty
|
||||
| TyparConstraint.MayResolveMember(traitInfo, m2) ->
|
||||
SolveMemberConstraint csenv false false ndeep m2 trace traitInfo ++ (fun _ -> CompleteD)
|
||||
)))
|
||||
))))
|
||||
|
||||
|
||||
and SolveAnonInfoEqualsAnonInfo (csenv:ConstraintSolverEnv) m2 (anonInfo1: AnonRecdTypeInfo) (anonInfo2: AnonRecdTypeInfo) =
|
||||
|
@ -852,6 +865,11 @@ and SolveFunTypEqn csenv ndeep m2 trace cxsln d1 d2 r1 r2 =
|
|||
SolveTypEqualsTypKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln d1 d2 ++ (fun () ->
|
||||
SolveTypEqualsTypKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln r1 r2)
|
||||
|
||||
// ty1: expected
|
||||
// ty2: actual
|
||||
//
|
||||
// "ty2 casts to ty1"
|
||||
// "a value of type ty2 can be used where a value of type ty1 is expected"
|
||||
and SolveTypSubsumesTyp (csenv:ConstraintSolverEnv) ndeep m2 (trace: OptionalTrace) cxsln ty1 ty2 =
|
||||
// 'a :> obj ---> <solved>
|
||||
let ndeep = ndeep + 1
|
||||
|
@ -1926,7 +1944,6 @@ and CanMemberSigsMatchUpToCheck
|
|||
let minst = calledMeth.CalledTyArgs
|
||||
let uminst = calledMeth.CallerTyArgs
|
||||
let callerObjArgTys = calledMeth.CallerObjArgTys
|
||||
let methodRetTy = calledMeth.ReturnType
|
||||
let assignedItemSetters = calledMeth.AssignedItemSetters
|
||||
let unnamedCalledOptArgs = calledMeth.UnnamedCalledOptArgs
|
||||
let unnamedCalledOutArgs = calledMeth.UnnamedCalledOutArgs
|
||||
|
@ -1991,22 +2008,9 @@ and CanMemberSigsMatchUpToCheck
|
|||
| Some _ when minfo.IsConstructor -> CompleteD
|
||||
| Some _ when not alwaysCheckReturn && isNil unnamedCalledOutArgs -> CompleteD
|
||||
| Some reqdRetTy ->
|
||||
let methodRetTy =
|
||||
if isNil unnamedCalledOutArgs then
|
||||
methodRetTy
|
||||
else
|
||||
let outArgTys = unnamedCalledOutArgs |> List.map (fun calledArg -> destByrefTy g calledArg.CalledArgumentType)
|
||||
if isUnitTy g methodRetTy then mkRefTupledTy g outArgTys
|
||||
else mkRefTupledTy g (methodRetTy :: outArgTys)
|
||||
let methodRetTy = calledMeth.ReturnTypeAfterOutArgTupling
|
||||
unifyTypes reqdRetTy methodRetTy )))))
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Resolve IL overloading.
|
||||
//
|
||||
// This utilizes the type inference constraint solving engine in undo mode.
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
|
||||
// Assert a subtype constraint, and wrap an ErrorsFromAddingSubsumptionConstraint error around any failure
|
||||
// to allow us to report the outer types involved in the constraint
|
||||
and private SolveTypSubsumesTypWithReport (csenv:ConstraintSolverEnv) ndeep m trace cxsln ty1 ty2 =
|
||||
|
@ -2022,6 +2026,8 @@ and private SolveTypSubsumesTypWithReport (csenv:ConstraintSolverEnv) ndeep m tr
|
|||
| _ -> ErrorD (ErrorsFromAddingSubsumptionConstraint(csenv.g, csenv.DisplayEnv, ty1, ty2, res, ContextInfo.NoContext, m))
|
||||
| _ -> ErrorD (ErrorsFromAddingSubsumptionConstraint(csenv.g, csenv.DisplayEnv, ty1, ty2, res, csenv.eContextInfo, m)))
|
||||
|
||||
// ty1: actual
|
||||
// ty2: expected
|
||||
and private SolveTypEqualsTypWithReport (csenv:ConstraintSolverEnv) ndeep m trace cxsln ty1 ty2 =
|
||||
TryD (fun () -> SolveTypEqualsTypKeepAbbrevsWithCxsln csenv ndeep m trace cxsln ty1 ty2)
|
||||
(function
|
||||
|
@ -2487,14 +2493,8 @@ and ResolveOverloading
|
|||
| None -> CompleteD
|
||||
| Some _ when calledMeth.Method.IsConstructor -> CompleteD
|
||||
| Some reqdRetTy ->
|
||||
let methodRetTy =
|
||||
if isNil calledMeth.UnnamedCalledOutArgs then
|
||||
calledMeth.ReturnType
|
||||
else
|
||||
let outArgTys = calledMeth.UnnamedCalledOutArgs |> List.map (fun calledArg -> destByrefTy g calledArg.CalledArgumentType)
|
||||
if isUnitTy g calledMeth.ReturnType then mkRefTupledTy g outArgTys
|
||||
else mkRefTupledTy g (calledMeth.ReturnType :: outArgTys)
|
||||
MustUnify csenv ndeep trace cxsln reqdRetTy methodRetTy)
|
||||
let actualRetTy = calledMeth.ReturnTypeAfterOutArgTupling
|
||||
MustUnify csenv ndeep trace cxsln reqdRetTy actualRetTy)
|
||||
|
||||
| None ->
|
||||
None, errors
|
||||
|
@ -2553,8 +2553,8 @@ let EliminateConstraintsForGeneralizedTypars csenv (trace:OptionalTrace) (genera
|
|||
// No error recovery here: we do that on a per-expression basis.
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
let AddCxTypeEqualsType contextInfo denv css m ty1 ty2 =
|
||||
SolveTypEqualsTypWithReport (MakeConstraintSolverEnv contextInfo css m denv) 0 m NoTrace None ty1 ty2
|
||||
let AddCxTypeEqualsType contextInfo denv css m actual expected =
|
||||
SolveTypEqualsTypWithReport (MakeConstraintSolverEnv contextInfo css m denv) 0 m NoTrace None actual expected
|
||||
|> RaiseOperationResult
|
||||
|
||||
let UndoIfFailed f =
|
||||
|
@ -2659,7 +2659,7 @@ let CodegenWitnessThatTypSupportsTraitConstraint tcVal g amap m (traitInfo:Trait
|
|||
| Some sln ->
|
||||
match sln with
|
||||
| ILMethSln(origTy, extOpt, mref, minst) ->
|
||||
let metadataTy = helpEnsureTypeHasMetadata g origTy
|
||||
let metadataTy = convertToTypeWithMetadataIfPossible g origTy
|
||||
let tcref, _tinst = destAppTy g metadataTy
|
||||
let mdef = IL.resolveILMethodRef tcref.ILTyconRawMetadata mref
|
||||
let ilMethInfo =
|
||||
|
|
|
@ -15,7 +15,7 @@ open Microsoft.FSharp.Compiler.Lib
|
|||
// This pass has one aim.
|
||||
// - to eliminate tuples allocated at call sites (due to uncurried style)
|
||||
//
|
||||
// After PASS,
|
||||
// After PASS,
|
||||
// Private, non-top-level functions fOrig which had explicit tuples at all callsites,
|
||||
// have been replaced by transformedVal taking the individual tuple fields,
|
||||
// subject to the type of the fOrig formal permitting the split.
|
||||
|
@ -42,10 +42,10 @@ open Microsoft.FSharp.Compiler.Lib
|
|||
//
|
||||
// The COLLAPSE transform is based on answer A2...
|
||||
//
|
||||
// [[ let rec fOrig p = ... fOrig (a,b) ...
|
||||
// fOrig (x,y) ]]
|
||||
// [[ let rec fOrig p = ... fOrig (a, b) ...
|
||||
// fOrig (x, y) ]]
|
||||
// ->
|
||||
// let rec transformedVal p1 p2 = let p = p1,p2
|
||||
// let rec transformedVal p1 p2 = let p = p1, p2
|
||||
// ... (transformedVal a b) ...
|
||||
//
|
||||
// transformedVal x y
|
||||
|
@ -59,9 +59,9 @@ open Microsoft.FSharp.Compiler.Lib
|
|||
//
|
||||
// 1. Require call-pattern info about callsites of each function, e.g.
|
||||
//
|
||||
// [ (_,_) ; (_,(_,_,_)) ; _ ]
|
||||
// [ (_,_) ; (_,_) ]
|
||||
// [ (_,_) ]
|
||||
// [ (_, _) ; (_, (_, _, _)) ; _ ]
|
||||
// [ (_, _) ; (_, _) ]
|
||||
// [ (_, _) ]
|
||||
//
|
||||
// Detailing the number of arguments applied and their explicit tuple structure.
|
||||
//
|
||||
|
@ -108,14 +108,14 @@ open Microsoft.FSharp.Compiler.Lib
|
|||
//
|
||||
// [[DEFN: fOrig = LAM tps. lam x1 ...xp xq...xN. body ]]
|
||||
// ->
|
||||
// transformedVal = LAM tps. lam [[FORMALS: yb1...ybp]] xq...xN. [[REBINDS x1,yb1 ... xp,ybp]] [[FIX: body]]
|
||||
// transformedVal = LAM tps. lam [[FORMALS: yb1...ybp]] xq...xN. [[REBINDS x1, yb1 ... xp, ybp]] [[FIX: body]]
|
||||
//
|
||||
// [[FORMAL: SameArg xi]] -> xi
|
||||
// [[FORMAL: NewArgs vs]] -> [ [v1] ... [vN] ] // list up individual args for Expr.Lambda
|
||||
//
|
||||
// [[REBIND: xi , SameArg xi]] -> // no binding needed
|
||||
// [[REBIND: [u], NewArgs vs]] -> u = "rebuildTuple(cpi,vs)"
|
||||
// [[REBIND: us , NewArgs vs]] -> "rebuildTuple(cpi,vs)" then bind us to buildProjections. // for Expr.Lambda
|
||||
// [[REBIND: [u], NewArgs vs]] -> u = "rebuildTuple(cpi, vs)"
|
||||
// [[REBIND: us , NewArgs vs]] -> "rebuildTuple(cpi, vs)" then bind us to buildProjections. // for Expr.Lambda
|
||||
//
|
||||
// rebuildTuple - create tuple based on vs fringe according to cpi tuple structure.
|
||||
//
|
||||
|
@ -124,7 +124,7 @@ open Microsoft.FSharp.Compiler.Lib
|
|||
// 5. Fixup callsites.
|
||||
//
|
||||
// [[FIXCALL: APP fOrig tps args]] -> when fOrig is transformed, APP fOrig tps [[collapse args wrt cpf]]
|
||||
// otherwise, unchanged, APP fOrig tps args.
|
||||
// otherwise, unchanged, APP fOrig tps args.
|
||||
//
|
||||
// 6. Overview.
|
||||
// - pre-pass to find callPatterns.
|
||||
|
@ -148,18 +148,18 @@ open Microsoft.FSharp.Compiler.Lib
|
|||
// Merge a tyapp node and and app node.
|
||||
let (|TyappAndApp|_|) e =
|
||||
match e with
|
||||
| Expr.App (f,fty,tys,args,m) ->
|
||||
| Expr.App (f, fty, tys, args, m) ->
|
||||
match stripExpr f with
|
||||
| Expr.App(f2,fty2,tys2,[],m2) -> Some(f2,fty2,tys2 @ tys,args,m2)
|
||||
| Expr.App _ -> Some(f,fty,tys,args,m) (* has args, so not combine ty args *)
|
||||
| f -> Some(f,fty,tys,args,m)
|
||||
| Expr.App(f2, fty2, tys2, [], m2) -> Some(f2, fty2, tys2 @ tys, args, m2)
|
||||
| Expr.App _ -> Some(f, fty, tys, args, m) (* has args, so not combine ty args *)
|
||||
| f -> Some(f, fty, tys, args, m)
|
||||
| _ -> None
|
||||
//-------------------------------------------------------------------------
|
||||
// GetValsBoundInExpr
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
module GlobalUsageAnalysis =
|
||||
let bindAccBounds vals (_isInDTree,v) = Zset.add v vals
|
||||
let bindAccBounds vals (_isInDTree, v) = Zset.add v vals
|
||||
|
||||
let GetValsBoundInExpr expr =
|
||||
let folder = {ExprFolder0 with valBindingSiteIntercept = bindAccBounds}
|
||||
|
@ -181,13 +181,13 @@ module GlobalUsageAnalysis =
|
|||
/// (b) log it's binding site representation.
|
||||
type Results =
|
||||
{ /// v -> context / APP inst args
|
||||
Uses : Zmap<Val,(accessor list * TType list * Expr list) list>
|
||||
Uses : Zmap<Val, (accessor list * TType list * Expr list) list>
|
||||
/// v -> binding repr
|
||||
Defns : Zmap<Val,Expr>
|
||||
Defns : Zmap<Val, Expr>
|
||||
/// bound in a decision tree?
|
||||
DecisionTreeBindings : Zset<Val>
|
||||
/// v -> v list * recursive? -- the others in the mutual binding
|
||||
RecursiveBindings : Zmap<Val,bool * Vals>
|
||||
RecursiveBindings : Zmap<Val, bool * Vals>
|
||||
TopLevelBindings : Zset<Val>
|
||||
IterationIsAtTopLevel : bool }
|
||||
|
||||
|
@ -208,7 +208,7 @@ module GlobalUsageAnalysis =
|
|||
| None -> Zmap.add f [tup] z.Uses }
|
||||
|
||||
/// Log the definition of a binding
|
||||
let logBinding z (isInDTree,v) =
|
||||
let logBinding z (isInDTree, v) =
|
||||
let z = if isInDTree then {z with DecisionTreeBindings = Zset.add v z.DecisionTreeBindings} else z
|
||||
let z = if z.IterationIsAtTopLevel then {z with TopLevelBindings = Zset.add v z.TopLevelBindings} else z
|
||||
z
|
||||
|
@ -218,14 +218,14 @@ module GlobalUsageAnalysis =
|
|||
let logNonRecBinding z (bind:Binding) =
|
||||
let v = bind.Var
|
||||
let vs = [v]
|
||||
{z with RecursiveBindings = Zmap.add v (false,vs) z.RecursiveBindings
|
||||
{z with RecursiveBindings = Zmap.add v (false, vs) z.RecursiveBindings
|
||||
Defns = Zmap.add v bind.Expr z.Defns }
|
||||
|
||||
/// Log the definition of a recursive binding
|
||||
let logRecBindings z binds =
|
||||
let vs = valsOfBinds binds
|
||||
{z with RecursiveBindings = (z.RecursiveBindings,vs) ||> List.fold (fun mubinds v -> Zmap.add v (true,vs) mubinds)
|
||||
Defns = (z.Defns,binds) ||> List.fold (fun eqns bind -> Zmap.add bind.Var bind.Expr eqns) }
|
||||
{z with RecursiveBindings = (z.RecursiveBindings, vs) ||> List.fold (fun mubinds v -> Zmap.add v (true, vs) mubinds)
|
||||
Defns = (z.Defns, binds) ||> List.fold (fun eqns bind -> Zmap.add bind.Var bind.Expr eqns) }
|
||||
|
||||
/// Work locally under a lambda of some kind
|
||||
let foldUnderLambda f z x =
|
||||
|
@ -241,7 +241,7 @@ module GlobalUsageAnalysis =
|
|||
|
||||
// Fold expr, intercepts selected exprs.
|
||||
// "val v" - count [] callpattern of v
|
||||
// "app (f,args)" - count <args> callpattern of f
|
||||
// "app (f, args)" - count <args> callpattern of f
|
||||
//---
|
||||
// On intercepted nodes, must continue exprF fold over any subexpressions, e.g. args.
|
||||
//------
|
||||
|
@ -259,32 +259,32 @@ module GlobalUsageAnalysis =
|
|||
let exprUsageIntercept exprF z expr =
|
||||
let rec recognise context expr =
|
||||
match expr with
|
||||
| Expr.Val (v,_,_) ->
|
||||
| Expr.Val (v, _, _) ->
|
||||
// YES: count free occurrence
|
||||
let z = foldLocalVal (fun z v -> logUse v (context,[],[]) z) z v
|
||||
let z = foldLocalVal (fun z v -> logUse v (context, [], []) z) z v
|
||||
Some z
|
||||
| TyappAndApp(f,_,tys,args,_) ->
|
||||
| TyappAndApp(f, _, tys, args, _) ->
|
||||
match f with
|
||||
| Expr.Val (fOrig,_,_) ->
|
||||
| Expr.Val (fOrig, _, _) ->
|
||||
// app where function is val
|
||||
// YES: count instance/app (app when have term args), and then
|
||||
// collect from args (have intercepted this node)
|
||||
let collect z f = logUse f (context,tys,args) z
|
||||
let collect z f = logUse f (context, tys, args) z
|
||||
let z = foldLocalVal collect z fOrig
|
||||
let z = List.fold exprF z args
|
||||
Some z
|
||||
| _ ->
|
||||
// NO: app but function is not val
|
||||
None
|
||||
| Expr.Op(TOp.TupleFieldGet (tupInfo,n),ts,[x],_) when not (evalTupInfoIsStruct tupInfo) ->
|
||||
let context = TupleGet (n,ts) :: context
|
||||
| Expr.Op(TOp.TupleFieldGet (tupInfo, n), ts, [x], _) when not (evalTupInfoIsStruct tupInfo) ->
|
||||
let context = TupleGet (n, ts) :: context
|
||||
recognise context x
|
||||
|
||||
// lambdas end top-level status
|
||||
| Expr.Lambda(_id,_ctorThisValOpt,_baseValOpt,_vs,body,_,_) ->
|
||||
| Expr.Lambda(_id, _ctorThisValOpt, _baseValOpt, _vs, body, _, _) ->
|
||||
let z = foldUnderLambda exprF z body
|
||||
Some z
|
||||
| Expr.TyLambda(_id,_tps,body,_,_) ->
|
||||
| Expr.TyLambda(_id, _tps, body, _, _) ->
|
||||
let z = foldUnderLambda exprF z body
|
||||
Some z
|
||||
| _ ->
|
||||
|
@ -293,8 +293,8 @@ module GlobalUsageAnalysis =
|
|||
let context = []
|
||||
recognise context expr
|
||||
|
||||
let targetIntercept exprF z = function TTarget(_argvs,body,_) -> Some (foldUnderLambda exprF z body)
|
||||
let tmethodIntercept exprF z = function TObjExprMethod(_,_,_,_,e,_m) -> Some (foldUnderLambda exprF z e)
|
||||
let targetIntercept exprF z = function TTarget(_argvs, body, _) -> Some (foldUnderLambda exprF z body)
|
||||
let tmethodIntercept exprF z = function TObjExprMethod(_, _, _, _, e, _m) -> Some (foldUnderLambda exprF z e)
|
||||
|
||||
{ExprFolder0 with
|
||||
exprIntercept = exprUsageIntercept
|
||||
|
@ -326,7 +326,7 @@ let internalError str = raise(Failure(str))
|
|||
|
||||
let mkLocalVal m name ty topValInfo =
|
||||
let compgen = false in (* REVIEW: review: should this be true? *)
|
||||
NewVal(name,m,None,ty,Immutable,compgen,topValInfo,taccessPublic,ValNotInRecScope,None,NormalVal,[],ValInline.Optional,XmlDoc.Empty,false,false,false,false,false,false,None,ParentNone)
|
||||
NewVal(name, m, None, ty, Immutable, compgen, topValInfo, taccessPublic, ValNotInRecScope, None, NormalVal, [], ValInline.Optional, XmlDoc.Empty, false, false, false, false, false, false, None, ParentNone)
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
@ -343,21 +343,22 @@ let rec ValReprInfoForTS ts =
|
|||
| TupleTS ts -> ts |> List.collect ValReprInfoForTS
|
||||
|
||||
let rec andTS ts tsB =
|
||||
match ts,tsB with
|
||||
| _ ,UnknownTS -> UnknownTS
|
||||
| UnknownTS ,_ -> UnknownTS
|
||||
| TupleTS ss ,TupleTS ssB -> if ss.Length <> ssB.Length then UnknownTS (* different tuple instances *)
|
||||
else TupleTS (List.map2 andTS ss ssB)
|
||||
match ts, tsB with
|
||||
| _ , UnknownTS -> UnknownTS
|
||||
| UnknownTS, _ -> UnknownTS
|
||||
| TupleTS ss, TupleTS ssB ->
|
||||
if ss.Length <> ssB.Length then UnknownTS (* different tuple instances *)
|
||||
else TupleTS (List.map2 andTS ss ssB)
|
||||
|
||||
let checkTS = function
|
||||
| TupleTS [] -> internalError "exprTS: Tuple[] not expected. (units not done that way)."
|
||||
| TupleTS [_] -> internalError "exprTS: Tuple[x] not expected. (singleton tuples should not exist."
|
||||
| ts -> ts
|
||||
| TupleTS [] -> internalError "exprTS: Tuple[] not expected. (units not done that way)."
|
||||
| TupleTS [_] -> internalError "exprTS: Tuple[x] not expected. (singleton tuples should not exist."
|
||||
| ts -> ts
|
||||
|
||||
/// explicit tuple-structure in expr
|
||||
let rec uncheckedExprTS expr =
|
||||
match expr with
|
||||
| Expr.Op(TOp.Tuple tupInfo,_tys,args,_) when not (evalTupInfoIsStruct tupInfo) ->
|
||||
| Expr.Op(TOp.Tuple tupInfo, _tys, args, _) when not (evalTupInfoIsStruct tupInfo) ->
|
||||
TupleTS (List.map uncheckedExprTS args)
|
||||
| _ ->
|
||||
UnknownTS
|
||||
|
@ -374,17 +375,17 @@ let typeTS g tys = tys |> uncheckedTypeTS g |> checkTS
|
|||
|
||||
let rebuildTS g m ts vs =
|
||||
let rec rebuild vs ts =
|
||||
match vs,ts with
|
||||
| [] ,UnknownTS -> internalError "rebuildTS: not enough fringe to build tuple"
|
||||
| v::vs,UnknownTS -> (exprForVal m v,v.Type),vs
|
||||
| vs ,TupleTS tss ->
|
||||
let xtys,vs = List.mapFold rebuild vs tss
|
||||
let xs,tys = List.unzip xtys
|
||||
match vs, ts with
|
||||
| [] , UnknownTS -> internalError "rebuildTS: not enough fringe to build tuple"
|
||||
| v::vs, UnknownTS -> (exprForVal m v, v.Type), vs
|
||||
| vs , TupleTS tss ->
|
||||
let xtys, vs = List.mapFold rebuild vs tss
|
||||
let xs, tys = List.unzip xtys
|
||||
let x = mkRefTupled g m xs tys
|
||||
let ty = mkRefTupledTy g tys
|
||||
(x,ty),vs
|
||||
(x, ty), vs
|
||||
|
||||
let (x,_ty),vs = rebuild vs ts
|
||||
let (x, _ty), vs = rebuild vs ts
|
||||
if vs.Length <> 0 then internalError "rebuildTS: had more fringe vars than fringe. REPORT BUG"
|
||||
x
|
||||
|
||||
|
@ -411,15 +412,15 @@ let rec minimalCallPattern callPattern =
|
|||
/// Combines a list of callpatterns into one common callpattern.
|
||||
let commonCallPattern callPatterns =
|
||||
let rec andCPs cpA cpB =
|
||||
match cpA,cpB with
|
||||
| [] ,[] -> []
|
||||
| tsA::tsAs,tsB::tsBs -> andTS tsA tsB :: andCPs tsAs tsBs
|
||||
| _tsA::_tsAs,[] -> [] (* now trim to shortest - UnknownTS :: andCPs tsAs [] *)
|
||||
| [] ,_tsB::_tsBs -> [] (* now trim to shortest - UnknownTS :: andCPs [] tsBs *)
|
||||
match cpA, cpB with
|
||||
| [] , [] -> []
|
||||
| tsA::tsAs, tsB::tsBs -> andTS tsA tsB :: andCPs tsAs tsBs
|
||||
| _tsA::_tsAs, [] -> [] (* now trim to shortest - UnknownTS :: andCPs tsAs [] *)
|
||||
| [] , _tsB::_tsBs -> [] (* now trim to shortest - UnknownTS :: andCPs [] tsBs *)
|
||||
|
||||
List.reduce andCPs callPatterns
|
||||
|
||||
let siteCP (_accessors,_inst,args) = argsCP args
|
||||
let siteCP (_accessors, _inst, args) = argsCP args
|
||||
let sitesCPs sites = List.map siteCP sites
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
@ -450,10 +451,10 @@ type Transform =
|
|||
// transform - mkTransform - decided, create necessary stuff
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
let mkTransform g (f:Val) m tps x1Ntys rty (callPattern,tyfringes: (TType list * Val list) list) =
|
||||
let mkTransform g (f:Val) m tps x1Ntys rty (callPattern, tyfringes: (TType list * Val list) list) =
|
||||
// Create formal choices for x1...xp under callPattern
|
||||
let transformedFormals =
|
||||
(callPattern,tyfringes) ||> List.map2 (fun cpi (tyfringe,vs) ->
|
||||
(callPattern, tyfringes) ||> List.map2 (fun cpi (tyfringe, vs) ->
|
||||
match cpi with
|
||||
| UnknownTS -> SameArg
|
||||
| TupleTS [] -> SameArg
|
||||
|
@ -469,20 +470,20 @@ let mkTransform g (f:Val) m tps x1Ntys rty (callPattern,tyfringes: (TType list *
|
|||
let name = baseName + string i
|
||||
mkCompGenLocal baseRange name ty |> fst)
|
||||
|
||||
NewArgs (vs,rebuildTS g m cpi vs))
|
||||
NewArgs (vs, rebuildTS g m cpi vs))
|
||||
|
||||
// Create transformedVal replacement for f
|
||||
// Mark the arity of the value
|
||||
let topValInfo =
|
||||
match f.ValReprInfo with
|
||||
| None -> None
|
||||
| _ -> Some(ValReprInfo (ValReprInfo.InferTyparInfo tps,List.collect ValReprInfoForTS callPattern,ValReprInfo.unnamedRetVal))
|
||||
| _ -> Some(ValReprInfo (ValReprInfo.InferTyparInfo tps, List.collect ValReprInfoForTS callPattern, ValReprInfo.unnamedRetVal))
|
||||
(* type(transformedVal) tyfringes types replace initial arg types of f *)
|
||||
let tys1r = List.collect fst tyfringes (* types for collapsed initial r args *)
|
||||
let tysrN = List.drop tyfringes.Length x1Ntys (* types for remaining args *)
|
||||
let argtys = tys1r @ tysrN
|
||||
let fCty = mkLambdaTy tps argtys rty
|
||||
let transformedVal = mkLocalVal f.Range (globalNng.FreshCompilerGeneratedName (f.LogicalName,f.Range)) fCty topValInfo
|
||||
let transformedVal = mkLocalVal f.Range (globalNng.FreshCompilerGeneratedName (f.LogicalName, f.Range)) fCty topValInfo
|
||||
{ transformCallPattern = callPattern
|
||||
transformedFormals = transformedFormals
|
||||
transformedVal = transformedVal }
|
||||
|
@ -500,18 +501,18 @@ let zipCallPatternArgTys m g (callPattern : TupleStructure list) (vss : Val list
|
|||
match ts with
|
||||
| TupleTS tss when isRefTupleTy g typ ->
|
||||
let tys = destRefTupleTy g typ
|
||||
let tss,tyfringe = zipTSListTypList tss tys
|
||||
TupleTS tss,tyfringe
|
||||
let tss, tyfringe = zipTSListTypList tss tys
|
||||
TupleTS tss, tyfringe
|
||||
| _ ->
|
||||
UnknownTS,[typ] (* trim back CallPattern, function more general *)
|
||||
UnknownTS, [typ] (* trim back CallPattern, function more general *)
|
||||
and zipTSListTypList tss tys =
|
||||
let tstys = List.map2 zipTSTyp tss tys // assumes tss tys same length
|
||||
let tss = List.map fst tstys
|
||||
let tys = List.collect snd tstys // link fringes
|
||||
tss,tys
|
||||
tss, tys
|
||||
|
||||
let vss = List.take callPattern.Length vss // drop excessive tys if callPattern shorter
|
||||
let tstys = List.map2 (fun ts vs -> let ts,tyfringe = zipTSTyp ts (typeOfLambdaArg m vs) in ts,(tyfringe,vs)) callPattern vss
|
||||
let tstys = List.map2 (fun ts vs -> let ts, tyfringe = zipTSTyp ts (typeOfLambdaArg m vs) in ts, (tyfringe, vs)) callPattern vss
|
||||
List.unzip tstys
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
@ -525,10 +526,10 @@ let zipCallPatternArgTys m g (callPattern : TupleStructure list) (vss : Val list
|
|||
let decideFormalSuggestedCP g z tys vss =
|
||||
|
||||
let rec trimTsByAccess accessors ts =
|
||||
match ts,accessors with
|
||||
| UnknownTS ,_ -> UnknownTS
|
||||
| TupleTS _tss,[] -> UnknownTS (* trim it, require the val at this point *)
|
||||
| TupleTS tss,TupleGet (i,_ty)::accessors ->
|
||||
match ts, accessors with
|
||||
| UnknownTS , _ -> UnknownTS
|
||||
| TupleTS _tss, [] -> UnknownTS (* trim it, require the val at this point *)
|
||||
| TupleTS tss, TupleGet (i, _ty)::accessors ->
|
||||
let tss = List.mapNth i (trimTsByAccess accessors) tss
|
||||
TupleTS tss
|
||||
|
||||
|
@ -536,7 +537,7 @@ let decideFormalSuggestedCP g z tys vss =
|
|||
match Zmap.tryFind v z.Uses with
|
||||
| None -> UnknownTS (* formal has no usage info, it is unused *)
|
||||
| Some sites ->
|
||||
let trim ts (accessors,_inst,_args) = trimTsByAccess accessors ts
|
||||
let trim ts (accessors, _inst, _args) = trimTsByAccess accessors ts
|
||||
List.fold trim ts sites
|
||||
|
||||
let trimTsByFormal z ts vss =
|
||||
|
@ -555,7 +556,7 @@ let decideFormalSuggestedCP g z tys vss =
|
|||
// transform - decideTransform
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
let decideTransform g z v callPatterns (m,tps,vss:Val list list,rty) =
|
||||
let decideTransform g z v callPatterns (m, tps, vss:Val list list, rty) =
|
||||
let tys = List.map (typeOfLambdaArg m) vss (* arg types *)
|
||||
(* NOTE: 'a in arg types may have been instanced at different tuples... *)
|
||||
(* commonCallPattern has to handle those cases. *)
|
||||
|
@ -565,7 +566,7 @@ let decideTransform g z v callPatterns (m,tps,vss:Val list list,rty) =
|
|||
let formalCallPattern = decideFormalSuggestedCP g z tys vss
|
||||
let callPattern = List.take callPattern.Length formalCallPattern
|
||||
// Zip with information about known args
|
||||
let callPattern,tyfringes = zipCallPatternArgTys m g callPattern vss
|
||||
let callPattern, tyfringes = zipCallPatternArgTys m g callPattern vss
|
||||
// Drop trivial tail AND
|
||||
let callPattern = minimalCallPattern callPattern
|
||||
// Shorten tyfringes (zippable)
|
||||
|
@ -573,7 +574,7 @@ let decideTransform g z v callPatterns (m,tps,vss:Val list list,rty) =
|
|||
if isTrivialCP callPattern then
|
||||
None // no transform
|
||||
else
|
||||
Some (v,mkTransform g v m tps tys rty (callPattern,tyfringes))
|
||||
Some (v, mkTransform g v m tps tys rty (callPattern, tyfringes))
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
@ -600,13 +601,13 @@ let determineTransforms g (z : GlobalUsageAnalysis.Results) =
|
|||
match Zmap.tryFind f z.Defns with
|
||||
| None -> None // no binding site, so no transform
|
||||
| Some e ->
|
||||
let tps,vss,_b,rty = stripTopLambda (e,f.Type)
|
||||
let tps, vss, _b, rty = stripTopLambda (e, f.Type)
|
||||
match List.concat vss with
|
||||
| [] -> None // defn has no term args
|
||||
| arg1::_ -> // consider f
|
||||
let m = arg1.Range // mark of first arg, mostly for error reporting
|
||||
let callPatterns = sitesCPs sites // callPatterns from sites
|
||||
decideTransform g z f callPatterns (m,tps,vss,rty) // make transform (if required)
|
||||
decideTransform g z f callPatterns (m, tps, vss, rty) // make transform (if required)
|
||||
|
||||
let vtransforms = Zmap.chooseL selectTransform z.Uses
|
||||
let vtransforms = Zmap.ofList valOrder vtransforms
|
||||
|
@ -620,7 +621,7 @@ let determineTransforms g (z : GlobalUsageAnalysis.Results) =
|
|||
|
||||
type penv =
|
||||
{ // The planned transforms
|
||||
transforms : Zmap<Val,Transform>
|
||||
transforms : Zmap<Val, Transform>
|
||||
ccu : CcuThunk
|
||||
g : TcGlobals }
|
||||
|
||||
|
@ -652,57 +653,57 @@ let newLocalN env i ty = mkCompGenLocal env.m (env.prefix + string i) ty
|
|||
|
||||
let noEffectExpr env bindings x =
|
||||
match x with
|
||||
| Expr.Val (_v,_,_m) -> bindings,x
|
||||
| Expr.Val (_v, _, _m) -> bindings, x
|
||||
| x ->
|
||||
let tmp,xtmp = newLocal env (tyOfExpr env.eg x)
|
||||
let tmp, xtmp = newLocal env (tyOfExpr env.eg x)
|
||||
let bind = mkCompGenBind tmp x
|
||||
push bind bindings,xtmp
|
||||
push bind bindings, xtmp
|
||||
|
||||
// Given 'e', build
|
||||
// let v1 = e#1
|
||||
// let v2 = e#N
|
||||
let buildProjections env bindings x xtys =
|
||||
|
||||
let binds,vixs =
|
||||
let binds, vixs =
|
||||
xtys
|
||||
|> List.mapi (fun i xty ->
|
||||
let vi,vix = newLocalN env i xty
|
||||
let bind = mkBind NoSequencePointAtInvisibleBinding vi (mkTupleFieldGet env.eg (tupInfoRef,x,xtys,i,env.m))
|
||||
bind,vix)
|
||||
let vi, vix = newLocalN env i xty
|
||||
let bind = mkBind NoSequencePointAtInvisibleBinding vi (mkTupleFieldGet env.eg (tupInfoRef, x, xtys, i, env.m))
|
||||
bind, vix)
|
||||
|> List.unzip
|
||||
|
||||
// Why are we reversing here? Because we end up reversing once more later
|
||||
let bindings = pushL (List.rev binds) bindings
|
||||
bindings,vixs
|
||||
bindings, vixs
|
||||
|
||||
let rec collapseArg env bindings ts (x:Expr) =
|
||||
let m = x.Range
|
||||
let env = rangeE env m
|
||||
match ts,x with
|
||||
| UnknownTS ,x ->
|
||||
let bindings,vx = noEffectExpr env bindings x
|
||||
bindings,[vx]
|
||||
| TupleTS tss,Expr.Op(TOp.Tuple tupInfo,_xtys,xs,_) when not (evalTupInfoIsStruct tupInfo) ->
|
||||
match ts, x with
|
||||
| UnknownTS , x ->
|
||||
let bindings, vx = noEffectExpr env bindings x
|
||||
bindings, [vx]
|
||||
| TupleTS tss, Expr.Op(TOp.Tuple tupInfo, _xtys, xs, _) when not (evalTupInfoIsStruct tupInfo) ->
|
||||
let env = suffixE env "'"
|
||||
collapseArgs env bindings 1 tss xs
|
||||
| TupleTS tss,x ->
|
||||
| TupleTS tss, x ->
|
||||
// project components
|
||||
let bindings,x = noEffectExpr env bindings x
|
||||
let bindings, x = noEffectExpr env bindings x
|
||||
let env = suffixE env "_p"
|
||||
let xty = tyOfExpr env.eg x
|
||||
let xtys = destRefTupleTy env.eg xty
|
||||
let bindings,xs = buildProjections env bindings x xtys
|
||||
let bindings, xs = buildProjections env bindings x xtys
|
||||
collapseArg env bindings (TupleTS tss) (mkRefTupled env.eg m xs xtys)
|
||||
|
||||
and collapseArgs env bindings n (callPattern) args =
|
||||
match callPattern,args with
|
||||
| [] ,args -> bindings,args
|
||||
| ts::tss,arg::args ->
|
||||
match callPattern, args with
|
||||
| [] , args -> bindings, args
|
||||
| ts::tss, arg::args ->
|
||||
let env1 = suffixE env (string n)
|
||||
let bindings,xty = collapseArg env1 bindings ts arg
|
||||
let bindings,xtys = collapseArgs env bindings (n+1) tss args
|
||||
bindings,xty @ xtys
|
||||
| _ts::_tss,[] ->
|
||||
let bindings, xty = collapseArg env1 bindings ts arg
|
||||
let bindings, xtys = collapseArgs env bindings (n+1) tss args
|
||||
bindings, xty @ xtys
|
||||
| _ts::_tss, [] ->
|
||||
internalError "collapseArgs: CallPattern longer than callsite args. REPORT BUG"
|
||||
|
||||
|
||||
|
@ -712,13 +713,13 @@ and collapseArgs env bindings n (callPattern) args =
|
|||
|
||||
// REVIEW: use mkLet etc.
|
||||
let mkLets binds (body:Expr) =
|
||||
(binds,body) ||> List.foldBack (fun b acc -> mkLetBind acc.Range b acc)
|
||||
(binds, body) ||> List.foldBack (fun b acc -> mkLetBind acc.Range b acc)
|
||||
|
||||
let fixupApp (penv:penv) (fx,fty,tys,args,m) =
|
||||
let fixupApp (penv:penv) (fx, fty, tys, args, m) =
|
||||
|
||||
// Is it a val app, where the val has a transform?
|
||||
match fx with
|
||||
| Expr.Val (vref,_,m) ->
|
||||
| Expr.Val (vref, _, m) ->
|
||||
let f = vref.Deref
|
||||
match hasTransfrom penv f with
|
||||
| Some trans ->
|
||||
|
@ -730,13 +731,13 @@ let fixupApp (penv:penv) (fx,fty,tys,args,m) =
|
|||
(* [[f tps args ]] -> transformedVal tps [[COLLAPSED: args]] *)
|
||||
let env = {prefix = "arg";m = m;eg=penv.g}
|
||||
let bindings = []
|
||||
let bindings,args = collapseArgs env bindings 0 callPattern args
|
||||
let bindings, args = collapseArgs env bindings 0 callPattern args
|
||||
let bindings = List.rev bindings
|
||||
mkLets bindings (Expr.App (fCx,fCty,tys,args,m))
|
||||
mkLets bindings (Expr.App (fCx, fCty, tys, args, m))
|
||||
| None ->
|
||||
Expr.App (fx,fty,tys,args,m) (* no change, f untransformed val *)
|
||||
Expr.App (fx, fty, tys, args, m) (* no change, f untransformed val *)
|
||||
| _ ->
|
||||
Expr.App (fx,fty,tys,args,m) (* no change, f is expr *)
|
||||
Expr.App (fx, fty, tys, args, m) (* no change, f is expr *)
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
@ -746,20 +747,20 @@ let fixupApp (penv:penv) (fx,fty,tys,args,m) =
|
|||
let transFormal ybi xi =
|
||||
match ybi with
|
||||
| SameArg -> [xi] // one arg - where arg=vpsecs
|
||||
| NewArgs (vs,_x) -> vs |> List.map List.singleton // many args
|
||||
| NewArgs (vs, _x) -> vs |> List.map List.singleton // many args
|
||||
|
||||
let transRebind ybi xi =
|
||||
match xi,ybi with
|
||||
| _ ,SameArg -> [] (* no rebinding, reused original formal *)
|
||||
| [u],NewArgs (_vs,x) -> [mkCompGenBind u x]
|
||||
| us ,NewArgs (_vs,x) -> List.map2 mkCompGenBind us (tryDestRefTupleExpr x)
|
||||
match xi, ybi with
|
||||
| _ , SameArg -> [] (* no rebinding, reused original formal *)
|
||||
| [u], NewArgs (_vs, x) -> [mkCompGenBind u x]
|
||||
| us , NewArgs (_vs, x) -> List.map2 mkCompGenBind us (tryDestRefTupleExpr x)
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// pass - mubinds
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
// Foreach (f,repr) where
|
||||
// Foreach (f, repr) where
|
||||
// If f has trans, then
|
||||
// repr = LAM tps. lam x1...xN . body
|
||||
//
|
||||
|
@ -767,13 +768,13 @@ let transRebind ybi xi =
|
|||
//
|
||||
// New binding:
|
||||
//
|
||||
// transformedVal = LAM tps. lam [[FORMALS: yb1 ... ybp]] xq...xN = let [[REBINDS: x1,yb1 ...]]
|
||||
// transformedVal = LAM tps. lam [[FORMALS: yb1 ... ybp]] xq...xN = let [[REBINDS: x1, yb1 ...]]
|
||||
// body
|
||||
//
|
||||
// Does not fix calls/defns in binding rhs, that is done by caller.
|
||||
//
|
||||
|
||||
let passBind penv (TBind(fOrig,repr,letSeqPtOpt) as bind) =
|
||||
let passBind penv (TBind(fOrig, repr, letSeqPtOpt) as bind) =
|
||||
let m = fOrig.Range
|
||||
match hasTransfrom penv fOrig with
|
||||
| None ->
|
||||
|
@ -781,7 +782,7 @@ let passBind penv (TBind(fOrig,repr,letSeqPtOpt) as bind) =
|
|||
bind
|
||||
| Some trans ->
|
||||
// fOrig has transform
|
||||
let tps,vss,body,rty = stripTopLambda (repr,fOrig.Type)
|
||||
let tps, vss, body, rty = stripTopLambda (repr, fOrig.Type)
|
||||
// transformedVal is curried version of fOrig
|
||||
let transformedVal = trans.transformedVal
|
||||
// fCBody - parts - formals
|
||||
|
@ -796,8 +797,8 @@ let passBind penv (TBind(fOrig,repr,letSeqPtOpt) as bind) =
|
|||
let rebinds = List.concat (List.map2 transRebind transformedFormals x1ps)
|
||||
// fCBody - rebuild
|
||||
// fCBody = TLambda tps. Lam formals. let rebinds in body
|
||||
let rbody,rt = mkLetsBind m rebinds body,rty
|
||||
let bind = mkMultiLambdaBind transformedVal letSeqPtOpt m tps formals (rbody,rt)
|
||||
let rbody, rt = mkLetsBind m rebinds body, rty
|
||||
let bind = mkMultiLambdaBind transformedVal letSeqPtOpt m tps formals (rbody, rt)
|
||||
// result
|
||||
bind
|
||||
|
||||
|
@ -814,37 +815,37 @@ let passBinds penv binds = binds |> List.map (passBind penv)
|
|||
// 3. run pass over following code.
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
let passBindRhs conv (TBind (v,repr,letSeqPtOpt)) = TBind(v,conv repr,letSeqPtOpt)
|
||||
let passBindRhs conv (TBind (v, repr, letSeqPtOpt)) = TBind(v, conv repr, letSeqPtOpt)
|
||||
|
||||
let preInterceptExpr (penv:penv) conv expr =
|
||||
match expr with
|
||||
| Expr.LetRec (binds,e,m,_) ->
|
||||
| Expr.LetRec (binds, e, m, _) ->
|
||||
let binds = List.map (passBindRhs conv) binds
|
||||
let binds = passBinds penv binds
|
||||
Some (mkLetRecBinds m binds (conv e))
|
||||
| Expr.Let (bind,e,m,_) ->
|
||||
| Expr.Let (bind, e, m, _) ->
|
||||
let bind = passBindRhs conv bind
|
||||
let bind = passBind penv bind
|
||||
Some (mkLetBind m bind (conv e))
|
||||
| TyappAndApp(f,fty,tys,args,m) ->
|
||||
| TyappAndApp(f, fty, tys, args, m) ->
|
||||
// match app, and fixup if needed
|
||||
let args = List.map conv args
|
||||
let f = conv f
|
||||
Some (fixupApp penv (f,fty,tys,args,m) )
|
||||
Some (fixupApp penv (f, fty, tys, args, m) )
|
||||
| _ -> None
|
||||
|
||||
|
||||
let postTransformExpr (penv:penv) expr =
|
||||
match expr with
|
||||
| Expr.LetRec (binds,e,m,_) ->
|
||||
| Expr.LetRec (binds, e, m, _) ->
|
||||
let binds = passBinds penv binds
|
||||
Some (mkLetRecBinds m binds e)
|
||||
| Expr.Let (bind,e,m,_) ->
|
||||
| Expr.Let (bind, e, m, _) ->
|
||||
let bind = passBind penv bind
|
||||
Some (mkLetBind m bind e)
|
||||
| TyappAndApp(f,fty,tys,args,m) ->
|
||||
| TyappAndApp(f, fty, tys, args, m) ->
|
||||
// match app, and fixup if needed
|
||||
Some (fixupApp penv (f,fty,tys,args,m) )
|
||||
Some (fixupApp penv (f, fty, tys, args, m) )
|
||||
| _ -> None
|
||||
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ arrayElementHasWrongType,"All elements of an array constructor expression must h
|
|||
missingElseBranch,"The 'if' expression is missing an 'else' branch. The 'then' branch has type '%s'. Because 'if' is an expression, and not a statement, add an 'else' branch which returns a value of the same type."
|
||||
ifExpression,"The 'if' expression needs to have type '%s' to satisfy context type requirements. It currently has type '%s'."
|
||||
elseBranchHasWrongType,"All branches of an 'if' expression must have the same type. This expression was expected to have type '%s', but here has type '%s'."
|
||||
followingPatternMatchClauseHasWrongType,"All branches of a pattern match expression must have the same type. This expression was expected to have type '%s', but here has type '%s'."
|
||||
followingPatternMatchClauseHasWrongType,"All branches of a pattern match expression must return values of the same type. The first branch returned a value of type '%s', but this branch returned a value of type '%s'."
|
||||
patternMatchGuardIsNotBool,"A pattern match guard must be of type 'bool', but this 'when' expression is of type '%s'."
|
||||
commaInsteadOfSemicolonInRecord,"A ';' is used to separate field values in records. Consider replacing ',' with ';'."
|
||||
derefInsteadOfNot,"The '!' operator is used to dereference a ref cell. Consider using 'not expr' here."
|
||||
|
@ -83,7 +83,7 @@ tastTypeHasAssemblyCodeRepresentation,"The type '%s' has an inline assembly code
|
|||
253,tastInvalidFormForPropertyGetter,"Invalid form for a property getter. At least one '()' argument is required when using the explicit syntax."
|
||||
254,tastInvalidFormForPropertySetter,"Invalid form for a property setter. At least one argument is required."
|
||||
255,tastUnexpectedByRef,"Unexpected use of a byref-typed variable"
|
||||
256,tastValueMustBeLocalAndMutable,"A value must be mutable in order to mutate the contents or take the address of a value type, e.g. 'let mutable x = ...'"
|
||||
256,tastValueMustBeMutable,"A value must be mutable in order to mutate the contents or take the address of a value type, e.g. 'let mutable x = ...'"
|
||||
257,tastInvalidMutationOfConstant,"Invalid mutation of a constant expression. Consider copying the expression to a mutable local, e.g. 'let mutable x = ...'."
|
||||
tastValueHasBeenCopied,"The value has been copied to ensure the original is not mutated by this operation or because the copy is implicit when returning a struct from a member and another member is then accessed"
|
||||
259,tastRecursiveValuesMayNotBeInConstructionOfTuple,"Recursively defined values cannot appear directly as part of the construction of a tuple value within a recursive binding"
|
||||
|
@ -1376,6 +1376,7 @@ keywordDescriptionLazy,"Used to specify a computation that is to be performed on
|
|||
keywordDescriptionLet,"Used to associate, or bind, a name to a value or function."
|
||||
keywordDescriptionLetBang,"Used in asynchronous workflows to bind a name to the result of an asynchronous computation, or, in other computation expressions, used to bind a name to a result, which is of the computation type."
|
||||
keywordDescriptionMatch,"Used to branch by comparing a value to a pattern."
|
||||
keywordDescriptionMatchBang,"Used in computation expressions to pattern match directly over the result of another computation expression."
|
||||
keywordDescriptionMember,"Used to declare a property or method in an object type."
|
||||
keywordDescriptionModule,"Used to associate a name with a group of related types, values, and functions, to logically separate it from other code."
|
||||
keywordDescriptionMutable,"Used to declare a variable, that is, a value that can be changed."
|
||||
|
|
|
@ -600,6 +600,9 @@
|
|||
<data name="Parser.TOKEN.MATCH" xml:space="preserve">
|
||||
<value>keyword 'match'</value>
|
||||
</data>
|
||||
<data name="Parser.TOKEN.MATCH.BANG" xml:space="preserve">
|
||||
<value>keyword 'match!'</value>
|
||||
</data>
|
||||
<data name="Parser.TOKEN.MUTABLE" xml:space="preserve">
|
||||
<value>keyword 'mutable'</value>
|
||||
</data>
|
||||
|
|
|
@ -59,6 +59,9 @@
|
|||
<Reference Include="Microsoft.Build.Tasks.Core, Version=$(VisualStudioVersion).0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<HintPath>$(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Tasks.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="FSharp.Data.TypeProviders.dll, Version=4.3.0.0">
|
||||
<HintPath>$(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Type.Providers.Redist.$(MicrosoftVisualFSharpTypeProvidersRedistPackageVersion)\content\4.3.0.0\FSharp.Data.TypeProviders.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(TargetDotnetProfile)' != 'coreclr' AND '$(MonoPackaging)' == 'true' ">
|
||||
<Reference Include="Microsoft.Build.Framework, Version=$(MonoPackagingMSBuildVersionFull), Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
|
|
|
@ -32,14 +32,11 @@ WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and
|
|||
<PropertyGroup>
|
||||
<EnableDefaultCompileItems Condition=" '$(EnableDefaultCompileItems)' == '' ">false</EnableDefaultCompileItems> <!--- Do not glob F# source files -->
|
||||
<EnableDefaultNoneItems Condition=" '$(EnableDefaultNoneItems)' == '' ">false</EnableDefaultNoneItems>
|
||||
<DefaultValueTuplePackageVersion>4.3.1</DefaultValueTuplePackageVersion>
|
||||
<DefaultFSharpPackageVersion>4.3.4</DefaultFSharpPackageVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<DefaultProjectTypeGuid Condition=" '$(DefaultProjectTypeGuid)' == '' ">{F2A71F9B-5D33-465A-A702-920D77279786}</DefaultProjectTypeGuid> <!-- F# project type -->
|
||||
<Prefer32Bit Condition="'$(Prefer32Bit)' == '' ">false</Prefer32Bit>
|
||||
<Tailcalls Condition="'$(Tailcalls)' == '' ">true</Tailcalls>
|
||||
<TreatWarningsAsErrors Condition="'$(TreatWarningsAsErrors)' == '' ">false</TreatWarningsAsErrors>
|
||||
<WarningLevel Condition=" '$(WarningLevel)' == '' ">3</WarningLevel>
|
||||
<WarningsAsErrors Condition="'$(WarningsAsErrors)' == '' " />
|
||||
|
@ -49,11 +46,13 @@ WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and
|
|||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<DebugSymbols Condition="'$(DebugSymbols)' == '' ">true</DebugSymbols>
|
||||
<Optimize Condition="'$(Optimize)' == '' ">false</Optimize>
|
||||
<Tailcalls Condition="'$(Tailcalls)' == '' ">false</Tailcalls>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||
<DebugSymbols Condition="'$(DebugSymbols)' == '' ">false</DebugSymbols>
|
||||
<Optimize Condition="'$(Optimize)' == '' ">true</Optimize>
|
||||
<Tailcalls Condition="'$(Tailcalls)' == '' ">true</Tailcalls>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(OS)' != 'Unix' and Exists('$(MSBuildThisFileDirectory)\RunFsc.cmd')" >
|
||||
|
@ -66,14 +65,35 @@ WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and
|
|||
<FscToolExe Condition="'$(OS)' == 'Unix' and '$(FscToolExe)' == ''">RunFsc.sh</FscToolExe>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="System.ValueTuple" Version="$(DefaultValueTuplePackageVersion)" >
|
||||
<DefaultInclude>true</DefaultInclude>
|
||||
</PackageReference>
|
||||
<ItemGroup Condition="'$(DisableImplicitSystemValueTupleReference)' != 'true'
|
||||
and ('$(TargetFrameworkIdentifier)' == '.NETStandard' or '$(TargetFrameworkIdentifier)' == '.NETCoreApp')
|
||||
and !('$(_TargetFrameworkVersionWithoutV)' >= '2.0' )">
|
||||
<PackageReference Include="System.ValueTuple" Version="$(ValueTupleImplicitPackageVersion)" />
|
||||
</ItemGroup>
|
||||
|
||||
<PackageReference Include="FSharp.Core" Version="$(DefaultFSharpPackageVersion)">
|
||||
<DefaultInclude>true</DefaultInclude>
|
||||
</PackageReference>
|
||||
<PropertyGroup>
|
||||
<DefaultValueTuplePackageVersion>4.3.1</DefaultValueTuplePackageVersion>
|
||||
<DefaultFSharpCorePackageVersion>4.3.4</DefaultFSharpCorePackageVersion>
|
||||
<ValueTupleImplicitPackageVersion>$(DefaultValueTuplePackageVersion)</ValueTupleImplicitPackageVersion>
|
||||
<FSharpCoreImplicitPackageVersion>$(DefaultFSharpCorePackageVersion)</FSharpCoreImplicitPackageVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup Condition="'$(DisableImplicitSystemValueTupleReference)' != 'true'
|
||||
and ('$(TargetFrameworkIdentifier)' == '.NETFramework'
|
||||
and ('$(_TargetFrameworkVersionWithoutV)' == ''
|
||||
or '$(_TargetFrameworkVersionWithoutV)' == '4.0' or
|
||||
'$(_TargetFrameworkVersionWithoutV)' == '4.5' or
|
||||
'$(_TargetFrameworkVersionWithoutV)' == '4.5.1' or
|
||||
'$(_TargetFrameworkVersionWithoutV)' == '4.5.2' or
|
||||
'$(_TargetFrameworkVersionWithoutV)' == '4.6' or
|
||||
'$(_TargetFrameworkVersionWithoutV)' == '4.6.1' or
|
||||
'$(_TargetFrameworkVersionWithoutV)' == '4.6.2' or
|
||||
'$(_TargetFrameworkVersionWithoutV)' == '4.7')) ">
|
||||
<PackageReference Include="System.ValueTuple" Version="$(ValueTupleImplicitPackageVersion)" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(DisableImplicitFSharpCoreReference)' != 'true'">
|
||||
<PackageReference Include="FSharp.Core" Version="$(FSharpCoreImplicitPackageVersion)" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче