汤米对转型过程的非常清晰的描述让我解决了一个非常棘手的问题。我有一个 ASP.NET MVC 4 项目,当我尝试从 Visual Studio 2012 发布时出现错误。我一直收到错误消息
Unrecognized attribute 'xmlns:xdt'. Note that attribute names are case-sensitive.
错误说它在 web.config 文件中,但实际上不存在。它在 Web.Release.Config 中。我在 Web.config 转换中尝试了许多推荐的解决方案
:无法识别的属性 'xmlns:xdt'。请注意,属性名称区分大小写
我删除了 obj 目录的内容,它工作了一两次,然后停止工作。我从 Web.Release.Config 中删除了该属性,
xmlns:xdt=http://schemas.microsoft.com/XML-Document-Transform
但这给了我错误。我试过
This is kind of a workaround, but you may add the following line to your pre-build commands:
del $(ProjectDir)obj\* /F /S /Q
Right click your project > Properties > Build Events > Pre-build.
这工作了一次,但没有第二次。
我尝试了上述解决方案的较长版本
del "$(ProjectDir)obj\*" /F /Q
del "$(ProjectDir)obj\$(ConfigurationName)\AspnetCompileMerge\*" /F /S /Q
del "$(ProjectDir)obj\$(ConfigurationName)\CSAutoParameterize\*" /F /S /Q
del "$(ProjectDir)obj\$(ConfigurationName)\Package\*" /F /S /Q
del "$(ProjectDir)obj\$(ConfigurationName)\ProfileTransformWebConfig\*" /F /S /Q
del "$(ProjectDir)obj\$(ConfigurationName)\TempPE\*" /F /S /Q
del "$(ProjectDir)obj\$(ConfigurationName)\TransformWebConfig\*" /F /S /Q
但这给了我很多错误。站点医生有一个看起来很有趣的解决方案,但它需要从 GitHub 下载预发布软件,如果没有必要,我不想冒险。
http://blogs.thesitedoctor.co.uk/tim/Trackback.aspx?guid=7988f7bc-947c-4134-ab52-af22770b639c
然后我找到了 Tommy 的文章,它给了我一个想法。我xmlns:xdt=http://schemas.microsoft.com/XML-Document-Transform
从这一行删除了这个
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
当我这样做时,我不得不删除
xdt:Transform="RemoveAttributes(debug)"
从这条线
<compilation xdt:Transform="RemoveAttributes(debug)" />
这对我有用。在发布/发布项目时删除似乎删除调试属性的转换可能不是一个好主意,但它似乎可以解决问题。