2009-01-16 3 views
2

시도하고 시도했지만 시도해 볼 수 없습니다. XslCompiledTransform.Load() 메서드에 URI를 전달하여 디스크에서 스타일 시트를로드하지 않아도 XslCompiledTransform으로 이동할 수 없습니다.XslCompiledTransform C#에서 디버깅

디스크에서 스타일 시트를 URI를 통해로드 한 경우 (언급 한 바와 같이) 또는 IXmlLineInfo 인터페이스를 구현하는 XmlReader에서 스타일 시트를로드하는 경우에만 XslCompiledTransform.Transform() 메서드로 들어갈 수 있다는 것을 완전히 알고 있습니다.

XslCompiledTransform xslt = new XslCompiledTransform(true); 
//grab string from textbox 
XmlReader reader = XmlReader.Create(new StringReader(XsltBox.Text)); 

// Compile the style sheet. 
xslt.Load(reader); 

이 내가 디버깅이 활성화 될 수있는 방법을 읽고 다양한 문헌에서 보인다 다음과 같이

나는 스타일 시트를 장착했다. 내가 XslCompiledTransform.Transform() 메소드에 단계하려고하지만 때 내가 메시지를 얻을 : 나는 다음과 같은 경우 내가 변환 한 단계 수 있습니다 언급 한 바와 같이

"현재 위치에 사용할 수있는 소스 코드가 없다" :

string stylesheet = @"C:\PathToMy\Stylesheet.xsl"; 

// Enable XSLT debugging. 
XslCompiledTransform xslt = new XslCompiledTransform(true); 
//compile stylesheet 
xslt.Load(stylesheet); 

디스크를 계속해서 읽고 싶지 않기 때문에 위의 방법을 사용할 수 없습니다. 당신이 유용한 코멘트, 내가 마이크로 소프트를 실현하지 않았다


덕분에 내가이 미래에 매우 도움이 될 것이라 확신합니다, 이런 짓을했다.

그러나 나는 내 질문에 완전히 자신을 분명히하지 않았다고 생각합니다. 나는 load 메소드를 실행하는 것을 보지 않았다. 변환 메소드에 들어가서 xsl 변환으로 어떤 일이 벌어지는 지 알 수 있었다. 당신이 전달하는 매개 변수가 transform 메소드를 디버깅 할 수 있는지 여부를 지정하기 때문에 load 메서드를 강조했습니다. IXmlLineInfo 인터페이스를 구현하는 XmlReader를 전달해야합니다.

강조 표시된 기술을 사용하여 변형 방법을 사용할 수 있지만 코드를 단계별로 살펴 보겠습니다. xsl 디버거는 실제 스타일 시트 자체를 라인 단위로 단계별로 보여줍니다 (변환의 각 행을 실행하는 코드와 반대 됨)

+0

프레임 워크의 Transform() 구현을 디버깅하려고하거나 XSLT에 중단 점을 설정하려고합니까? – bryanbcook

+0

AFAIK, Visual Studio의 XSLT 디버거에서는 불가능합니다. 디버깅을 위해 항상 디스크에 XSLT 파일이 있어야합니다. –

답변

1

최근 Microsoft는 이러한 시나리오에서 디버깅을 허용하기 위해 .Net Framework에 대한 기호와 소스 코드를 출시했습니다. 설치하는 데 몇 초가 걸리지 만 작업을 완료 한 후에는 XslCompiledTransform을 작성한 방법에 관계없이 Load 메서드로 들어갈 수 있어야합니다.

너무 대답이 너무 자세하지만 여기에 주제에 대한 훌륭한 블로그 게시물입니다. XmlReader.Create(new StringReader(String))를 사용하는 동안

http://codebetter.com/blogs/james.kovacs/archive/2008/01/17/debugging-into-the-net-framework-source.aspx

1

저도 같은 문제가되고있다. 디버거가 작동하도록 디버깅을 위해 디스크 파일을 찾을 수 있어야합니다. 그렇다고해서 StringReader 또는 스트림 버전 XmlReader.Create을 사용할 수 없다는 의미는 아닙니다. 이 버전을 사용해보십시오 :

XmlReader.Create(new StringReader(String), New XmlReaderSettings(), baseURI) 

내 경우에는 파일 리소스를 사용하여 xslt 문자열을 저장할 수 있으므로 가리킬 수있는 파일이 있습니다.실제로 솔루션/속성/디버거 소스 코드 아래에 지정된 폴더에서 소스 코드를 검색하기 위해 디버거가 알 수있는 절대 경로를 지정할 필요가 없습니다.

XslCompiledTransform에 대한 설명서는 IXmlLineInfo 인터페이스를 지원하는 XmlReader이 필요하다는 것을 의미하기 때문에 오해의 소지가 있습니다.