Search code examples
visual-studioweb-configweb.config-transform

Web.config Transformation: Transform attribute is not declared


I am attempting to transform my Web.config file to add rewrite rules for release builds, but I'm getting an intellisense error.

The 'http://schemas.microsoft.com/XML-Document-Transform:Transform' attribute is not declared.

Web.Release.config

Web.Release.config

It seems to compile okay without errors. But when I attempt to Publish, I do get build errors:

No element in the source document matches '/configuration/system.webServer/rewrite'
The 'http://schemas.microsoft.com/XML-Document-Transform:Transform' attribute is not declared.

The first line above is an error, while the second one is a warning. Why doesn't this work?

Note that the top of my Web.config does include the line <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

UPDATE:

The build error when deploying turned out to be caused by something else. So, in fact, it does build okay and I can deploy. So at this point, the question is just about why this Intellisense error/warning is appearing.


Solution

  • As suggested in How do I enable IntelliSense in VS 2013 for <rewrite> in transform .config? this is a defect in Intellisense.

    • If you're using VS 2017 open "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Xml\Schemas\1033\DotNetConfig.xsd".

    • Locate the xs:element name="rewrite" element near the end of the file and copy

      <xs:anyAttribute namespace="http://schemas.microsoft.com/XML-Document-Transform" processContents="strict"/>
      

      to the end of the rewrite element.

    As soon as I saved the file Visual Studio removed the warning squiggly.

    enter image description here

    Someone should probably raise this with the Visual Studio team.