From e937884eb43e40d89a8c02ecea38bf1ec3f2d055 Mon Sep 17 00:00:00 2001
From: Scott Addie <10702007+scottaddie@users.noreply.github.com>
Date: Wed, 19 Feb 2020 12:25:28 -0600
Subject: [PATCH] Secret Manager: Save project file without XML declaration
 (#14354)

---
 .../dotnet-user-secrets/src/Internal/InitCommand.cs | 12 +++++++++++-
 .../dotnet-user-secrets/test/InitCommandTest.cs     | 13 +++++++++++++
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/src/Tools/dotnet-user-secrets/src/Internal/InitCommand.cs b/src/Tools/dotnet-user-secrets/src/Internal/InitCommand.cs
index e54f04ff7c9..5b8b0385964 100644
--- a/src/Tools/dotnet-user-secrets/src/Internal/InitCommand.cs
+++ b/src/Tools/dotnet-user-secrets/src/Internal/InitCommand.cs
@@ -4,6 +4,7 @@
 using System;
 using System.IO;
 using System.Linq;
+using System.Xml;
 using System.Xml.Linq;
 using System.Xml.XPath;
 using Microsoft.Extensions.CommandLineUtils;
@@ -122,7 +123,16 @@ namespace Microsoft.Extensions.SecretManager.Tools.Internal
                 propertyGroup.Add(new XElement("UserSecretsId", newSecretsId));
             }
 
-            projectDocument.Save(projectPath);
+            var settings = new XmlWriterSettings
+            {
+                Indent = true,
+                OmitXmlDeclaration = true,
+            };
+
+            using (var xw = XmlWriter.Create(projectPath, settings))
+            {
+                projectDocument.Save(xw);
+            }
 
             context.Reporter.Output(Resources.FormatMessage_SetUserSecretsIdForProject(newSecretsId, projectPath));
         }
diff --git a/src/Tools/dotnet-user-secrets/test/InitCommandTest.cs b/src/Tools/dotnet-user-secrets/test/InitCommandTest.cs
index 562f149ca41..ee0efce15f2 100644
--- a/src/Tools/dotnet-user-secrets/test/InitCommandTest.cs
+++ b/src/Tools/dotnet-user-secrets/test/InitCommandTest.cs
@@ -4,6 +4,7 @@
 using System;
 using System.IO;
 using System.Text;
+using System.Xml.Linq;
 using Microsoft.AspNetCore.Testing;
 using Microsoft.Extensions.Configuration.UserSecrets.Tests;
 using Microsoft.Extensions.SecretManager.Tools.Internal;
@@ -90,6 +91,18 @@ namespace Microsoft.Extensions.SecretManager.Tools.Tests
             Assert.Equal(SecretId, idResolver.Resolve(null, null));
         }
 
+        [Fact]
+        public void DoesNotAddXmlDeclarationToProject()
+        {
+            var projectDir = _fixture.CreateProject(null);
+            var projectFile = Path.Combine(projectDir, "TestProject.csproj");
+
+            new InitCommand(null, null).Execute(MakeCommandContext(), projectDir);
+
+            var projectDocument = XDocument.Load(projectFile);
+            Assert.Null(projectDocument.Declaration);
+        }
+
         [Fact]
         public void OverridesIdForProjectWithSecretId()
         {
-- 
GitLab