19

我正在尝试将应用程序部署到 AppHarbor 并按照他们关于如何修改我的 web.config 的说明进行操作,因此它使用他们的实例 auf Sql 服务器。

运行解决方案后,我收到主题中提到的错误:

Unrecognized attribute 'xmlns:xdt'. Note that attribute names are case-sensitive.

我发现的关于这个问题的唯一线程是这个。但是添加预构建行并删除 obj 文件夹并重新构建并没有带来任何解决方案。它一直在以下行遇到此异常:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

先感谢您。

4

5 回答 5

25

确保抛出错误的行:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

不在您的主 web.config 文件中。这是 web.config 转换文件的行。基本上,当您创建一个新项目时,您将获得一个 Web.config 文件,其中包含一个或多个根据您的解决方案的构建配置文件命名的子 web.config 文件,例如:

Web.config
    Web.Release.config
    Web.Debug.config

您的父 web.config 文件应该以<configuration>任何xmlns:xdt内容开头。您的子 web.config 文件(用于转换父 web.config 文件的文件)以该行开头。

如果您不熟悉 web.config 转换,这允许 VS 根据项目的构建类型(用于更改连接字符串、打开和关闭调试等)自动更改配置元素。

此外,请查看AppHarbor 上的博客文章以获取有关处理 Web.config 转换的说明。由于从未使用过 AppHarbor,看来您可能需要对项目进行一些小的更改才能使转换正常工作。最后,您可能需要确保您的 web.config 转换文件确实包含在应用程序港口的构建/部署中

于 2013-11-15T21:25:23.023 回答
20

我会检查您的转换文件顶部是否有以下行。

<?xml version="1.0"?>

如果您确认存在,我还将检查以下内容是否不在您实际转换的 web.config 中。

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

在部署之前,我发现Web Essentials扩展对于解决此类错误非常宝贵。

您只需右键单击转换文件并从 Visual Studio 中选择预览,如果遇到任何问题,您可以在本地进行调查/修复。

网络要领 2012

http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-6f451ea3bea6

于 2013-11-13T12:10:12.250 回答
3

汤米对转型过程的非常清晰的描述让我解决了一个非常棘手的问题。我有一个 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)" />

这对我有用。在发布/发布项目时删除似乎删除调试属性的转换可能不是一个好主意,但它似乎可以解决问题。

于 2014-03-06T15:22:47.027 回答
0

我删除了 Obj 下的 release 和 debug 文件夹并重新构建了代码。它对我有用。

于 2019-12-16T11:21:10.053 回答
0

我知道这是一个老问题,但这些答案都不适合我。

起作用的是删除{project}/bin/Debug文件夹的内容。

就我而言,该错误将该文件夹中的一个{project}.dll.config文件Debug列为有错误。(我可能只删除了一个文件,但删除整个文件似乎更有可能修复其他潜在错误。)

我的app.config文件是在 中设置Do not copyProperties,因此通过替换旧版本的文件,也许改变它也可以解决问题。

于 2020-04-06T18:38:06.210 回答