diff --git a/src/Microsoft.DotNet.Compiler.Common/LibraryExporterExtensions.cs b/src/Microsoft.DotNet.Compiler.Common/LibraryExporterExtensions.cs index 7e3440c02..8c5cfc355 100644 --- a/src/Microsoft.DotNet.Compiler.Common/LibraryExporterExtensions.cs +++ b/src/Microsoft.DotNet.Compiler.Common/LibraryExporterExtensions.cs @@ -1,6 +1,7 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -27,7 +28,9 @@ namespace Microsoft.DotNet.Cli.Compiler.Common foreach (var asset in assets) { - File.Copy(asset.ResolvedPath, Path.Combine(destinationPath, Path.GetFileName(asset.ResolvedPath)), overwrite: true); + var file = Path.Combine(destinationPath, Path.GetFileName(asset.ResolvedPath)); + File.Copy(asset.ResolvedPath, file, overwrite: true); + RemoveFileAttribute(file, FileAttributes.ReadOnly); } } @@ -44,6 +47,19 @@ namespace Microsoft.DotNet.Cli.Compiler.Common var transformedFile = asset.GetTransformedFile(tempLocation); File.Copy(transformedFile, targetName, overwrite: true); + RemoveFileAttribute(targetName, FileAttributes.ReadOnly); + } + } + + private static void RemoveFileAttribute(String file, FileAttributes attribute) + { + if (File.Exists(file)) + { + var fileAttributes = File.GetAttributes(file); + if ((fileAttributes & attribute) == attribute) + { + File.SetAttributes(file, fileAttributes & ~attribute); + } } }