diff --git a/NuGet.config b/NuGet.config index 40e7c9a2e2..ced55102a9 100644 --- a/NuGet.config +++ b/NuGet.config @@ -2,6 +2,15 @@ + + + + + + + + + @@ -9,5 +18,15 @@ - + + + + + + + + + + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index a6d3e8423b..6114914564 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -19,14 +19,14 @@ - + https://github.com/dotnet/arcade - 8fe02bab989df1265eee225df2c28af6dbdccc83 + c28c6307d0600513219bcd9ab028c0fedbe591ec - + https://github.com/dotnet/arcade - 8fe02bab989df1265eee225df2c28af6dbdccc83 + c28c6307d0600513219bcd9ab028c0fedbe591ec diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1 index 2b0a5c9e66..5db4ad71ee 100644 --- a/eng/common/SetupNugetSources.ps1 +++ b/eng/common/SetupNugetSources.ps1 @@ -157,7 +157,7 @@ if ($dotnet31Source -ne $null) { 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 $userName -pwd $Password } -$dotnetVersions = @('5','6','7','8') +$dotnetVersions = @('5','6','7','8','9') foreach ($dotnetVersion in $dotnetVersions) { $feedPrefix = "dotnet" + $dotnetVersion; diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh index b493479a1d..4604b61b03 100644 --- a/eng/common/SetupNugetSources.sh +++ b/eng/common/SetupNugetSources.sh @@ -99,7 +99,7 @@ if [ "$?" == "0" ]; then PackageSources+=('dotnet3.1-internal-transport') fi -DotNetVersions=('5' '6' '7' '8') +DotNetVersions=('5' '6' '7' '8' '9') for DotNetVersion in ${DotNetVersions[@]} ; do FeedPrefix="dotnet${DotNetVersion}"; diff --git a/eng/common/templates-official/steps/get-federated-access-token.yml b/eng/common/templates-official/steps/get-federated-access-token.yml index fa899fc98c..c8dcf6b813 100644 --- a/eng/common/templates-official/steps/get-federated-access-token.yml +++ b/eng/common/templates-official/steps/get-federated-access-token.yml @@ -4,4 +4,4 @@ steps: is1ESPipeline: true ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates/steps/get-federated-access-token.yml b/eng/common/templates/steps/get-federated-access-token.yml index 44aab941f3..31e151d9d9 100644 --- a/eng/common/templates/steps/get-federated-access-token.yml +++ b/eng/common/templates/steps/get-federated-access-token.yml @@ -4,4 +4,4 @@ steps: is1ESPipeline: false ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/global.json b/global.json index 5115e2c74d..6f548978ff 100644 --- a/global.json +++ b/global.json @@ -1,8 +1,8 @@ { "tools": { - "dotnet": "9.0.100-preview.5.24307.3" + "dotnet": "9.0.100-preview.7.24407.12" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24416.2" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24421.7" } } diff --git a/src/Microsoft.TemplateEngine.Utils/InMemoryFileSystem.cs b/src/Microsoft.TemplateEngine.Utils/InMemoryFileSystem.cs index fc1789d540..7bdfa45d32 100644 --- a/src/Microsoft.TemplateEngine.Utils/InMemoryFileSystem.cs +++ b/src/Microsoft.TemplateEngine.Utils/InMemoryFileSystem.cs @@ -771,7 +771,7 @@ public FileSystemDirectory(string name, string fullPath) private class FileSystemFile { - private readonly object _sync = new(); + private readonly ReaderWriterLockSlim _lock = new(); private byte[] _data; private int _currentReaders; private int _currentWriters; @@ -798,7 +798,8 @@ public Stream OpenRead() throw new IOException("File is currently locked for writing"); } - lock (_sync) + _lock.EnterReadLock(); + try { if (_currentWriters > 0) { @@ -806,7 +807,22 @@ public Stream OpenRead() } ++_currentReaders; - return new DisposingStream(new MemoryStream(_data, false), () => { lock (_sync) { --_currentReaders; } }); + return new DisposingStream(new MemoryStream(_data, false), () => + { + _lock.EnterWriteLock(); + try + { + --_currentReaders; + } + finally + { + _lock.ExitWriteLock(); + } + }); + } + finally + { + _lock.ExitReadLock(); } } @@ -822,7 +838,8 @@ public Stream OpenWrite() throw new IOException("File is currently locked for writing"); } - lock (_sync) + _lock.EnterWriteLock(); + try { if (_currentReaders > 0) { @@ -838,7 +855,8 @@ public Stream OpenWrite() MemoryStream target = new(); return new DisposingStream(target, () => { - lock (_sync) + _lock.EnterWriteLock(); + try { --_currentWriters; _data = new byte[target.Length]; @@ -846,8 +864,16 @@ public Stream OpenWrite() _ = target.Read(_data, 0, _data.Length); LastWriteTimeUtc = DateTime.UtcNow; } + finally + { + _lock.ExitWriteLock(); + } }); } + finally + { + _lock.ExitWriteLock(); + } } }