This commit is contained in:
Don Syme 2018-06-01 18:45:11 +01:00
Родитель ddb3ca87ec 953c3c6186
Коммит f3e3fe0d3c
1722 изменённых файлов: 57688 добавлений и 9355 удалений

1
.gitignore поставляемый
Просмотреть файл

@ -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

Просмотреть файл

@ -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" />

2
fcs/FSharp.Compiler.Service/.gitignore поставляемый Normal file
Просмотреть файл

@ -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>

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -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>

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше