2011-07-27 37 views

回答

24

我不得不从configuration节点中删除命名空间属性。声明的模式和我正在使用的元素之间存在一些冲突。

xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0" 
+1

我正在为这个问题寻找一个解决方案,这是唯一在网络上为我工作的答案,谢谢! – saman0suke

17

我想给别人这里更详细的解答。

在Visual Studio 2010中,web.config转换引擎不尊重xmlns声明。因为如果你的源web.config有一个xmlns声明,并且如果你创建了一个转换,那么这个转换将不起作用。这是因为当我们执行XPath来识别应该被替换的源时,我们无法找到值。为了解决这个问题,你应该移除源web.config中的xmlns声明以及变换。

就这么说,在Visual Studio 2010中SP1我们修复了名称空间错误。所以你的源代码web.config以及你的转换必须在xmlns上达成一致,如果有的话,另一个必须具备它。

我怀疑你正在使用SP1以前的位,但不确定。为了确保在升级到SP1时行为不会发生变化,我建议您从源web.config中删除xmlns声明以及转换。 web.config文件中不需要xmlns,因此可以安全地删除它。

+0

我是对的,它有可能解决这个转换文件中命名空间的错误,匹配转换文件中的相应xmlns?它不好从xml中删除命名空间 - 那么它将与xml处理器完全不同xml ... –

+0

您不需要命名ns元素,您可以使其与默认xmlns一起工作,但它们必须处于打开状态既是来源也是变换。这就是说。 对于web.config,如果存在xmlns,则没有区别。建议不要它(也解释了为什么在VS中创建新项目时web.config上没有xmlns)。 –

+0

我们使用的转换不仅适用于web.config类型的xml = \ –

相关问题