diff --git a/FSharp.Profiles.props b/FSharp.Profiles.props index c9e761c997a..65cfa205e64 100644 --- a/FSharp.Profiles.props +++ b/FSharp.Profiles.props @@ -5,16 +5,12 @@ $(DefineConstants);CROSS_PLATFORM_COMPILER $(DefineConstants);ENABLE_MONO_SUPPORT - $(DefineConstants);BE_SECURITY_TRANSPARENT $(DefineConstants);NETSTANDARD $(DefineConstants);FX_NO_APP_DOMAINS $(DefineConstants);FX_NO_CORHOST_SIGNER - $(DefineConstants);FX_NO_EVENTWAITHANDLE_IDISPOSABLE - $(DefineConstants);FX_NO_EXIT_CONTEXT_FLAGS - $(DefineConstants);FX_NO_PARAMETERIZED_THREAD_START $(DefineConstants);FX_NO_PDB_READER $(DefineConstants);FX_NO_PDB_WRITER $(DefineConstants);FX_NO_SYMBOLSTORE diff --git a/NuGet.config b/NuGet.config index ef069a5bdf3..26edd0d796c 100644 --- a/NuGet.config +++ b/NuGet.config @@ -7,6 +7,7 @@ + diff --git a/azure-pipelines.yml b/azure-pipelines.yml index cd106ffbc2f..ba0daf34b56 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -340,6 +340,6 @@ stages: - template: eng/release/insert-into-vs.yml parameters: componentBranchName: refs/heads/release/dev16.4 - insertTargetBranch: master + insertTargetBranch: rel/d16.4 insertTeamEmail: fsharpteam@microsoft.com insertTeamName: 'F#' diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 0288911f9e9..6e4ca65dcf2 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,9 +3,9 @@ - + https://github.com/dotnet/arcade - 9d34fd008e754e1ada35c8b6bc3694e7a90b4ed7 + 64e95735b49d37b6cf908cfa5228ff65bee6dfff diff --git a/eng/Versions.props b/eng/Versions.props index caa59fe65ea..c68c646708e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -23,14 +23,14 @@ $(FSCorePackageVersion)-$(PreReleaseVersionLabel).* - 10.6 + 10.7 $(FSPackageMajorVersion).0 $(FSPackageVersion) $(FSPackageVersion).0 16 - 3 + 4 $(VSMajorVersion).0 $(VSMajorVersion).$(VSMinorVersion).0 $(VSAssemblyVersionPrefix).0 @@ -74,7 +74,7 @@ 4.3.0 4.3.0 4.3.0 - 4.5.2 + 4.5.3 4.3.0 4.3.0 4.3.0 @@ -89,6 +89,7 @@ 4.3.0 4.3.0 4.3.0 + 4.11.0 4.3.0 4.3.0 4.5.0 @@ -102,7 +103,7 @@ 2.0.17 $(RoslynVersion) - 16.0.461 + 16.4 $(MicrosoftBuildOverallPackagesVersion) $(MicrosoftBuildOverallPackagesVersion) $(MicrosoftBuildOverallPackagesVersion) @@ -155,7 +156,7 @@ 16.1.28917.181 15.3.58 9.0.30729 - 16.0.2264 + 16.3.2099 12.0.4 7.0.4 8.0.4 diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1 index 6662e4bc1ec..a5a1e711d79 100644 --- a/eng/common/SetupNugetSources.ps1 +++ b/eng/common/SetupNugetSources.ps1 @@ -16,7 +16,7 @@ # condition: eq(variables['Agent.OS'], 'Windows_NT') # inputs: # filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1 -# arguments: -ConfigFile ${Env:BUILD_SOURCESDIRECTORY}/NuGet.config -Password $Env:Token +# arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token # env: # Token: $(dn-bot-dnceng-artifact-feeds-rw) @@ -94,41 +94,48 @@ function InsertMaestroPrivateFeedCredentials($Sources, $Creds, $Password) { } } -try { - if (!(Test-Path $ConfigFile -PathType Leaf)) { - Write-PipelineTelemetryError -Category 'Build' -Message "Couldn't find the file NuGet config file: $ConfigFile" +if (!(Test-Path $ConfigFile -PathType Leaf)) { + Write-PipelineTelemetryError -Category 'Build' -Message "Eng/common/SetupNugetSources.ps1 returned a non-zero exit code. Couldn't find the NuGet config file: $ConfigFile" + ExitWithExitCode 1 +} + +if (!$Password) { + Write-PipelineTelemetryError -Category 'Build' -Message 'Eng/common/SetupNugetSources.ps1 returned a non-zero exit code. Please supply a valid PAT' ExitWithExitCode 1 - } +} - # Load NuGet.config - $doc = New-Object System.Xml.XmlDocument - $filename = (Get-Item $ConfigFile).FullName - $doc.Load($filename) +# Load NuGet.config +$doc = New-Object System.Xml.XmlDocument +$filename = (Get-Item $ConfigFile).FullName +$doc.Load($filename) - # Get reference to or create one if none exist already - $sources = $doc.DocumentElement.SelectSingleNode("packageSources") - if ($sources -eq $null) { - $sources = $doc.CreateElement("packageSources") - $doc.DocumentElement.AppendChild($sources) | Out-Null - } +# Get reference to or create one if none exist already +$sources = $doc.DocumentElement.SelectSingleNode("packageSources") +if ($sources -eq $null) { + $sources = $doc.CreateElement("packageSources") + $doc.DocumentElement.AppendChild($sources) | Out-Null +} - # Looks for a node. Create it if none is found. - $creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials") - if ($creds -eq $null) { - $creds = $doc.CreateElement("packageSourceCredentials") - $doc.DocumentElement.AppendChild($creds) | Out-Null - } +# Looks for a node. Create it if none is found. +$creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials") +if ($creds -eq $null) { + $creds = $doc.CreateElement("packageSourceCredentials") + $doc.DocumentElement.AppendChild($creds) | Out-Null +} - # Insert credential nodes for Maestro's private feeds - InsertMaestroPrivateFeedCredentials -Sources $sources -Creds $creds -Password $Password +# Insert credential nodes for Maestro's private feeds +InsertMaestroPrivateFeedCredentials -Sources $sources -Creds $creds -Password $Password +$dotnet3Source = $sources.SelectSingleNode("add[@key='dotnet3']") +if ($dotnet3Source -ne $null) { AddPackageSource -Sources $sources -SourceName "dotnet3-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3-internal/nuget/v2" -Creds $creds -Username "dn-bot" -Password $Password AddPackageSource -Sources $sources -SourceName "dotnet3-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3-internal-transport/nuget/v2" -Creds $creds -Username "dn-bot" -Password $Password - - $doc.Save($filename) } -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'InitializeToolset' -Message $_ - ExitWithExitCode 1 + +$dotnet31Source = $sources.SelectSingleNode("add[@key='dotnet3.1']") +if ($dotnet31Source -ne $null) { + AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal/nuget/v2" -Creds $creds -Username "dn-bot" -Password $Password + AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username "dn-bot" -Password $Password } + +$doc.Save($filename) diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh index 55ad70e3663..7d6fef27fe4 100644 --- a/eng/common/SetupNugetSources.sh +++ b/eng/common/SetupNugetSources.sh @@ -17,7 +17,7 @@ # displayName: Setup Private Feeds Credentials # inputs: # filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh -# arguments: $BUILD_SOURCESDIRECTORY/NuGet.config $Token +# arguments: $(Build.SourcesDirectory)/NuGet.config $Token # condition: ne(variables['Agent.OS'], 'Windows_NT') # env: # Token: $(dn-bot-dnceng-artifact-feeds-rw) @@ -42,7 +42,12 @@ scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" . "$scriptroot/tools.sh" if [ ! -f "$ConfigFile" ]; then - Write-PipelineTelemetryError -Category 'Build' -Message "Couldn't find the file NuGet config file: $ConfigFile" + Write-PipelineTelemetryError -Category 'Build' "Error: Eng/common/SetupNugetSources.sh returned a non-zero exit code. Couldn't find the NuGet config file: $ConfigFile" + ExitWithExitCode 1 +fi + +if [ -z "$CredToken" ]; then + Write-PipelineTelemetryError -category 'Build' "Error: Eng/common/SetupNugetSources.sh returned a non-zero exit code. Please supply a valid PAT" ExitWithExitCode 1 fi @@ -52,7 +57,7 @@ if [[ `uname -s` == "Darwin" ]]; then fi # Ensure there is a ... section. -grep -i "" $ConfigFile +grep -i "" $ConfigFile if [ "$?" != "0" ]; then echo "Adding ... section." ConfigNodeHeader="" @@ -62,7 +67,7 @@ if [ "$?" != "0" ]; then fi # Ensure there is a ... section. -grep -i "" $ConfigFile +grep -i "" $ConfigFile if [ "$?" != "0" ]; then echo "Adding ... section." @@ -72,37 +77,64 @@ if [ "$?" != "0" ]; then sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourcesNodeFooter${NL}$PackageSourceCredentialsTemplate|" NuGet.config fi -# Ensure dotnet3-internal and dotnet3-internal-transport is in the packageSources -grep -i "" $ConfigFile -if [ "$?" != "0" ]; then - echo "Adding dotnet3-internal to the packageSources." +PackageSources=() - PackageSourcesNodeFooter="" - PackageSourceTemplate="${TB}" +# Ensure dotnet3-internal and dotnet3-internal-transport are in the packageSources if the public dotnet3 feeds are present +grep -i "" $ConfigFile + if [ "$?" != "0" ]; then + echo "Adding dotnet3-internal to the packageSources." + PackageSourcesNodeFooter="" + PackageSourceTemplate="${TB}" + + sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile + fi + PackageSources+=('dotnet3-internal') + + grep -i "" - sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" NuGet.config + sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile + fi + PackageSources+=('dotnet3-internal-transport') fi -# Ensure dotnet3-internal and dotnet3-internal-transport is in the packageSources -grep -i "" $ConfigFile -if [ "$?" != "0" ]; then - echo "Adding dotnet3-internal-transport to the packageSources." +# Ensure dotnet3.1-internal and dotnet3.1-internal-transport are in the packageSources if the public dotnet3.1 feeds are present +grep -i "" - PackageSourcesNodeFooter="" - PackageSourceTemplate="${TB}" + sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile + fi + PackageSources+=('dotnet3.1-internal') + + grep -i "" $ConfigFile + if [ "$?" != "0" ]; then + echo "Adding dotnet3.1-internal-transport to the packageSources." + PackageSourcesNodeFooter="" + PackageSourceTemplate="${TB}" - sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" NuGet.config + sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile + fi + PackageSources+=('dotnet3.1-internal-transport') fi # I want things split line by line PrevIFS=$IFS IFS=$'\n' -PackageSources=$(grep -oh '"darc-int-[^"]*"' $ConfigFile | tr -d '"') +PackageSources+="$IFS" +PackageSources+=$(grep -oh '"darc-int-[^"]*"' $ConfigFile | tr -d '"') IFS=$PrevIFS -PackageSources+=('dotnet3-internal') -PackageSources+=('dotnet3-internal-transport') - for FeedName in ${PackageSources[@]} ; do # Check if there is no existing credential for this FeedName grep -i "<$FeedName>" $ConfigFile @@ -112,6 +144,6 @@ for FeedName in ${PackageSources[@]} ; do PackageSourceCredentialsNodeFooter="" NewCredential="${TB}${TB}<$FeedName>${NL}${NL}${NL}" - sed -i.bak "s|$PackageSourceCredentialsNodeFooter|$NewCredential${NL}$PackageSourceCredentialsNodeFooter|" NuGet.config + sed -i.bak "s|$PackageSourceCredentialsNodeFooter|$NewCredential${NL}$PackageSourceCredentialsNodeFooter|" $ConfigFile fi done diff --git a/eng/common/build.ps1 b/eng/common/build.ps1 index 0fd4d9c7f23..88814514d82 100644 --- a/eng/common/build.ps1 +++ b/eng/common/build.ps1 @@ -62,6 +62,8 @@ function Print-Usage() { Write-Host "The above arguments can be shortened as much as to be unambiguous (e.g. -co for configuration, -t for test, etc.)." } +. $PSScriptRoot\tools.ps1 + function InitializeCustomToolset { if (-not $restore) { return @@ -113,8 +115,6 @@ function Build { } try { - . $PSScriptRoot\tools.ps1 - if ($clean) { if (Test-Path $ArtifactsDir) { Remove-Item -Recurse -Force $ArtifactsDir @@ -122,12 +122,7 @@ try { } exit 0 } - - if ((Test-Path variable:LastExitCode) -And ($LastExitCode -ne 0)) { - Write-PipelineTelemetryError -Category 'InitializeToolset' -Message 'Eng/common/tools.ps1 returned a non-zero exit code.' - ExitWithExitCode $LastExitCode - } - + if ($help -or (($null -ne $properties) -and ($properties.Contains('/help') -or $properties.Contains('/?')))) { Print-Usage exit 0 diff --git a/eng/common/init-tools-native.ps1 b/eng/common/init-tools-native.ps1 index f4409f0835a..db830c00a6f 100644 --- a/eng/common/init-tools-native.ps1 +++ b/eng/common/init-tools-native.ps1 @@ -113,14 +113,16 @@ try { } $toolInstallationFailure = $true } else { - Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message $errMsg + # We cannot change this to Write-PipelineTelemetryError because of https://github.com/dotnet/arcade/issues/4482 + Write-Host $errMsg exit 1 } } } if ((Get-Variable 'toolInstallationFailure' -ErrorAction 'SilentlyContinue') -and $toolInstallationFailure) { - Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message 'Native tools bootstrap failed' + # We cannot change this to Write-PipelineTelemetryError because of https://github.com/dotnet/arcade/issues/4482 + Write-Host 'Native tools bootstrap failed' exit 1 } } diff --git a/eng/common/native/install-tool.ps1 b/eng/common/native/install-tool.ps1 index ca180d03ba1..f397e1c75d4 100644 --- a/eng/common/native/install-tool.ps1 +++ b/eng/common/native/install-tool.ps1 @@ -105,7 +105,7 @@ try { Write-Error "There are multiple copies of $ToolName in $($ToolInstallDirectory): `n$(@($ToolFilePath | out-string))" exit 1 } elseif (@($ToolFilePath).Length -Lt 1) { - Write-Error "$ToolName was not found in $ToolFilePath." + Write-Host "$ToolName was not found in $ToolFilePath." exit 1 } diff --git a/eng/common/pipeline-logging-functions.ps1 b/eng/common/pipeline-logging-functions.ps1 index e0656185886..a3e1317ad43 100644 --- a/eng/common/pipeline-logging-functions.ps1 +++ b/eng/common/pipeline-logging-functions.ps1 @@ -85,7 +85,7 @@ function Write-PipelineTaskError { [switch]$AsOutput, [bool]$IsMultiJobVariable=$true) - if(-Not (Test-Path variable:ci) -Or !$ci) { + if((Test-Path variable:ci) -And $ci) { Write-LoggingCommand -Area 'task' -Event 'setvariable' -Data $Value -Properties @{ 'variable' = $Name 'isSecret' = $Secret @@ -101,7 +101,7 @@ function Write-PipelineTaskError { [string]$Path, [switch]$AsOutput) - if(-Not (Test-Path variable:ci) -Or !$ci) { + if((Test-Path variable:ci) -And $ci) { Write-LoggingCommand -Area 'task' -Event 'prependpath' -Data $Path -AsOutput:$AsOutput } } @@ -237,4 +237,4 @@ function Write-LogIssue { } Write-Host $command -ForegroundColor $foregroundColor -BackgroundColor $backgroundColor -} \ No newline at end of file +} diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index d762c9f044a..09c3a3325ea 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -98,7 +98,7 @@ function Exec-Process([string]$command, [string]$commandArgs) { } } -function InitializeDotNetCli([bool]$install) { +function InitializeDotNetCli([bool]$install, [bool]$createSdkLocationFile) { if (Test-Path variable:global:_DotNetInstallDir) { return $global:_DotNetInstallDir } @@ -146,6 +146,22 @@ function InitializeDotNetCli([bool]$install) { } $env:DOTNET_INSTALL_DIR = $dotnetRoot + + if ($createSdkLocationFile) { + # Create a temporary file under the toolset dir and rename it to sdk.txt to avoid races. + do { + $sdkCacheFileTemp = Join-Path $ToolsetDir $([System.IO.Path]::GetRandomFileName()) + } + until (!(Test-Path $sdkCacheFileTemp)) + Set-Content -Path $sdkCacheFileTemp -Value $dotnetRoot + + try { + Rename-Item -Force -Path $sdkCacheFileTemp 'sdk.txt' + } catch { + # Somebody beat us + Remove-Item -Path $sdkCacheFileTemp + } + } } # Add dotnet to PATH. This prevents any bare invocation of dotnet in custom @@ -216,7 +232,10 @@ function InstallDotNet([string] $dotnetRoot, } catch { Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "Failed to install dotnet runtime '$runtime' from custom location '$runtimeSourceFeed'." + ExitWithExitCode 1 } + } else { + ExitWithExitCode 1 } } } @@ -274,8 +293,11 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = $vsMajorVersion = $vsMinVersion.Major $xcopyMSBuildVersion = "$vsMajorVersion.$($vsMinVersion.Minor).0-alpha" } - - $vsInstallDir = InitializeXCopyMSBuild $xcopyMSBuildVersion $install + + $vsInstallDir = $null + if ($xcopyMSBuildVersion.Trim() -ine "none") { + $vsInstallDir = InitializeXCopyMSBuild $xcopyMSBuildVersion $install + } if ($vsInstallDir -eq $null) { throw 'Unable to find Visual Studio that has required version and components installed' } diff --git a/eng/common/tools.sh b/eng/common/tools.sh index f58db5e25d1..e071af4ee49 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -211,6 +211,8 @@ function InstallDotNet { Write-PipelineTelemetryError -category 'InitializeToolset' "Failed to install dotnet SDK from custom location '$runtimeSourceFeed' (exit code '$exit_code')." ExitWithExitCode $exit_code } + else + ExitWithExitCode $exit_code fi fi } diff --git a/global.json b/global.json index 707f7b7357e..7baf11e8275 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "tools": { - "dotnet": "3.0.100", + "dotnet": "3.1.100", "vs": { "version": "16.3", "components": [ @@ -10,7 +10,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "5.0.0-beta.19602.4", + "Microsoft.DotNet.Arcade.Sdk": "5.0.0-beta.19614.1", "Microsoft.DotNet.Helix.Sdk": "2.0.0-beta.19069.2" } } diff --git a/src/absil/illib.fs b/src/absil/illib.fs index 70e67a0815d..0a7d471e141 100644 --- a/src/absil/illib.fs +++ b/src/absil/illib.fs @@ -1361,7 +1361,45 @@ module Shim = directory.Contains("packages\\") || directory.Contains("lib/mono/") - let mutable FileSystem = DefaultFileSystem() :> IFileSystem + let mutable FileSystem = DefaultFileSystem() :> IFileSystem + + // The choice of 60 retries times 50 ms is not arbitrary. The NTFS FILETIME structure + // uses 2 second resolution for LastWriteTime. We retry long enough to surpass this threshold + // plus 1 second. Once past the threshold the incremental builder will be able to retry asynchronously based + // on plain old timestamp checking. + // + // The sleep time of 50ms is chosen so that we can respond to the user more quickly for Intellisense operations. + // + // This is not run on the UI thread for VS but it is on a thread that must be stopped before Intellisense + // can return any result except for pending. + let private retryDelayMilliseconds = 50 + let private numRetries = 60 + + let private getReader (filename, codePage: int option, retryLocked: bool) = + // Retry multiple times since other processes may be writing to this file. + let rec getSource retryNumber = + try + // Use the .NET functionality to auto-detect the unicode encoding + let stream = FileSystem.FileStreamReadShim(filename) + match codePage with + | None -> new StreamReader(stream,true) + | Some n -> new StreamReader(stream,System.Text.Encoding.GetEncoding(n)) + with + // We can get here if the file is locked--like when VS is saving a file--we don't have direct + // access to the HRESULT to see that this is EONOACCESS. + | :? System.IO.IOException as err when retryLocked && err.GetType() = typeof -> + // This second check is to make sure the exception is exactly IOException and none of these for example: + // DirectoryNotFoundException + // EndOfStreamException + // FileNotFoundException + // FileLoadException + // PathTooLongException + if retryNumber < numRetries then + System.Threading.Thread.Sleep (retryDelayMilliseconds) + getSource (retryNumber + 1) + else + reraise() + getSource 0 type File with @@ -1374,3 +1412,6 @@ module Shim = n <- n + stream.Read(buffer, n, len-n) buffer + static member OpenReaderAndRetry (filename, codepage, retryLocked) = + getReader (filename, codepage, retryLocked) + diff --git a/src/absil/ilread.fs b/src/absil/ilread.fs index cc5c865515a..de201333a0d 100644 --- a/src/absil/ilread.fs +++ b/src/absil/ilread.fs @@ -14,6 +14,7 @@ open System.Collections.Concurrent open System.Collections.Generic open System.Diagnostics open System.IO +open System.IO.MemoryMappedFiles open System.Runtime.InteropServices open System.Text open Internal.Utilities @@ -184,124 +185,6 @@ type RawMemoryFile(fileName: string, obj: obj, addr: nativeint, length: int) = interface BinaryFile with override __.GetView() = view :>_ -/// Read from memory mapped files. -module MemoryMapping = - - type HANDLE = nativeint - type ADDR = nativeint - type SIZE_T = nativeint - - [] - extern bool CloseHandle (HANDLE _handler) - - [] - extern HANDLE CreateFile (string _lpFileName, - int _dwDesiredAccess, - int _dwShareMode, - HANDLE _lpSecurityAttributes, - int _dwCreationDisposition, - int _dwFlagsAndAttributes, - HANDLE _hTemplateFile) - - [] - extern HANDLE CreateFileMapping (HANDLE _hFile, - HANDLE _lpAttributes, - int _flProtect, - int _dwMaximumSizeLow, - int _dwMaximumSizeHigh, - string _lpName) - - [] - extern ADDR MapViewOfFile (HANDLE _hFileMappingObject, - int _dwDesiredAccess, - int _dwFileOffsetHigh, - int _dwFileOffsetLow, - SIZE_T _dwNumBytesToMap) - - [] - extern bool UnmapViewOfFile (ADDR _lpBaseAddress) - - let INVALID_HANDLE = new IntPtr(-1) - let MAP_READ = 0x0004 - let GENERIC_READ = 0x80000000 - let NULL_HANDLE = IntPtr.Zero - let FILE_SHARE_NONE = 0x0000 - let FILE_SHARE_READ = 0x0001 - let FILE_SHARE_WRITE = 0x0002 - let FILE_SHARE_READ_WRITE = 0x0003 - let CREATE_ALWAYS = 0x0002 - let OPEN_EXISTING = 0x0003 - let OPEN_ALWAYS = 0x0004 - -/// A view over a raw pointer to memory given by a memory mapped file. -/// NOTE: we should do more checking of validity here. -type MemoryMapView(start: nativeint) = - inherit BinaryView() - - override m.ReadByte i = - Marshal.ReadByte(start + nativeint i) - - override m.ReadBytes i n = - let res = Bytes.zeroCreate n - Marshal.Copy(start + nativeint i, res, 0, n) - res - - override m.ReadInt32 i = - Marshal.ReadInt32(start + nativeint i) - - override m.ReadUInt16 i = - uint16(Marshal.ReadInt16(start + nativeint i)) - - override m.CountUtf8String i = - let pStart = start + nativeint i - let mutable p = start - while Marshal.ReadByte p <> 0uy do - p <- p + 1n - int (p - pStart) - - override m.ReadUTF8String i = - let n = m.CountUtf8String i - System.Runtime.InteropServices.Marshal.PtrToStringAnsi(start + nativeint i, n) - -/// Memory maps a file and creates a single view over the entirety of its contents. The -/// lock on the file is only released when the object is disposed. -/// For memory mapping we currently take one view and never release it. -[] -type MemoryMapFile(fileName: string, view: MemoryMapView, hMap: MemoryMapping.HANDLE, hView: nativeint) = - - do stats.memoryMapFileOpenedCount <- stats.memoryMapFileOpenedCount + 1 - let mutable closed = false - static member Create fileName = - let hFile = MemoryMapping.CreateFile (fileName, MemoryMapping.GENERIC_READ, MemoryMapping.FILE_SHARE_READ_WRITE, IntPtr.Zero, MemoryMapping.OPEN_EXISTING, 0, IntPtr.Zero ) - if hFile.Equals MemoryMapping.INVALID_HANDLE then - failwithf "CreateFile(0x%08x)" (Marshal.GetHRForLastWin32Error()) - let protection = 0x00000002 - let hMap = MemoryMapping.CreateFileMapping (hFile, IntPtr.Zero, protection, 0, 0, null ) - ignore(MemoryMapping.CloseHandle hFile) - if hMap.Equals MemoryMapping.NULL_HANDLE then - failwithf "CreateFileMapping(0x%08x)" (Marshal.GetHRForLastWin32Error()) - - let hView = MemoryMapping.MapViewOfFile (hMap, MemoryMapping.MAP_READ, 0, 0, 0n) - - if hView.Equals IntPtr.Zero then - failwithf "MapViewOfFile(0x%08x)" (Marshal.GetHRForLastWin32Error()) - - let view = MemoryMapView hView - - MemoryMapFile(fileName, view, hMap, hView) - - member __.FileName = fileName - - member __.Close() = - stats.memoryMapFileClosedCount <- stats.memoryMapFileClosedCount + 1 - if not closed then - closed <- true - MemoryMapping.UnmapViewOfFile hView |> ignore - MemoryMapping.CloseHandle hMap |> ignore - - interface BinaryFile with - override __.GetView() = (view :> BinaryView) - /// Read file from memory blocks type ByteView(bytes: byte[]) = inherit BinaryView() @@ -3989,19 +3872,24 @@ let createByteFileChunk opts fileName chunk = | Some (start, length) -> File.ReadBinaryChunk(fileName, start, length) ByteFile(fileName, bytes) :> BinaryFile -let tryMemoryMapWholeFile opts fileName = - let file = - try - MemoryMapFile.Create fileName :> BinaryFile - with _ -> - createByteFileChunk opts fileName None - let disposer = - { new IDisposable with - member __.Dispose() = - match file with - | :? MemoryMapFile as m -> m.Close() // Note that the PE file reader is not required after this point for metadata-only reading - | _ -> () } - disposer, file +let createMemoryMapFile fileName = + let mmf, accessor, length = + let fileStream = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read) + let length = fileStream.Length + let mmf = MemoryMappedFile.CreateFromFile(fileStream, null, length, MemoryMappedFileAccess.Read, HandleInheritability.None, leaveOpen=false) + mmf, mmf.CreateViewAccessor(0L, fileStream.Length, MemoryMappedFileAccess.Read), length + let safeHolder = + { new obj() with + override x.Finalize() = + (x :?> IDisposable).Dispose() + interface IDisposable with + member x.Dispose() = + GC.SuppressFinalize x + accessor.Dispose() + mmf.Dispose() + stats.memoryMapFileClosedCount <- stats.memoryMapFileClosedCount + 1 } + stats.memoryMapFileOpenedCount <- stats.memoryMapFileOpenedCount + 1 + safeHolder, RawMemoryFile(fileName, safeHolder, accessor.SafeMemoryMappedViewHandle.DangerousGetHandle(), int length) :> BinaryFile let OpenILModuleReaderFromBytes fileName bytes opts = let pefile = ByteFile(fileName, bytes) :> BinaryFile @@ -4067,7 +3955,7 @@ let OpenILModuleReader fileName opts = // For metadata-only, always use a temporary, short-lived PE file reader, preferably over a memory mapped file. // Then use the metadata blob as the long-lived memory resource. - let disposer, pefileEager = tryMemoryMapWholeFile opts fullPath + let disposer, pefileEager = createMemoryMapFile fullPath use _disposer = disposer let (metadataPhysLoc, metadataSize, peinfo, pectxtEager, pevEager, _pdb) = openPEFileReader (fullPath, pefileEager, None, false) let mdfile = @@ -4106,7 +3994,7 @@ let OpenILModuleReader fileName opts = // still use an in-memory ByteFile let _disposer, pefile = if alwaysMemoryMapFSC || stableFileHeuristicApplies fullPath then - tryMemoryMapWholeFile opts fullPath + createMemoryMapFile fullPath else let pefile = createByteFileChunk opts fullPath None let disposer = { new IDisposable with member __.Dispose() = () } diff --git a/src/fsharp/CompileOps.fs b/src/fsharp/CompileOps.fs index ab20bfcf139..3af0e04e202 100644 --- a/src/fsharp/CompileOps.fs +++ b/src/fsharp/CompileOps.fs @@ -3436,7 +3436,7 @@ let ParseOneInputLexbuf (tcConfig: TcConfig, lexResourceManager, conditionalComp if verbose then dprintn ("Parsed "+shortFilename) Some input with e -> (* errorR(Failure("parse failed")); *) errorRecovery e rangeStartup; None - + let ParseOneInputFile (tcConfig: TcConfig, lexResourceManager, conditionalCompilationDefines, filename, isLastCompiland, errorLogger, retryLocked) = try @@ -3445,7 +3445,8 @@ let ParseOneInputFile (tcConfig: TcConfig, lexResourceManager, conditionalCompil if not(FileSystem.SafeExists filename) then error(Error(FSComp.SR.buildCouldNotFindSourceFile filename, rangeStartup)) let isFeatureSupported featureId = tcConfig.langVersion.SupportsFeature featureId - let lexbuf = UnicodeLexing.UnicodeFileAsLexbuf(isFeatureSupported, filename, tcConfig.inputCodePage, retryLocked) + use reader = File.OpenReaderAndRetry (filename, tcConfig.inputCodePage, retryLocked) + let lexbuf = UnicodeLexing.StreamReaderAsLexbuf(isFeatureSupported, reader) ParseOneInputLexbuf(tcConfig, lexResourceManager, conditionalCompilationDefines, lexbuf, filename, isLastCompiland, errorLogger) else error(Error(FSComp.SR.buildInvalidSourceFileExtension(SanitizeFileName filename tcConfig.implicitIncludeDir), rangeStartup)) with e -> (* errorR(Failure("parse failed")); *) errorRecovery e rangeStartup; None diff --git a/src/fsharp/FSharp.Core.nuget/FSharp.Core.nuspec b/src/fsharp/FSharp.Core.nuget/FSharp.Core.nuspec index 4814daeb25c..e7f9bcb7da2 100644 --- a/src/fsharp/FSharp.Core.nuget/FSharp.Core.nuspec +++ b/src/fsharp/FSharp.Core.nuget/FSharp.Core.nuspec @@ -10,6 +10,7 @@ $CommonFileElements$ + diff --git a/src/fsharp/FSharp.Core/async.fs b/src/fsharp/FSharp.Core/async.fs index ece4bbe44e0..b6ab88a16f6 100644 --- a/src/fsharp/FSharp.Core/async.fs +++ b/src/fsharp/FSharp.Core/async.fs @@ -1250,31 +1250,28 @@ namespace Microsoft.FSharp.Control |> unfake) | Some maxDegreeOfParallelism -> let mutable i = -1 - let worker = MakeAsync (fun _ -> - while i < tasks.Length do + let rec worker (trampolineHolder : TrampolineHolder) = + if i < tasks.Length then let j = Interlocked.Increment &i if j < tasks.Length then - let trampolineHolder = new TrampolineHolder() - trampolineHolder.ExecuteWithTrampoline (fun () -> - let ctxt = + if innerCTS.Token.IsCancellationRequested then + let cexn = new OperationCanceledException (innerCTS.Token) + recordFailure (Choice2Of2 cexn) |> unfake + worker trampolineHolder |> unfake + else + let taskCtxt = AsyncActivation.Create innerCTS.Token trampolineHolder - (fun res -> recordSuccess j res) - (fun edi -> recordFailure (Choice1Of2 edi)) - (fun cexn -> recordFailure (Choice2Of2 cexn)) - tasks.[j].Invoke ctxt - ) - |> unfake + (fun res -> recordSuccess j res |> unfake; worker trampolineHolder) + (fun edi -> recordFailure (Choice1Of2 edi) |> unfake; worker trampolineHolder) + (fun cexn -> recordFailure (Choice2Of2 cexn) |> unfake; worker trampolineHolder) + tasks.[j].Invoke taskCtxt |> unfake fake() - ) for x = 1 to maxDegreeOfParallelism do - QueueAsync - innerCTS.Token - (fun _ -> fake()) - (fun edi -> recordFailure (Choice1Of2 edi)) - (fun cexn -> recordFailure (Choice2Of2 cexn)) - worker + let trampolineHolder = new TrampolineHolder() + trampolineHolder.QueueWorkItemWithTrampoline (fun () -> + worker trampolineHolder) |> unfake fake())) diff --git a/src/fsharp/UnicodeLexing.fs b/src/fsharp/UnicodeLexing.fs index c776a1f1f76..70a253da1b6 100644 --- a/src/fsharp/UnicodeLexing.fs +++ b/src/fsharp/UnicodeLexing.fs @@ -22,50 +22,15 @@ let FunctionAsLexbuf (supportsFeature: Features.LanguageFeature -> bool, bufferF let SourceTextAsLexbuf (supportsFeature: Features.LanguageFeature -> bool, sourceText) = LexBuffer.FromSourceText(supportsFeature, sourceText) -// The choice of 60 retries times 50 ms is not arbitrary. The NTFS FILETIME structure -// uses 2 second resolution for LastWriteTime. We retry long enough to surpass this threshold -// plus 1 second. Once past the threshold the incremental builder will be able to retry asynchronously based -// on plain old timestamp checking. -// -// The sleep time of 50ms is chosen so that we can respond to the user more quickly for Intellisense operations. -// -// This is not run on the UI thread for VS but it is on a thread that must be stopped before Intellisense -// can return any result except for pending. -let retryDelayMilliseconds = 50 -let numRetries = 60 - -/// Standard utility to create a Unicode LexBuffer -/// -/// One small annoyance is that LexBuffers and not IDisposable. This means -/// we can't just return the LexBuffer object, since the file it wraps wouldn't -/// get closed when we're finished with the LexBuffer. Hence we return the stream, -/// the reader and the LexBuffer. The caller should dispose the first two when done. -let UnicodeFileAsLexbuf (supportsFeature: Features.LanguageFeature -> bool, filename, codePage: int option, retryLocked: bool): Lexbuf = - // Retry multiple times since other processes may be writing to this file. - let rec getSource retryNumber = - try - // Use the .NET functionality to auto-detect the unicode encoding - use stream = FileSystem.FileStreamReadShim(filename) - use reader = - match codePage with - | None -> new StreamReader(stream,true) - | Some n -> new StreamReader(stream,System.Text.Encoding.GetEncoding(n)) - reader.ReadToEnd() - with - // We can get here if the file is locked--like when VS is saving a file--we don't have direct - // access to the HRESULT to see that this is EONOACCESS. - | :? System.IO.IOException as err when retryLocked && err.GetType() = typeof -> - // This second check is to make sure the exception is exactly IOException and none of these for example: - // DirectoryNotFoundException - // EndOfStreamException - // FileNotFoundException - // FileLoadException - // PathTooLongException - if retryNumber < numRetries then - System.Threading.Thread.Sleep (retryDelayMilliseconds) - getSource (retryNumber + 1) - else - reraise() - let source = getSource 0 - let lexbuf = LexBuffer<_>.FromChars(supportsFeature, source.ToCharArray()) - lexbuf +let StreamReaderAsLexbuf (supportsFeature: Features.LanguageFeature -> bool, reader: StreamReader) = + let mutable isFinished = false + FunctionAsLexbuf (supportsFeature, fun (chars, start, length) -> + if isFinished then 0 + else + let nBytesRead = reader.Read(chars, start, length) + if nBytesRead = 0 then + isFinished <- true + 0 + else + nBytesRead + ) diff --git a/src/fsharp/UnicodeLexing.fsi b/src/fsharp/UnicodeLexing.fsi index 2478c7f857b..a3f0fb8fb32 100644 --- a/src/fsharp/UnicodeLexing.fsi +++ b/src/fsharp/UnicodeLexing.fsi @@ -2,6 +2,7 @@ module internal FSharp.Compiler.UnicodeLexing +open System.IO open FSharp.Compiler.Features open FSharp.Compiler.Text open Microsoft.FSharp.Text @@ -10,5 +11,7 @@ open Internal.Utilities.Text.Lexing type Lexbuf = LexBuffer val internal StringAsLexbuf: (Features.LanguageFeature -> bool) * string -> Lexbuf val public FunctionAsLexbuf: (Features.LanguageFeature -> bool) * (char [] * int * int -> int) -> Lexbuf -val public UnicodeFileAsLexbuf: (Features.LanguageFeature -> bool) * string * int option * (*retryLocked*) bool -> Lexbuf val public SourceTextAsLexbuf: (Features.LanguageFeature -> bool) * ISourceText -> Lexbuf + +/// Will not dispose of the stream reader. +val public StreamReaderAsLexbuf: (Features.LanguageFeature -> bool) * StreamReader -> Lexbuf diff --git a/src/fsharp/fsi/fsi.fs b/src/fsharp/fsi/fsi.fs index c5e71384f1f..60f53b3964f 100644 --- a/src/fsharp/fsi/fsi.fs +++ b/src/fsharp/fsi/fsi.fs @@ -1677,8 +1677,8 @@ type internal FsiStdinLexerProvider CreateLexerForLexBuffer (Lexhelp.stdinMockFilename, lexbuf, errorLogger) // Create a new lexer to read an "included" script file - member __.CreateIncludedScriptLexer (sourceFileName, errorLogger) = - let lexbuf = UnicodeLexing.UnicodeFileAsLexbuf(isFeatureSupported, sourceFileName, tcConfigB.inputCodePage, (*retryLocked*)false) + member __.CreateIncludedScriptLexer (sourceFileName, reader, errorLogger) = + let lexbuf = UnicodeLexing.StreamReaderAsLexbuf(isFeatureSupported, reader) CreateLexerForLexBuffer (sourceFileName, lexbuf, errorLogger) // Create a new lexer to read a string @@ -2037,7 +2037,8 @@ type internal FsiInteractionProcessor WithImplicitHome (tcConfigB, directoryName sourceFile) (fun () -> // An included script file may contain maybe several interaction blocks. // We repeatedly parse and process these, until an error occurs. - let tokenizer = fsiStdinLexerProvider.CreateIncludedScriptLexer (sourceFile, errorLogger) + use reader = File.OpenReaderAndRetry (sourceFile, tcConfigB.inputCodePage, (*retryLocked*)false) + let tokenizer = fsiStdinLexerProvider.CreateIncludedScriptLexer (sourceFile, reader, errorLogger) let rec run istate = let istate,cont = processor.ParseAndExecOneSetOfInteractionsFromLexbuf ((fun f istate -> f ctok istate), istate, tokenizer, errorLogger) match cont with Completed _ -> run istate | _ -> istate,cont diff --git a/src/fsharp/fsi/xlf/FSIstrings.txt.cs.xlf b/src/fsharp/fsi/xlf/FSIstrings.txt.cs.xlf index 453d98e749f..2d4481919d4 100644 --- a/src/fsharp/fsi/xlf/FSIstrings.txt.cs.xlf +++ b/src/fsharp/fsi/xlf/FSIstrings.txt.cs.xlf @@ -4,12 +4,12 @@ Operation could not be completed due to earlier error - Operation could not be completed due to earlier error + Operaci nešlo dokončit z důvodu dřívější chyby. Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing - Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing + Operace nebyla úspěšná. Text chyby se vytiskl do streamu chyb. Pokud chcete vrátit odpovídající FSharpErrorInfo, použijte EvalInteractionNonThrowing, EvalScriptNonThrowing nebo EvalExpressionNonThrowing. @@ -19,7 +19,7 @@ Usage: {0} <options> [script.fsx [<arguments>]] - Použití: {0} <parametry> [skript.fsx [<argumenty>]] + Použití: {0} <možnosti> [script.fsx [<argumenty>]] @@ -109,7 +109,7 @@ A problem occurred starting the F# Interactive process. This may be due to a known problem with background process console support for Unicode-enabled applications on some Windows systems. Try selecting Tools->Options->F# Interactive for Visual Studio and enter '--fsi-server-no-unicode'. - Při spuštění procesu F# Interactive se vyskytl problém. Ten mohly způsobit známé potíže s podporou konzoly procesu na pozadí pro aplikace umožňující kódování Unicode v některých systémech Windows. V případě sady Visual Studio zkuste vybrat Nástroje->Možnosti->F# Interactive a zadat: --fsi-server-no-unicode. + Při spouštění procesu F# Interactive došlo k potížím. Může to být způsobené známým problémem s podporou procesů na pozadí v konzole pro aplikace podporující Unicode v některých systémech Windows. Zkuste vybrat Nástroje -> Možnosti -> F# Interactive pro Visual Studio a zadat --fsi-server-no-unicode. @@ -219,22 +219,22 @@ --> Referenced '{0}' - --> Odkazovaný soubor {0} + --> Odkazovalo se na: {0} --> Referenced '{0}' (file may be locked by F# Interactive process) - --> Odkazovaný soubor {0} (Soubor musí být procesem F# Interactive uzamčený.) + --> Odkazovalo se na: {0} (soubor může být zamknutý procesem F# Interactive) --> Referenced '{0}' (an assembly with a different timestamp has already been referenced from this location, reset fsi to load the updated assembly) - --> Odkazováno {0} (na sestavení s odlišným časovým razítkem se už z tohoto umístění odkazovalo, pro načtení aktualizovaného sestavení obnovte soubor fsi) + --> Odkazovalo se na: {0} (Z tohoto umístění se už odkazovalo na sestavení s jiným časovým razítkem. Je třeba resetovat fsi, aby se načetlo aktualizované sestavení.) --> Added '{0}' to library include path - --> Soubory přidané do knihovny ({0}) zahrnují cestu. + --> Přidali jsme {0} do cesty pro zahrnutí do knihovny diff --git a/src/fsharp/fsi/xlf/FSIstrings.txt.de.xlf b/src/fsharp/fsi/xlf/FSIstrings.txt.de.xlf index 9d11e8cf700..80ec70245dc 100644 --- a/src/fsharp/fsi/xlf/FSIstrings.txt.de.xlf +++ b/src/fsharp/fsi/xlf/FSIstrings.txt.de.xlf @@ -4,12 +4,12 @@ Operation could not be completed due to earlier error - Operation could not be completed due to earlier error + Der Vorgang konnte aufgrund eines vorherigen Fehlers nicht abgeschlossen werden. Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing - Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing + Der Vorgang ist fehlgeschlagen. Der Fehlertext wurde im Fehlerstream ausgegeben. Verwenden Sie EvalInteractionNonThrowing, EvalScriptNonThrowing oder EvalExpressionNonThrowing, um die entsprechende FSharpErrorInfo zurückzugeben. @@ -19,7 +19,7 @@ Usage: {0} <options> [script.fsx [<arguments>]] - Verwendung: {0} <Optionen> [script.fsx [<Argumente>]] + Verwendung: {0} <Optionen> [script.fsx [<arguments>]] @@ -109,7 +109,7 @@ A problem occurred starting the F# Interactive process. This may be due to a known problem with background process console support for Unicode-enabled applications on some Windows systems. Try selecting Tools->Options->F# Interactive for Visual Studio and enter '--fsi-server-no-unicode'. - Beim Starten des F# Interactive-Prozesses ist ein Fehler aufgetreten. Ursache hierfür kann ein bekanntes Problem mit der Hintergrundprozess-Konsolenunterstützung für Unicode-aktivierte Anwendungen unter manchen Windows-Systemen sein. Wählen Sie "Tools" -> "Optionen" -> "F# Interactive für Visual Studio" aus, und geben Sie "--fsi-server-no-unicode" ein. + Beim Starten des F# Interactive-Prozesses ist ein Fehler aufgetreten. Ursache hierfür kann ein bekanntes Problem mit der Hintergrundprozess-Konsolenunterstützung für Unicode-aktivierte Anwendungen unter manchen Windows-Systemen sein. Navigieren Sie zu "Tools > Optionen > F# Interactive für Visual Studio", und geben Sie --fsi-server-no-unicode ein. @@ -219,22 +219,22 @@ --> Referenced '{0}' - --> Auf "{0}" wurde verwiesen + --> Auf {0} wurde verwiesen --> Referenced '{0}' (file may be locked by F# Interactive process) - --> Auf "{0}" wurde verwiesen (die Datei wird möglicherweise vom F# Interactive-Prozess gesperrt) + --> Auf {0} wurde verwiesen (die Datei wird möglicherweise vom F# Interactive-Prozess gesperrt). --> Referenced '{0}' (an assembly with a different timestamp has already been referenced from this location, reset fsi to load the updated assembly) - --> Auf "{0}" wurde verwiesen (eine Assembly mit einem anderen Zeitstempel wurde bereits von diesem Ort verwiesen; stellen Sie fsi wieder her, um die aktualisierte Assembly zu laden) + --> Auf {0} wurde verwiesen (eine Assembly mit einem anderen Zeitstempel wurde bereits von diesem Ort verwiesen; setzen Sie fsi zurück, um die aktualisierte Assembly zu laden). --> Added '{0}' to library include path - --> "{0}" wurde zum Bibliotheksincludepfad hinzugefügt + --> {0} wurde zum Bibliotheksincludepfad hinzugefügt. diff --git a/src/fsharp/fsi/xlf/FSIstrings.txt.es.xlf b/src/fsharp/fsi/xlf/FSIstrings.txt.es.xlf index de2f164e3a8..d5ec3bf213c 100644 --- a/src/fsharp/fsi/xlf/FSIstrings.txt.es.xlf +++ b/src/fsharp/fsi/xlf/FSIstrings.txt.es.xlf @@ -4,12 +4,12 @@ Operation could not be completed due to earlier error - Operation could not be completed due to earlier error + La operación no se pudo completar debido a un error anterior Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing - Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing + Error en la operación. El texto del error se ha impreso en la secuencia de errores. Para devolver el correspondiente FSharpErrorInfo, use EvalInteractionNonThrowing, EvalScriptNonThrowing o EvalExpressionNonThrowing @@ -109,7 +109,7 @@ A problem occurred starting the F# Interactive process. This may be due to a known problem with background process console support for Unicode-enabled applications on some Windows systems. Try selecting Tools->Options->F# Interactive for Visual Studio and enter '--fsi-server-no-unicode'. - Se produjo un problema al iniciar el proceso de F# interactivo. Esto puede deberse a un problema conocido de compatibilidad de la consola de procesos en segundo plano con aplicaciones habilitadas para Unicode en algunos sistemas Windows. Pruebe lo siguiente: seleccione Herramientas->Opciones->F# interactivo para Visual Studio y escriba '--fsi-server-no-unicode'. + Se ha producido un problema al iniciar el proceso interactivo de F. Esto puede deberse a un problema conocido con la compatibilidad con la consola de proceso en segundo plano para aplicaciones habilitadas para Unicode en algunos sistemas Windows. Pruebe a seleccionar Herramientas->Opciones->F# interactivo para Visual Studio y escriba "--fsi-server-no-unicode". @@ -219,22 +219,22 @@ --> Referenced '{0}' - --> '{0}' referenciado + --> "{0}" referenciado --> Referenced '{0}' (file may be locked by F# Interactive process) - --> '{0}' al que se hace referencia (el archivo puede estar bloqueado por un proceso de F# interactivo) + --> "{0}" referenciado (el archivo puede estar bloqueado por un proceso interactivo de F#) --> Referenced '{0}' (an assembly with a different timestamp has already been referenced from this location, reset fsi to load the updated assembly) - --> Se hace referencia a '{0}' (ya se ha hecho referencia a un ensamblado con una marca de tiempo distinta desde esta ubicación, restablecer fsi para cargar el ensamblado actualizado) + --> "{0}" referenciado (ya se ha hecho referencia a un ensamblado con una marca de tiempo diferente desde esta ubicación, restablezca fsi para cargar el ensamblado actualizado) --> Added '{0}' to library include path - --> Se agregó '{0}' a la ruta de acceso de inclusión de biblioteca + -> Se agregó "{0}" a la ruta de acceso de inclusión de biblioteca diff --git a/src/fsharp/fsi/xlf/FSIstrings.txt.fr.xlf b/src/fsharp/fsi/xlf/FSIstrings.txt.fr.xlf index 040a8021fc7..963d52c6504 100644 --- a/src/fsharp/fsi/xlf/FSIstrings.txt.fr.xlf +++ b/src/fsharp/fsi/xlf/FSIstrings.txt.fr.xlf @@ -4,12 +4,12 @@ Operation could not be completed due to earlier error - Operation could not be completed due to earlier error + Impossible d'exécuter l'opération en raison d'une erreur antérieure Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing - Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing + L'opération a échoué. Le texte d'erreur a été imprimé dans le flux d'erreurs. Pour retourner le FSharpErrorInfo correspondant, utiliser EvalInteractionNonThrowing, EvalScriptNonThrowing ou EvalExpressionNonThrowing @@ -109,7 +109,7 @@ A problem occurred starting the F# Interactive process. This may be due to a known problem with background process console support for Unicode-enabled applications on some Windows systems. Try selecting Tools->Options->F# Interactive for Visual Studio and enter '--fsi-server-no-unicode'. - Un problème s'est produit lors du démarrage du processus F# Interactive. Cela peut être dû à un problème connu lié à la prise en charge par la console des processus en arrière-plan pour les applications Unicode sur certains systèmes Windows. Essayez de sélectionner Outils->Options->F# Interactive pour Visual Studio, puis entrez '--fsi-server-no-unicode'. + Un problème s'est produit au démarrage du processus F# Interactive. Il s'agit peut-être d'un problème connu avec la prise en charge de la console de processus d'arrière-plan pour les applications Unicode sur certains systèmes Windows. Essayez de sélectionner Outils->Options->F# Interactive pour Visual Studio et d'entrer '--fsi-server-no-unicode'. @@ -219,22 +219,22 @@ --> Referenced '{0}' - --> Référencement de '{0}' + --> '{0}' référencé --> Referenced '{0}' (file may be locked by F# Interactive process) - --> Référencement de '{0}' (le fichier est peut-être verrouillé par le processus F# Interactive) + --> '{0}' référencé (le fichier est peut-être verrouillé par le processus F# Interactive) --> Referenced '{0}' (an assembly with a different timestamp has already been referenced from this location, reset fsi to load the updated assembly) - --> Référencement de '{0}' (un assembly avec un horodatage différent a déjà été référencé à partir de cet emplacement, réinitialisez fsi pour charger l'assembly mis à jour) + --> '{0}' référencé (un assembly avec un horodatage différent a déjà été référencé à cet emplacement, réinitialiser fsi pour charger l'assembly mis à jour) --> Added '{0}' to library include path - --> Ajout de '{0}' au chemin d'accès Include de la bibliothèque + --> '{0}' ajouté au chemin d'inclusion de bibliothèque diff --git a/src/fsharp/fsi/xlf/FSIstrings.txt.it.xlf b/src/fsharp/fsi/xlf/FSIstrings.txt.it.xlf index 9468b8aa2ae..aa030eb6b34 100644 --- a/src/fsharp/fsi/xlf/FSIstrings.txt.it.xlf +++ b/src/fsharp/fsi/xlf/FSIstrings.txt.it.xlf @@ -4,12 +4,12 @@ Operation could not be completed due to earlier error - Operation could not be completed due to earlier error + Non è stato possibile completare l'operazione a causa di un errore precedente Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing - Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing + L'operazione non è riuscita. Il testo dell'errore è stato stampato nel flusso degli errori. Per restituire l'elemento FSharpErrorInfo corrispondente, usare EvalInteractionNonThrowing, EvalScriptNonThrowing o EvalExpressionNonThrowing @@ -19,7 +19,7 @@ Usage: {0} <options> [script.fsx [<arguments>]] - Sintassi: {0} <opzioni> [script.fsx [<argomenti>]] + Utilizzo: {0} <opzioni> [script.fsx [<argomenti>]] @@ -219,12 +219,12 @@ --> Referenced '{0}' - --> Riferimento a '{0}' + --> Riferimento già presente a '{0}' --> Referenced '{0}' (file may be locked by F# Interactive process) - --> Riferimento a '{0}' (il file potrebbe essere bloccato dal processo di F# Interactive) + --> Riferimento già presente a '{0}' (il file potrebbe essere bloccato dal processo di F# Interactive) diff --git a/src/fsharp/fsi/xlf/FSIstrings.txt.ja.xlf b/src/fsharp/fsi/xlf/FSIstrings.txt.ja.xlf index 81ab0861dc0..ad4b06f0fd0 100644 --- a/src/fsharp/fsi/xlf/FSIstrings.txt.ja.xlf +++ b/src/fsharp/fsi/xlf/FSIstrings.txt.ja.xlf @@ -4,12 +4,12 @@ Operation could not be completed due to earlier error - Operation could not be completed due to earlier error + 以前のエラーが原因で操作を完了できませんでした Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing - Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing + 操作に失敗しました。エラー テキストがエラー ストリームで印刷されました。対応する FSharpErrorInfo を戻すには、EvalInteractionNonThrowing、EvalScriptuNonThrowing、または EvalExpressionNonThrowing を使用します @@ -19,7 +19,7 @@ Usage: {0} <options> [script.fsx [<arguments>]] - 使い方: {0} <オプション> [script.fsx [<引数>]] + 使用状況: {0} <オプション> [script.fsx [<引数>]] @@ -109,7 +109,7 @@ A problem occurred starting the F# Interactive process. This may be due to a known problem with background process console support for Unicode-enabled applications on some Windows systems. Try selecting Tools->Options->F# Interactive for Visual Studio and enter '--fsi-server-no-unicode'. - F# インタラクティブのプロセスの開始中に問題が発生しました。この原因は、一部の Windows システム上での Unicode 対応アプリケーションのバックグラウンド プロセス コンソールのサポートに関する既知の問題にある可能性があります。[ツール]5D; の [オプション]5D; から [F# Interactive for Visual Studio]5D; を選択し、「--fsi-server-no-unicode」と入力してください。 + F# 対話型プロセスの開始で問題が発生しました。これは、一部の Windows システムで Unicode 対応アプリケーションのバックグラウンド プロセス コンソールのサポートに関する既知の問題が原因である可能性があります。Visual Studio で ツール->オプション->F# インタラクティブを選択し、「-fsi-server-no-unicode」と入力します。 @@ -219,17 +219,17 @@ --> Referenced '{0}' - --> '{0}' を参照しました + --> 参照済み '{0}' --> Referenced '{0}' (file may be locked by F# Interactive process) - --> '{0}' を参照しました (ファイルが F# インタラクティブのプロセスによってロックされている可能性があります) + --> 参照済み '{0}' (ファイルは F# 対話型プロセスによってロックされている可能性があります) --> Referenced '{0}' (an assembly with a different timestamp has already been referenced from this location, reset fsi to load the updated assembly) - --> 参照された '{0}' (タイムスタンプが異なるアセンブリが既にこの場所から参照されています。fsi をリセットして更新されたアセンブリを読み込んでください) + --> 参照済み '{0}' (異なるタイムスタンプを持つアセンブリがこの場所から既に参照されています、更新されたアセンブリを読み込むには fsi をリセットします) @@ -239,12 +239,12 @@ --> Timing now on - --> 現在タイミングはオンです + --> 今すぐタイミング オン --> Timing now off - --> 現在タイミングはオフです + --> 今すぐタイミング オフ diff --git a/src/fsharp/fsi/xlf/FSIstrings.txt.ko.xlf b/src/fsharp/fsi/xlf/FSIstrings.txt.ko.xlf index f476d85f8eb..53f9f276082 100644 --- a/src/fsharp/fsi/xlf/FSIstrings.txt.ko.xlf +++ b/src/fsharp/fsi/xlf/FSIstrings.txt.ko.xlf @@ -4,12 +4,12 @@ Operation could not be completed due to earlier error - Operation could not be completed due to earlier error + 이전 오류로 인해 작업을 완료할 수 없습니다. Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing - Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing + 작업이 실패했습니다. 오류 텍스트가 오류 스트림에 인쇄되었습니다. 해당 FSharpErrorInfo를 반환하려면 EvalInteractionNonThrowing, EvalScriptNonThrowing 또는 EvalExpressionNonThrowing를 사용하세요. @@ -19,7 +19,7 @@ Usage: {0} <options> [script.fsx [<arguments>]] - 사용법: {0} <options> [script.fsx [<arguments>]] + 사용법: {0} <옵션> [script.fsx [<인수>]] @@ -109,7 +109,7 @@ A problem occurred starting the F# Interactive process. This may be due to a known problem with background process console support for Unicode-enabled applications on some Windows systems. Try selecting Tools->Options->F# Interactive for Visual Studio and enter '--fsi-server-no-unicode'. - F# 대화형 프로세스를 시작하는 동안 오류가 발생했습니다. 일부 Windows 시스템에서 나타나는 유니코드 기반 애플리케이션의 백그라운드 프로세스 콘솔 지원과 관련된 알려진 문제가 원인일 수 있습니다. [도구]->[옵션]->[Visual Studio용 F# 대화형]를 선택하고 '--fsi-server-no-unicode'를 입력해 보세요. + F# Interactive 프로세스를 시작하는 동안 문제가 발생했습니다. 일부 Windows 시스템의 유니코드 기반 애플리케이션에 대한 백그라운드 프로세스 콘솔 지원과 관련된 알려진 문제가 원인일 수 있습니다. [도구]>[옵션]->[F# Interactive for Visual Studio]를 선택하고 '--fsi-server-no-unicode'를 입력해 보세요. @@ -219,32 +219,32 @@ --> Referenced '{0}' - --> '{0}'이(가) 참조되었습니다. + --> '{0}'을(를) 참조함 --> Referenced '{0}' (file may be locked by F# Interactive process) - --> '{0}' 참조됨(파일은 F# 대화형 프로세스에 의해 잠길 수 있음) + --> 참조된 '{0}'(파일이 F# Interactive 프로세스에 의해 잠겼을 수 있음) --> Referenced '{0}' (an assembly with a different timestamp has already been referenced from this location, reset fsi to load the updated assembly) - --> 참조된 '{0}'(다른 타임스탬프가 포함된 어셈블리가 이 위치에서 이미 참조되었습니다. fsi를 다시 설정하여 업데이트된 어셈블리를 로드하세요.) + --> '{0}'을(를) 참조함(다른 타임스탬프가 있는 어셈블리가 이미 이 위치에서 참조되었습니다. fsi를 다시 설정하여 업데이트된 어셈블리를 로드하세요.) --> Added '{0}' to library include path - --> 라이브러리 포함 경로에 '{0}'을(를) 추가했습니다. + --> 라이브러리 포함 경로에 '{0}'을(를) 추가함 --> Timing now on - --> 타이밍이 설정되었습니다. + --> 지금 타이밍 켜기 --> Timing now off - --> 타이밍이 해제되었습니다. + --> 지금 타이밍 끄기 diff --git a/src/fsharp/fsi/xlf/FSIstrings.txt.pl.xlf b/src/fsharp/fsi/xlf/FSIstrings.txt.pl.xlf index 24115c1fa37..3666ea478ed 100644 --- a/src/fsharp/fsi/xlf/FSIstrings.txt.pl.xlf +++ b/src/fsharp/fsi/xlf/FSIstrings.txt.pl.xlf @@ -4,12 +4,12 @@ Operation could not be completed due to earlier error - Operation could not be completed due to earlier error + Nie udało się ukończyć operacji z powodu wcześniejszego błędu Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing - Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing + Operacja nie powiodła się. Tekst błędu został umieszczony w strumieniu błędów. Aby zwrócić odpowiedni element FSharpErrorInfo, użyj elementu EvalInteractionNonThrowing, eEvalScriptNonThrowing lub EvalExpressionNonThrowing @@ -19,7 +19,7 @@ Usage: {0} <options> [script.fsx [<arguments>]] - Składnia: {0} <opcje> [script.fsx [<argumenty>]] + Użycie: {0} <opcje> [script.fsx [<argumenty>]] @@ -109,7 +109,7 @@ A problem occurred starting the F# Interactive process. This may be due to a known problem with background process console support for Unicode-enabled applications on some Windows systems. Try selecting Tools->Options->F# Interactive for Visual Studio and enter '--fsi-server-no-unicode'. - Wystąpił problem podczas uruchamiania procesu narzędzia F# Interactive. Taka sytuacja może być spowodowana znanym problemem z obsługą konsoli procesu w tle dla aplikacji obsługujących kodowanie Unicode w niektórych systemach Windows. Spróbuj wybrać kolejno opcje Narzędzia->Opcje->F# Interactive dla Visual Studio i wprowadź „--fsi-server-no-unicode”. + Wystąpił problem podczas uruchamiania procesu narzędzia F# Interactive. Może to być spowodowane znanym problemem z obsługą konsoli procesu w tle dla aplikacji obsługujących standard Unicode w niektórych systemach Windows. Spróbuj wybrać pozycje Narzędzia->Opcje->F# Interactive dla programu Visual Studio i wprowadź ciąg „--fsi-server-no-unicode”. @@ -229,22 +229,22 @@ --> Referenced '{0}' (an assembly with a different timestamp has already been referenced from this location, reset fsi to load the updated assembly) - --> Zestaw „{0}” występujący w odwołaniu (zestaw z inną sygnaturą czasową występuje już w odwołaniu z tej lokalizacji; zresetuj narzędzie fsi, aby załadować zaktualizowany zestaw) + --> Przywołano element „{0}” (z tej lokalizacji przywołano już zestaw z inną sygnaturą czasową, zresetuj narzędzie fsi, aby załadować zaktualizowany zestaw) --> Added '{0}' to library include path - --> Dodano element „{0}” do ścieżki dołączenia biblioteki + --> Dodano element „{0}” do ścieżki dołączania biblioteki --> Timing now on - --> Funkcja chronometrażu została włączona + --> Chronometraż jest teraz włączony --> Timing now off - --> Funkcja chronometrażu została wyłączona + --> Chronometraż jest teraz wyłączony diff --git a/src/fsharp/fsi/xlf/FSIstrings.txt.pt-BR.xlf b/src/fsharp/fsi/xlf/FSIstrings.txt.pt-BR.xlf index ceaea230ada..9adafa2f096 100644 --- a/src/fsharp/fsi/xlf/FSIstrings.txt.pt-BR.xlf +++ b/src/fsharp/fsi/xlf/FSIstrings.txt.pt-BR.xlf @@ -4,12 +4,12 @@ Operation could not be completed due to earlier error - Operation could not be completed due to earlier error + Não foi possível concluir a operação devido a um erro anterior Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing - Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing + Falha na operação. O texto do erro foi impresso no fluxo de erros. Para retornar o FSharpErrorInfo correspondente, use EvalInteractionNonThrowing, EvalScriptNonThrowing ou EvalExpressionNonThrowing @@ -19,7 +19,7 @@ Usage: {0} <options> [script.fsx [<arguments>]] - Uso: {0} <opções> [script.fsx [<argumentos>]] + Uso: {0} <options> [script.fsx [<arguments>]] @@ -109,7 +109,7 @@ A problem occurred starting the F# Interactive process. This may be due to a known problem with background process console support for Unicode-enabled applications on some Windows systems. Try selecting Tools->Options->F# Interactive for Visual Studio and enter '--fsi-server-no-unicode'. - Um problema ocorreu na inicialização do processo interativo #F. Isto pode ter ocorrido devido a um problema conhecido com processo de fundo do console de apoio pelo aplicativos habilitados Unicode em alguns sistemas do Windows. Tente Ferramentas->Opções->Interativo F# para Visual Studio e insira '--fsi-server-no-unicode'. + Ocorreu um problema ao iniciar o processo do F# Interativo. O motivo pode ser um problema conhecido com o suporte do console do processo em segundo plano para aplicativos habilitados para Unicode em alguns sistemas Windows. Tente selecionar Ferramentas->Opções->F# Interativo para Visual Studio e digite '--fsi-server-no-unicode'. @@ -219,32 +219,32 @@ --> Referenced '{0}' - --> Referenciado '{0}' + --> '{0}' referenciado --> Referenced '{0}' (file may be locked by F# Interactive process) - --> Referenciado '{0}' (o arquivo pode ter sido bloqueado pelo processo F# Interativo) + --> '{0}' referenciado (o arquivo pode estar bloqueado pelo processo do F# Interativo) --> Referenced '{0}' (an assembly with a different timestamp has already been referenced from this location, reset fsi to load the updated assembly) - --> '{0}' referenciado (um assembly com um carimbo de data/hora diferente já foi referenciado deste local, redefina o fsi para carregar o assembly atualizado) + --> '{0}' referenciado (um assembly com um carimbo de data/hora diferente já foi referenciado deste local. Redefina o FSI para carregar o assembly atualizado) --> Added '{0}' to library include path - --> '{0}' foi adicionado à biblioteca de caminho de inclusão + --> Foi adicionado '{0}' ao caminho de inclusão da biblioteca --> Timing now on - --> Timing ligado agora + --> Sincronização ativada agora --> Timing now off - --> Timing desligado agora + --> Sincronização desativada agora diff --git a/src/fsharp/fsi/xlf/FSIstrings.txt.ru.xlf b/src/fsharp/fsi/xlf/FSIstrings.txt.ru.xlf index 25c322aa907..9cbfe6ff50f 100644 --- a/src/fsharp/fsi/xlf/FSIstrings.txt.ru.xlf +++ b/src/fsharp/fsi/xlf/FSIstrings.txt.ru.xlf @@ -4,12 +4,12 @@ Operation could not be completed due to earlier error - Operation could not be completed due to earlier error + Операция не может быть завершена из-за предыдущей ошибки Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing - Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing + Не удалось выполнить операцию. Текст ошибки был выведен в потоке ошибок. Чтобы вернуть соответствующие сведения FSharpErrorInfo, используйте EvalInteractionNonThrowing, EvalScriptNonThrowing или EvalExpressionNonThrowing @@ -109,7 +109,7 @@ A problem occurred starting the F# Interactive process. This may be due to a known problem with background process console support for Unicode-enabled applications on some Windows systems. Try selecting Tools->Options->F# Interactive for Visual Studio and enter '--fsi-server-no-unicode'. - Возникла проблема при запуске процесса F# Interactive. Это может быть вызвано известной проблемой с поддержкой консоли фонового процесса для приложений с поддержкой Юникода в некоторых системах Windows. Попробуйте выбрать "Сервис" -> "Параметры" -> "F# Interactive для Visual Studio" и ввести "--fsi-server-no-unicode". + Возникла проблема при запуске процесса F# Interactive. Это может быть связано с известной проблемой с поддержкой консоли в фоновых процессах для приложений с поддержкой Unicode на некоторых системах Windows. Выберите "Инструменты"->"Параметры"->"F# Interactive" для Visual Studio и введите '--fsi-server-no-unicode'. @@ -219,32 +219,32 @@ --> Referenced '{0}' - --> Задана ссылка на "{0}" + --> Добавлена ссылка на "{0}" --> Referenced '{0}' (file may be locked by F# Interactive process) - --> Задана ссылка на "{0}" (возможно, файл заблокирован процессом F# Interactive) + --> Добавлена ссылка на "{0}" (файл может быть заблокирован процессом F# Interactive) --> Referenced '{0}' (an assembly with a different timestamp has already been referenced from this location, reset fsi to load the updated assembly) - --> "{0}" с заданной ссылкой (из этого расположения уже задана ссылка на сборку с другой меткой времени, выполните сброс fsi, чтобы загрузить обновленную сборку) + --> Добавлена ссылка на "{0}" (из этого расположения уже указана ссылка на сборку с другой временной отметкой; чтобы загрузить обновленную сборку, сбросьте fsi) --> Added '{0}' to library include path - --> Выполнено добавление "{0}" по пути включения в библиотеку + --> В путь включения библиотеки добавлен "{0}" --> Timing now on - --> Таймер включен + --> Синхронизация включена --> Timing now off - --> Таймер отключен + --> Синхронизация отключена diff --git a/src/fsharp/fsi/xlf/FSIstrings.txt.tr.xlf b/src/fsharp/fsi/xlf/FSIstrings.txt.tr.xlf index b061a19e37f..65042521c76 100644 --- a/src/fsharp/fsi/xlf/FSIstrings.txt.tr.xlf +++ b/src/fsharp/fsi/xlf/FSIstrings.txt.tr.xlf @@ -4,12 +4,12 @@ Operation could not be completed due to earlier error - Operation could not be completed due to earlier error + Önceki hata nedeniyle işlem tamamlanamadı Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing - Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing + İşlem başarısız oldu. Hata metni hata akışında yazdırıldı. İlgili FSharpErrorInfo bilgilerini döndürmek için EvalInteractionNonThrowing, EvalScriptNonThrowing veya EvalExpressionNonThrowing kullanın @@ -109,7 +109,7 @@ A problem occurred starting the F# Interactive process. This may be due to a known problem with background process console support for Unicode-enabled applications on some Windows systems. Try selecting Tools->Options->F# Interactive for Visual Studio and enter '--fsi-server-no-unicode'. - F# Etkileşimli işlemi başlatılırken bir sorun oluştu. Bu durum, bazı Windows sistemlerindeki Unicode kullanan uygulamalara yönelik arka plan işlemi konsol desteğinde bilinen bir soruna bağlı olabilir. Visual Studio için Araçlar->Seçenekler->F# Etkileşimli'yi seçmeyi deneyin ve '--fsi-server-no-unicode' girin. + F# Interactive işlemi başlatılırken br sorun oluştu. Bu, bazı Windows sistemlerinde Unicode etkin uygulamalar için arka planda işleme konsol desteğiyle ilgili bilinen bir sorundan kaynaklanıyor olabilir. Araçlar->Seçenekler->Visual Studio için F# Interactive seçeneğini belirleyip '--fsi-server-no-unicode' komutunu girmeyi deneyin. @@ -219,32 +219,32 @@ --> Referenced '{0}' - --> '{0}' öğesine başvuruldu + --> Başvurulan '{0}' --> Referenced '{0}' (file may be locked by F# Interactive process) - --> '{0}' öğesine başvuruldu (dosya F# Etkileşimli işlemi tarafından kilitlenmiş olabilir) + --> Başvurulan '{0}' (dosya F# Interactive işlemi tarafından kilitlenmiş olabilir) --> Referenced '{0}' (an assembly with a different timestamp has already been referenced from this location, reset fsi to load the updated assembly) - --> Başvurulan '{0}' (farklı bir zaman damgası olan bir bütünleştirilmiş koda bu konumdan zaten başvuruldu; güncelleştirilen bütünleştirilmiş kodu yüklemek için fsi'yi sıfırlayın) + --> Başvurulan '{0}' (bu konumdan farklı bir zaman damgasına sahip bir derlemeye zaten başvurulmuş, güncelleştirilmiş derlemeyi yüklemek için fsi'yi sıfırlayın) --> Added '{0}' to library include path - --> Kitaplık ekleme yoluna '{0}' eklendi + --> '{0}', kitaplık ekleme yoluna eklendi --> Timing now on - --> Zamanlama şimdi açık + --> Zamanlama açıldı --> Timing now off - --> Zamanlama şimdi kapalı + --> Zamanlama kapatıldı diff --git a/src/fsharp/fsi/xlf/FSIstrings.txt.zh-Hans.xlf b/src/fsharp/fsi/xlf/FSIstrings.txt.zh-Hans.xlf index 6f28ddc77dd..a97b57363e8 100644 --- a/src/fsharp/fsi/xlf/FSIstrings.txt.zh-Hans.xlf +++ b/src/fsharp/fsi/xlf/FSIstrings.txt.zh-Hans.xlf @@ -4,12 +4,12 @@ Operation could not be completed due to earlier error - Operation could not be completed due to earlier error + 由于早期错误,无法完成操作 Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing - Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing + 操作失败。错误文本已在错误流中打印。要返回相应的 FSharpErrorInfo,请使用 EvalInteractionNonThrowing、EvalScriptNonThrowing 或 EvalExpressionNonThrowing @@ -109,7 +109,7 @@ A problem occurred starting the F# Interactive process. This may be due to a known problem with background process console support for Unicode-enabled applications on some Windows systems. Try selecting Tools->Options->F# Interactive for Visual Studio and enter '--fsi-server-no-unicode'. - 启动 F# 交互窗口进程时发生问题。此情况可能是由一个已知问题导致的,即某些 Windows 系统上的后台进程控制台不支持启用了 Unicode 的应用程序。请尝试选择“工具”->“选项”->“Visual Studio 的 F# 交互窗口”,然后输入“--fsi-server-no-unicode”。 + 启动 F# 交互进程时出现问题。这可能是由于某些 Windows 系统上启用 Unicode 的应用程序的后台进程控制台支持存在已知问题。请尝试选择“工具”->“选项”-> "F# Interactive for Visual Studio",然后输入 "--fsi-server-no-unicode"。 @@ -219,32 +219,32 @@ --> Referenced '{0}' - --> 已引用“{0}” + -> 引用的“{0}” --> Referenced '{0}' (file may be locked by F# Interactive process) - --> 已引用“{0}”(文件可能由 F# 交互窗口进程锁定) + --> 引用的“{0}”(F# 交互进程可能已锁定文件) --> Referenced '{0}' (an assembly with a different timestamp has already been referenced from this location, reset fsi to load the updated assembly) - ->引用“{0}”(具有不同时间戳的程序集已经从该位置引用并重置 fsi 以加载更新的程序集) + --> 引用的“{0}”(已从此位置引用具有不同时间戳的程序集,请重置 fsi 以加载更新后的程序集) --> Added '{0}' to library include path - --> 已将“{0}”添加到库包含路径 + --> 已将“{0}”添加到库包括路径 --> Timing now on - --> 现在已启用计时 + -> 计时现在打开 --> Timing now off - --> 现在已关闭计时 + -> 计时现已关闭 diff --git a/src/fsharp/fsi/xlf/FSIstrings.txt.zh-Hant.xlf b/src/fsharp/fsi/xlf/FSIstrings.txt.zh-Hant.xlf index a8d771d1c37..936f04dd787 100644 --- a/src/fsharp/fsi/xlf/FSIstrings.txt.zh-Hant.xlf +++ b/src/fsharp/fsi/xlf/FSIstrings.txt.zh-Hant.xlf @@ -4,12 +4,12 @@ Operation could not be completed due to earlier error - Operation could not be completed due to earlier error + 因為先前發生錯誤,所以無法完成作業 Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing - Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing + 作業失敗。錯誤文字已列印在錯誤資料流中。若要傳回相對應的 FSharpErrorInfo,請使用 EvalInteractionNonThrowing、EvalScriptNonThrowing 或 EvalExpressionNonThrowing @@ -19,7 +19,7 @@ Usage: {0} <options> [script.fsx [<arguments>]] - 使用方式: {0} <選項> [script.fsx [<引數>]] + 用法: {0} <選項> [script.fsx [<引數>]] @@ -109,7 +109,7 @@ A problem occurred starting the F# Interactive process. This may be due to a known problem with background process console support for Unicode-enabled applications on some Windows systems. Try selecting Tools->Options->F# Interactive for Visual Studio and enter '--fsi-server-no-unicode'. - 啟動 F# 互動處理序時發生問題。這可能是因為背景處理序主控台對於支援某些 Windows 系統上具備 Unicode 支援功能之應用程式的已知問題所造成。請嘗試選取 [工具] -> [選項] -> [F# Interactive for Visual Studio],然後輸入 '--fsi-server-no-unicode'。 + 啟動 F# Interactive 處理序時發生錯誤。這可能是某些 Windows 系統上可使用 Unicode 之應用程式的背景處理序主控台支援發生已知錯誤所致。請嘗試選取 [工具]->[選項]->[適用於 Visual Studio 的 F# Interactive] 並輸入 '--fsi-server-no-unicode’。 @@ -219,32 +219,32 @@ --> Referenced '{0}' - --> 參考的 '{0}' + --> 已參考 '{0}’ --> Referenced '{0}' (file may be locked by F# Interactive process) - --> 參考的 '{0}' (檔案可能已被 F# 互動處理序鎖定) + --> 已參考 '{0}' (F# Interactive 處理序可能鎖定了檔案) --> Referenced '{0}' (an assembly with a different timestamp has already been referenced from this location, reset fsi to load the updated assembly) - --> 已參考 '{0}' (已經從這個位置參考有不同時間戳記的組件,請重設 fsi 以載入更新的組件) + --> 已參考 '{0}' (已從此位置參考具有不同時間戳記的組件,請重設 fsi 以載入更新的組件) --> Added '{0}' to library include path - --> 已將 '{0}' 加入程式庫 Include 路徑 + --> 已將 '{0}' 新增到程式庫 include 路徑 --> Timing now on - --> 計時現已開啟 + --> 計時現在已開啟 --> Timing now off - --> 計時現已關閉 + --> 計時現在已關閉 diff --git a/src/fsharp/xlf/FSComp.txt.cs.xlf b/src/fsharp/xlf/FSComp.txt.cs.xlf index b59583e3347..77e56a45a16 100644 --- a/src/fsharp/xlf/FSComp.txt.cs.xlf +++ b/src/fsharp/xlf/FSComp.txt.cs.xlf @@ -14,12 +14,12 @@ Stream does not begin with a null resource and is not in '.RES' format. - Stream does not begin with a null resource and is not in '.RES' format. + Stream nezačíná zdrojem s hodnotou null a není ve formátu .RES. Resource header beginning at offset {0} is malformed. - Resource header beginning at offset {0} is malformed. + Hlavička zdroje začínající na posunu {0} má chybný formát. @@ -54,7 +54,7 @@ Attributes cannot be applied to type extensions. - Attributes cannot be applied to type extensions. + Atributy nejde použít pro rozšíření typů. diff --git a/src/fsharp/xlf/FSComp.txt.de.xlf b/src/fsharp/xlf/FSComp.txt.de.xlf index 51348f9b49f..85b84bef7ce 100644 --- a/src/fsharp/xlf/FSComp.txt.de.xlf +++ b/src/fsharp/xlf/FSComp.txt.de.xlf @@ -14,12 +14,12 @@ Stream does not begin with a null resource and is not in '.RES' format. - Stream does not begin with a null resource and is not in '.RES' format. + Der Stream beginnt nicht mit einer NULL-Ressource und ist nicht im RES-Format. Resource header beginning at offset {0} is malformed. - Resource header beginning at offset {0} is malformed. + Der Ressourcenheader, der am Offset {0} beginnt, ist fehlerhaft formatiert. @@ -54,7 +54,7 @@ Attributes cannot be applied to type extensions. - Attributes cannot be applied to type extensions. + Attribute können nicht auf Typerweiterungen angewendet werden. diff --git a/src/fsharp/xlf/FSComp.txt.es.xlf b/src/fsharp/xlf/FSComp.txt.es.xlf index 756116b3626..2b45ad5877d 100644 --- a/src/fsharp/xlf/FSComp.txt.es.xlf +++ b/src/fsharp/xlf/FSComp.txt.es.xlf @@ -14,12 +14,12 @@ Stream does not begin with a null resource and is not in '.RES' format. - Stream does not begin with a null resource and is not in '.RES' format. + El flujo no comienza con un recurso nulo ni está en formato ".RES". Resource header beginning at offset {0} is malformed. - Resource header beginning at offset {0} is malformed. + El encabezado de los recursos que comienza en el desplazamiento {0} está mal formado. @@ -54,7 +54,7 @@ Attributes cannot be applied to type extensions. - Attributes cannot be applied to type extensions. + Los atributos no se pueden aplicar a las extensiones de tipo. @@ -164,7 +164,7 @@ All branches of a pattern match expression must return values of the same type as the first branch, which here is '{0}'. This branch returns a value of type '{1}'. - All branches of a pattern match expression must return values of the same type as the first branch, which here is '{0}'. This branch returns a value of type '{1}'. + Todas las ramas de una expresión de coincidencia de patrón deben devolver valores del mismo tipo. La primera rama devolvió un valor de tipo "{0}", pero esta rama devolvió un valor de tipo "\{1 \}". diff --git a/src/fsharp/xlf/FSComp.txt.fr.xlf b/src/fsharp/xlf/FSComp.txt.fr.xlf index c810c607c1c..7cb592acf73 100644 --- a/src/fsharp/xlf/FSComp.txt.fr.xlf +++ b/src/fsharp/xlf/FSComp.txt.fr.xlf @@ -14,12 +14,12 @@ Stream does not begin with a null resource and is not in '.RES' format. - Stream does not begin with a null resource and is not in '.RES' format. + Le flux ne commence pas par une ressource null et n'est pas au format '.RES'. Resource header beginning at offset {0} is malformed. - Resource header beginning at offset {0} is malformed. + L'en-tête de ressource commençant au décalage {0} est mal formé. @@ -54,7 +54,7 @@ Attributes cannot be applied to type extensions. - Attributes cannot be applied to type extensions. + Impossible d'appliquer des attributs aux extensions de type. diff --git a/src/fsharp/xlf/FSComp.txt.it.xlf b/src/fsharp/xlf/FSComp.txt.it.xlf index 4cb77118a15..1f02bf64d4e 100644 --- a/src/fsharp/xlf/FSComp.txt.it.xlf +++ b/src/fsharp/xlf/FSComp.txt.it.xlf @@ -14,12 +14,12 @@ Stream does not begin with a null resource and is not in '.RES' format. - Stream does not begin with a null resource and is not in '.RES' format. + Il flusso non inizia con una risorsa Null e non è in formato '.RES'. Resource header beginning at offset {0} is malformed. - Resource header beginning at offset {0} is malformed. + L'intestazione di risorsa che inizia a partire dall'offset {0} non è valida. @@ -54,7 +54,7 @@ Attributes cannot be applied to type extensions. - Attributes cannot be applied to type extensions. + Gli attributi non possono essere applicati a estensioni di tipo. diff --git a/src/fsharp/xlf/FSComp.txt.ja.xlf b/src/fsharp/xlf/FSComp.txt.ja.xlf index 8f9b825a16d..96c1b3c7c32 100644 --- a/src/fsharp/xlf/FSComp.txt.ja.xlf +++ b/src/fsharp/xlf/FSComp.txt.ja.xlf @@ -12,6 +12,16 @@ F# {1} のための {0} + + Stream does not begin with a null resource and is not in '.RES' format. + ストリームは null リソースでは始まらず、'RES' 形式でもありません。 + + + + Resource header beginning at offset {0} is malformed. + オフセット {0} で始まるリソース ヘッダーの形式に誤りがあります。 + + Display the allowed values for language version, specify language version such as 'latest' or 'preview' 言語バージョンで許可された値を表示し、'最新' や 'プレビュー' などの言語バージョンを指定する @@ -32,16 +42,6 @@ メンバー定義に予期しない記号 '.' があります。'with'、'=' またはその他のトークンが必要です。 - - Stream does not begin with a null resource and is not in '.RES' format. - Stream does not begin with a null resource and is not in '.RES' format. - - - - Resource header beginning at offset {0} is malformed. - Resource header beginning at offset {0} is malformed. - - Specify algorithm for calculating source file checksum stored in PDB. Supported values are: SHA1 or SHA256 (default) PDB に格納されているソース ファイル チェックサムを計算するためのアルゴリズムを指定します。サポートされる値は次のとおりです: SHA1 または SHA256 (既定) @@ -54,7 +54,7 @@ Attributes cannot be applied to type extensions. - Attributes cannot be applied to type extensions. + 属性を型拡張に適用することはできません。 diff --git a/src/fsharp/xlf/FSComp.txt.ko.xlf b/src/fsharp/xlf/FSComp.txt.ko.xlf index 1167a278aa6..aa68a787aa2 100644 --- a/src/fsharp/xlf/FSComp.txt.ko.xlf +++ b/src/fsharp/xlf/FSComp.txt.ko.xlf @@ -14,12 +14,12 @@ Stream does not begin with a null resource and is not in '.RES' format. - Stream does not begin with a null resource and is not in '.RES' format. + 스트림은 null 리소스로 시작되지 않으며 '.RES' 형식이 아닙니다. Resource header beginning at offset {0} is malformed. - Resource header beginning at offset {0} is malformed. + 오프셋 {0}에서 시작하는 리소스 헤더의 형식이 잘못되었습니다. @@ -54,7 +54,7 @@ Attributes cannot be applied to type extensions. - Attributes cannot be applied to type extensions. + 형식 확장에 특성을 적용할 수 없습니다. diff --git a/src/fsharp/xlf/FSComp.txt.pl.xlf b/src/fsharp/xlf/FSComp.txt.pl.xlf index 77d8530de51..d1e65e1eda1 100644 --- a/src/fsharp/xlf/FSComp.txt.pl.xlf +++ b/src/fsharp/xlf/FSComp.txt.pl.xlf @@ -14,12 +14,12 @@ Stream does not begin with a null resource and is not in '.RES' format. - Stream does not begin with a null resource and is not in '.RES' format. + Strumień nie zaczyna się od zasobu o wartości null i nie jest w formacie „.RES”. Resource header beginning at offset {0} is malformed. - Resource header beginning at offset {0} is malformed. + Nagłówek zasobu rozpoczynający się od przesunięcia {0} jest nieprawidłowo sformułowany. @@ -54,7 +54,7 @@ Attributes cannot be applied to type extensions. - Attributes cannot be applied to type extensions. + Atrybutów nie można stosować do rozszerzeń typu. diff --git a/src/fsharp/xlf/FSComp.txt.pt-BR.xlf b/src/fsharp/xlf/FSComp.txt.pt-BR.xlf index 1cd2930f59f..53c41b48559 100644 --- a/src/fsharp/xlf/FSComp.txt.pt-BR.xlf +++ b/src/fsharp/xlf/FSComp.txt.pt-BR.xlf @@ -14,12 +14,12 @@ Stream does not begin with a null resource and is not in '.RES' format. - Stream does not begin with a null resource and is not in '.RES' format. + Stream não começa com um recurso nulo e não está no formato '.RES'. Resource header beginning at offset {0} is malformed. - Resource header beginning at offset {0} is malformed. + O cabeçalho do recurso que começa no deslocamento {0} está malformado. @@ -54,7 +54,7 @@ Attributes cannot be applied to type extensions. - Attributes cannot be applied to type extensions. + Os atributos não podem ser aplicados às extensões de tipo. diff --git a/src/fsharp/xlf/FSComp.txt.ru.xlf b/src/fsharp/xlf/FSComp.txt.ru.xlf index f6da40570ba..b5642c8d86b 100644 --- a/src/fsharp/xlf/FSComp.txt.ru.xlf +++ b/src/fsharp/xlf/FSComp.txt.ru.xlf @@ -14,12 +14,12 @@ Stream does not begin with a null resource and is not in '.RES' format. - Stream does not begin with a null resource and is not in '.RES' format. + Поток не начинается с нулевого ресурса и не соответствует формату ".RES". Resource header beginning at offset {0} is malformed. - Resource header beginning at offset {0} is malformed. + Заголовок ресурса некорректен начиная со смещения {0}. @@ -54,7 +54,7 @@ Attributes cannot be applied to type extensions. - Attributes cannot be applied to type extensions. + Атрибуты не могут быть применены к расширениям типа. diff --git a/src/fsharp/xlf/FSComp.txt.tr.xlf b/src/fsharp/xlf/FSComp.txt.tr.xlf index e711f0f05ed..6e624b554c3 100644 --- a/src/fsharp/xlf/FSComp.txt.tr.xlf +++ b/src/fsharp/xlf/FSComp.txt.tr.xlf @@ -14,12 +14,12 @@ Stream does not begin with a null resource and is not in '.RES' format. - Stream does not begin with a null resource and is not in '.RES' format. + Akış null kaynakla başlamıyor ve '.RES' biçiminde değil. Resource header beginning at offset {0} is malformed. - Resource header beginning at offset {0} is malformed. + {0} uzaklığında başlayan kaynak üst bilgisi hatalı biçimlendirilmiş. @@ -54,7 +54,7 @@ Attributes cannot be applied to type extensions. - Attributes cannot be applied to type extensions. + Öznitelikler tür uzantılarına uygulanamaz. diff --git a/src/fsharp/xlf/FSComp.txt.zh-Hans.xlf b/src/fsharp/xlf/FSComp.txt.zh-Hans.xlf index 1e67dc374f2..ca7a3507659 100644 --- a/src/fsharp/xlf/FSComp.txt.zh-Hans.xlf +++ b/src/fsharp/xlf/FSComp.txt.zh-Hans.xlf @@ -14,12 +14,12 @@ Stream does not begin with a null resource and is not in '.RES' format. - Stream does not begin with a null resource and is not in '.RES' format. + 流应以空资源开头并且应采用 .RES 格式。 Resource header beginning at offset {0} is malformed. - Resource header beginning at offset {0} is malformed. + 以偏移量 {0} 开始的资源标头格式不正确。 @@ -54,7 +54,7 @@ Attributes cannot be applied to type extensions. - Attributes cannot be applied to type extensions. + 属性不可应用于类型扩展。 diff --git a/src/fsharp/xlf/FSComp.txt.zh-Hant.xlf b/src/fsharp/xlf/FSComp.txt.zh-Hant.xlf index 4dcd81a114b..990621595f7 100644 --- a/src/fsharp/xlf/FSComp.txt.zh-Hant.xlf +++ b/src/fsharp/xlf/FSComp.txt.zh-Hant.xlf @@ -14,12 +14,12 @@ Stream does not begin with a null resource and is not in '.RES' format. - Stream does not begin with a null resource and is not in '.RES' format. + 資料流未以 null 資源開頭,並且未使用 '.RES' 格式。 Resource header beginning at offset {0} is malformed. - Resource header beginning at offset {0} is malformed. + 從位移 {0} 開始的資源標頭格式錯誤。 @@ -54,7 +54,7 @@ Attributes cannot be applied to type extensions. - Attributes cannot be applied to type extensions. + 屬性無法套用到類型延伸模組。 diff --git a/tests/FSharp.Core.UnitTests/FSharp.Core/Microsoft.FSharp.Control/AsyncModule.fs b/tests/FSharp.Core.UnitTests/FSharp.Core/Microsoft.FSharp.Control/AsyncModule.fs index 5ed1c7d5bb1..13428f0493e 100644 --- a/tests/FSharp.Core.UnitTests/FSharp.Core/Microsoft.FSharp.Control/AsyncModule.fs +++ b/tests/FSharp.Core.UnitTests/FSharp.Core/Microsoft.FSharp.Control/AsyncModule.fs @@ -630,6 +630,7 @@ type AsyncModule() = member this.``Parallel with maxDegreeOfParallelism`` () = let mutable i = 1 let action j = async { + do! Async.Sleep 1 Assert.AreEqual(j, i) i <- i + 1 } @@ -662,14 +663,17 @@ type AsyncModule() = Assert.AreEqual("maxDegreeOfParallelism", exc.ParamName) Assert.True(exc.Message.Contains("maxDegreeOfParallelism must be positive, was -1")) -// This has been failing very regularly on LINUX --- issue : https://github.com/dotnet/fsharp/issues/7112 -#if !TESTING_ON_LINUX [] - member this.``RaceBetweenCancellationAndError.Parallel``() = - [| for i in 1 .. 1000 -> async { return i } |] + member this.``RaceBetweenCancellationAndError.Parallel(maxDegreeOfParallelism)``() = + [| for i in 1 .. 1000 -> async { failwith "boom" } |] |> fun cs -> Async.Parallel(cs, 1) + |> testErrorAndCancelRace "RaceBetweenCancellationAndError.Parallel(maxDegreeOfParallelism)" + + [] + member this.``RaceBetweenCancellationAndError.Parallel``() = + [| for i in 1 .. 1000 -> async { failwith "boom" } |] + |> fun cs -> Async.Parallel(cs) |> testErrorAndCancelRace "RaceBetweenCancellationAndError.Parallel" -#endif [] member this.``error on one workflow should cancel all others with maxDegreeOfParallelism``() = @@ -679,13 +683,11 @@ type AsyncModule() = let job i = async { if i = 55 then failwith "boom" else - do! Async.Sleep 1000 incr counter } - let! _ = Async.Parallel ([ for i in 1 .. 100 -> job i ], 2) |> Async.Catch - do! Async.Sleep 5000 + let! _ = Async.Parallel ([ for i in 1 .. 100 -> job i ], 1) |> Async.Catch return !counter } |> Async.RunSynchronously - Assert.AreEqual(0, counter) \ No newline at end of file + Assert.AreEqual(54, counter) diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.cs.xlf b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.cs.xlf index 5340031907e..b071e0c5f72 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.cs.xlf +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.cs.xlf @@ -1828,9 +1828,8 @@ CONSIDER: get this from CodeDom {0} x {1} - {0} x {1} + {0} x {1} Format string for showing a graphic's size - # {0} = width (as an integer) # {1} = height (as an integer) #Example, for a bitmap of width=123, height = 456, the English version of this string would be "123x456" diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.de.xlf b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.de.xlf index 2ca4bd450e9..4184f3edc59 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.de.xlf +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.de.xlf @@ -1828,9 +1828,8 @@ CONSIDER: get this from CodeDom {0} x {1} - {0} x {1} + {0} x {1} Format string for showing a graphic's size - # {0} = width (as an integer) # {1} = height (as an integer) #Example, for a bitmap of width=123, height = 456, the English version of this string would be "123x456" diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.es.xlf b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.es.xlf index 394481ad696..4b1a5e0d904 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.es.xlf +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.es.xlf @@ -1828,9 +1828,8 @@ CONSIDER: get this from CodeDom {0} x {1} - {0} x {1} + {0} x {1} Format string for showing a graphic's size - # {0} = width (as an integer) # {1} = height (as an integer) #Example, for a bitmap of width=123, height = 456, the English version of this string would be "123x456" diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.fr.xlf b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.fr.xlf index 821545638e2..99d34699194 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.fr.xlf +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.fr.xlf @@ -1828,9 +1828,8 @@ CONSIDER: get this from CodeDom {0} x {1} - {0} x {1} + {0} x {1} Format string for showing a graphic's size - # {0} = width (as an integer) # {1} = height (as an integer) #Example, for a bitmap of width=123, height = 456, the English version of this string would be "123x456" diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.it.xlf b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.it.xlf index dd58cb9a119..8902030751c 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.it.xlf +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.it.xlf @@ -1828,9 +1828,8 @@ CONSIDER: get this from CodeDom {0} x {1} - {0} x {1} + {0} x {1} Format string for showing a graphic's size - # {0} = width (as an integer) # {1} = height (as an integer) #Example, for a bitmap of width=123, height = 456, the English version of this string would be "123x456" diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.ja.xlf b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.ja.xlf index c0221174d97..de4d65e71f8 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.ja.xlf +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.ja.xlf @@ -1828,9 +1828,8 @@ CONSIDER: get this from CodeDom {0} x {1} - {0} x {1} + {0} x {1} Format string for showing a graphic's size - # {0} = width (as an integer) # {1} = height (as an integer) #Example, for a bitmap of width=123, height = 456, the English version of this string would be "123x456" diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.ko.xlf b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.ko.xlf index 6f540b54250..e7191ac3c4a 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.ko.xlf +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.ko.xlf @@ -1828,9 +1828,8 @@ CONSIDER: get this from CodeDom {0} x {1} - {0} x {1} + {0} x {1} Format string for showing a graphic's size - # {0} = width (as an integer) # {1} = height (as an integer) #Example, for a bitmap of width=123, height = 456, the English version of this string would be "123x456" diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.pl.xlf b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.pl.xlf index f912b6b4c78..6936b8e97f5 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.pl.xlf +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.pl.xlf @@ -1828,9 +1828,8 @@ CONSIDER: get this from CodeDom {0} x {1} - {0} x {1} + {0} x {1} Format string for showing a graphic's size - # {0} = width (as an integer) # {1} = height (as an integer) #Example, for a bitmap of width=123, height = 456, the English version of this string would be "123x456" diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.pt-BR.xlf b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.pt-BR.xlf index 5a2b75dce09..fefd197867e 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.pt-BR.xlf +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.pt-BR.xlf @@ -1828,9 +1828,8 @@ CONSIDER: get this from CodeDom {0} x {1} - {0} x {1} + {0} x {1} Format string for showing a graphic's size - # {0} = width (as an integer) # {1} = height (as an integer) #Example, for a bitmap of width=123, height = 456, the English version of this string would be "123x456" diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.ru.xlf b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.ru.xlf index 2b5303d91de..355d363084e 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.ru.xlf +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.ru.xlf @@ -1828,9 +1828,8 @@ CONSIDER: get this from CodeDom {0} x {1} - {0} x {1} + {0} x {1} Format string for showing a graphic's size - # {0} = width (as an integer) # {1} = height (as an integer) #Example, for a bitmap of width=123, height = 456, the English version of this string would be "123x456" diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.tr.xlf b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.tr.xlf index 73a72b806a2..86ac32f4b37 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.tr.xlf +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.tr.xlf @@ -1828,9 +1828,8 @@ CONSIDER: get this from CodeDom {0} x {1} - {0} x {1} + {0} x {1} Format string for showing a graphic's size - # {0} = width (as an integer) # {1} = height (as an integer) #Example, for a bitmap of width=123, height = 456, the English version of this string would be "123x456" diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.zh-Hans.xlf b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.zh-Hans.xlf index 474f99a3dcd..0537632d5fc 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.zh-Hans.xlf +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.zh-Hans.xlf @@ -1828,9 +1828,8 @@ CONSIDER: get this from CodeDom {0} x {1} - {0} x {1} + {0} x {1} Format string for showing a graphic's size - # {0} = width (as an integer) # {1} = height (as an integer) #Example, for a bitmap of width=123, height = 456, the English version of this string would be "123x456" diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.zh-Hant.xlf b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.zh-Hant.xlf index 16b7339b2a4..17c64ffefb9 100644 --- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.zh-Hant.xlf +++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/Resources/xlf/Microsoft.VisualStudio.Editors.Designer.zh-Hant.xlf @@ -1828,9 +1828,8 @@ CONSIDER: get this from CodeDom {0} x {1} - {0} x {1} + {0} x {1} Format string for showing a graphic's size - # {0} = width (as an integer) # {1} = height (as an integer) #Example, for a bitmap of width=123, height = 456, the English version of this string would be "123x456" diff --git a/vsintegration/src/FSharp.UIResources/xlf/Strings.cs.xlf b/vsintegration/src/FSharp.UIResources/xlf/Strings.cs.xlf index 0d279497901..a9808062bdd 100644 --- a/vsintegration/src/FSharp.UIResources/xlf/Strings.cs.xlf +++ b/vsintegration/src/FSharp.UIResources/xlf/Strings.cs.xlf @@ -44,7 +44,7 @@ Diagnostics - Diagnostics + Diagnostika diff --git a/vsintegration/src/FSharp.UIResources/xlf/Strings.de.xlf b/vsintegration/src/FSharp.UIResources/xlf/Strings.de.xlf index fc1d36391d2..9e48372cb23 100644 --- a/vsintegration/src/FSharp.UIResources/xlf/Strings.de.xlf +++ b/vsintegration/src/FSharp.UIResources/xlf/Strings.de.xlf @@ -44,7 +44,7 @@ Diagnostics - Diagnostics + Diagnose diff --git a/vsintegration/src/FSharp.UIResources/xlf/Strings.es.xlf b/vsintegration/src/FSharp.UIResources/xlf/Strings.es.xlf index 24649ecad9f..cd6b650ec60 100644 --- a/vsintegration/src/FSharp.UIResources/xlf/Strings.es.xlf +++ b/vsintegration/src/FSharp.UIResources/xlf/Strings.es.xlf @@ -44,7 +44,7 @@ Diagnostics - Diagnostics + Diagnóstico diff --git a/vsintegration/src/FSharp.UIResources/xlf/Strings.fr.xlf b/vsintegration/src/FSharp.UIResources/xlf/Strings.fr.xlf index d0f77ba3621..90b7e5b378c 100644 --- a/vsintegration/src/FSharp.UIResources/xlf/Strings.fr.xlf +++ b/vsintegration/src/FSharp.UIResources/xlf/Strings.fr.xlf @@ -44,7 +44,7 @@ Diagnostics - Diagnostics + Diagnostics diff --git a/vsintegration/src/FSharp.UIResources/xlf/Strings.it.xlf b/vsintegration/src/FSharp.UIResources/xlf/Strings.it.xlf index a5555f97389..51b5a87f284 100644 --- a/vsintegration/src/FSharp.UIResources/xlf/Strings.it.xlf +++ b/vsintegration/src/FSharp.UIResources/xlf/Strings.it.xlf @@ -44,7 +44,7 @@ Diagnostics - Diagnostics + Diagnostica diff --git a/vsintegration/src/FSharp.UIResources/xlf/Strings.ja.xlf b/vsintegration/src/FSharp.UIResources/xlf/Strings.ja.xlf index 847e2943682..7a59c8c4d34 100644 --- a/vsintegration/src/FSharp.UIResources/xlf/Strings.ja.xlf +++ b/vsintegration/src/FSharp.UIResources/xlf/Strings.ja.xlf @@ -44,7 +44,7 @@ Diagnostics - Diagnostics + 診断 diff --git a/vsintegration/src/FSharp.UIResources/xlf/Strings.ko.xlf b/vsintegration/src/FSharp.UIResources/xlf/Strings.ko.xlf index 55927919dfa..8ba93bed1b4 100644 --- a/vsintegration/src/FSharp.UIResources/xlf/Strings.ko.xlf +++ b/vsintegration/src/FSharp.UIResources/xlf/Strings.ko.xlf @@ -44,7 +44,7 @@ Diagnostics - Diagnostics + 진단 diff --git a/vsintegration/src/FSharp.UIResources/xlf/Strings.pl.xlf b/vsintegration/src/FSharp.UIResources/xlf/Strings.pl.xlf index db4a1394856..3d83c8f6ad3 100644 --- a/vsintegration/src/FSharp.UIResources/xlf/Strings.pl.xlf +++ b/vsintegration/src/FSharp.UIResources/xlf/Strings.pl.xlf @@ -44,7 +44,7 @@ Diagnostics - Diagnostics + Diagnostyka diff --git a/vsintegration/src/FSharp.UIResources/xlf/Strings.pt-BR.xlf b/vsintegration/src/FSharp.UIResources/xlf/Strings.pt-BR.xlf index 5385f6147d2..e3a75c3136e 100644 --- a/vsintegration/src/FSharp.UIResources/xlf/Strings.pt-BR.xlf +++ b/vsintegration/src/FSharp.UIResources/xlf/Strings.pt-BR.xlf @@ -44,7 +44,7 @@ Diagnostics - Diagnostics + Diagnóstico diff --git a/vsintegration/src/FSharp.UIResources/xlf/Strings.ru.xlf b/vsintegration/src/FSharp.UIResources/xlf/Strings.ru.xlf index ba6871df2ee..106dcd8b87a 100644 --- a/vsintegration/src/FSharp.UIResources/xlf/Strings.ru.xlf +++ b/vsintegration/src/FSharp.UIResources/xlf/Strings.ru.xlf @@ -44,7 +44,7 @@ Diagnostics - Diagnostics + Диагностика diff --git a/vsintegration/src/FSharp.UIResources/xlf/Strings.tr.xlf b/vsintegration/src/FSharp.UIResources/xlf/Strings.tr.xlf index 9caf1fa8b9c..8525295e6e4 100644 --- a/vsintegration/src/FSharp.UIResources/xlf/Strings.tr.xlf +++ b/vsintegration/src/FSharp.UIResources/xlf/Strings.tr.xlf @@ -44,7 +44,7 @@ Diagnostics - Diagnostics + Tanılama diff --git a/vsintegration/src/FSharp.UIResources/xlf/Strings.zh-Hans.xlf b/vsintegration/src/FSharp.UIResources/xlf/Strings.zh-Hans.xlf index cff797b883f..ff0bad31447 100644 --- a/vsintegration/src/FSharp.UIResources/xlf/Strings.zh-Hans.xlf +++ b/vsintegration/src/FSharp.UIResources/xlf/Strings.zh-Hans.xlf @@ -44,7 +44,7 @@ Diagnostics - Diagnostics + 诊断 diff --git a/vsintegration/src/FSharp.UIResources/xlf/Strings.zh-Hant.xlf b/vsintegration/src/FSharp.UIResources/xlf/Strings.zh-Hant.xlf index a3267c876f2..1edc051a596 100644 --- a/vsintegration/src/FSharp.UIResources/xlf/Strings.zh-Hant.xlf +++ b/vsintegration/src/FSharp.UIResources/xlf/Strings.zh-Hant.xlf @@ -44,7 +44,7 @@ Diagnostics - Diagnostics + 診斷 diff --git a/vsintegration/tests/GetTypesVS.UnitTests/GetTypesVS.UnitTests.fsproj b/vsintegration/tests/GetTypesVS.UnitTests/GetTypesVS.UnitTests.fsproj index 8c70a8c5e0a..d2613d8c217 100644 --- a/vsintegration/tests/GetTypesVS.UnitTests/GetTypesVS.UnitTests.fsproj +++ b/vsintegration/tests/GetTypesVS.UnitTests/GetTypesVS.UnitTests.fsproj @@ -24,7 +24,9 @@ - + + +