2011-07-27 2 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에 동의해야합니다. 다른 xmlns도 xmlns가 있어야합니다.

SP1 이전 버전을 사용하고 있지만 확실하지 않은 것으로 판단됩니다. SP1로 업그레이드 할 때 동작이 변경되지 않도록하려면 변환뿐만 아니라 원본 web.config에서 xmlns 선언을 제거하는 것이 좋습니다. xmlns는 web.config 파일에서 필요하지 않으므로 제거 할 수 있습니다.

+0

나는 변형 된 파일에서 명명 된 네임 스페이스를 사용하여이 버그를 해결할 수있는 가능성이 있으며 변환 된 파일의 해당 xmlns와 일치합니까? 그 XML에서 네임 스페이스를 제거하는 것이 좋지 않다 - 그러면 xml 프로세서와 완전히 다른 xml이 될 것입니다 ... –

+0

명명 된 ns 요소는 필요하지 않지만 기본 xmlns와 함께 사용할 수는 있지만 켜져 있어야합니다 소스뿐만 아니라 변환합니다. 그것으로 말하고있다. web.config의 경우 xmlns가 있는지 여부는 차이가 없습니다. VS를 사용하지 않는 것이 좋습니다 (VS에서 새 프로젝트를 만들 때 web.config에 xmlns가없는 이유도 설명 됨). –

+0

우리는 web.config 종류의 xml = \ –

관련 문제