diff --git a/src/XMakeBuildEngine/Construction/ProjectRootElement.cs b/src/XMakeBuildEngine/Construction/ProjectRootElement.cs
index 3060c0a9781..2af810ef0f3 100644
--- a/src/XMakeBuildEngine/Construction/ProjectRootElement.cs
+++ b/src/XMakeBuildEngine/Construction/ProjectRootElement.cs
@@ -157,6 +157,11 @@ public class ProjectRootElement : ProjectElementContainer
///
private BuildEventContext _buildEventContext;
+ ///
+ /// Xpath expression that will find any element with the implicit attribute
+ ///
+ private static readonly string ImplicitAttributeXpath = $"//*[@{XMakeAttributes.@implicit}]";
+
///
/// Initialize a ProjectRootElement instance from a XmlReader.
/// May throw InvalidProjectFileException.
@@ -1781,15 +1786,21 @@ public void Save(Encoding saveEncoding)
private XmlDocument RemoveImplicits()
{
+ if (XmlDocument.SelectSingleNode(ImplicitAttributeXpath) == null)
+ {
+ return XmlDocument;
+ }
+
var xmlWithNoImplicits = (XmlDocument) XmlDocument.CloneNode(deep: true);
var implicitElements =
- xmlWithNoImplicits.SelectNodes($"//*[@{XMakeAttributes.@implicit}]");
+ xmlWithNoImplicits.SelectNodes(ImplicitAttributeXpath);
foreach (XmlNode implicitElement in implicitElements)
{
implicitElement.ParentNode.RemoveChild(implicitElement);
}
+
return xmlWithNoImplicits;
}