2010-05-17 19 views
0

我的節目即將觸發XSL轉換,如何監視程序代碼的執行? (文件創建和修改的代碼行等)

它的事實,這代碼進行改造,產生了一些DLL和tmp文件,不一會兒改造後是刪除它們完成。

對於我來說手動監控文件的創建和刪除幾乎是難以追蹤的,所以我想包括一些代碼行來顯示控制檯窗口中「哪些代碼行創建/修改了哪些tmp和dll文件」。

這是代碼的相關部分:

  string strXmlQueryTransformPath = @"input.xsl"; 
      string strXmlOutput = string.Empty; 
      StringReader srXmlInput = null; 
      StringWriter swXmlOutput = null; 
      XslCompiledTransform xslTransform = null; 
      XPathDocument xpathXmlOrig = null; 
      XsltSettings xslSettings = null; 

      MemoryStream objMemoryStream = null; 
      objMemoryStream = new MemoryStream(); 

      xslTransform = new XslCompiledTransform(false); 
      xpathXmlOrig = new XPathDocument("input.xml"); 

      xslSettings = new XsltSettings(); 
      xslSettings.EnableScript = true; 
      xslTransform.Load(strXmlQueryTransformPath, xslSettings, new XmlUrlResolver()); 

      xslTransform.Transform(xpathXmlOrig, null, objMemoryStream); 
      objMemoryStream.Position = 0; 
      StreamReader objStreamReader = new StreamReader(objMemoryStream); 
      strXmlOutput = objStreamReader.ReadToEnd(); 
// make use of Data in string "strXmlOutput" 

谷歌和MSDN搜索不能幫我多..

+0

這將有助於可讀性_lot_ a)刪除無用的評論/評論代碼b)合併聲明和分配。我在這段代碼中看不到臨時文件或DLL的引用,所以我想我不明白這個問題。你想記錄簡單的消息到控制檯:log4net可以很容易地做到這一點,並作爲日誌框架非常流行。 – 2010-05-17 15:35:00

+0

它沒有明確引用,但它創建了擴展名爲tmp和dll的文件,位於「C:\ Windows \ temp」或「C:\ Document and settings \ user \ LocalSettings \ temp」中。 代碼無限次..然後我可以觀察得到創建和刪除的dll文件。 (因爲這個過程更快,如果我只執行一次就不可能找出相同的結果)。每次文件名都會有一些不同的隨機名稱。 – 2010-05-17 15:48:30

回答

1

臨時DLL文件將被創建爲XSLCompiledTransform對象的一部分: XSLT文檔在運行時編譯到MSIL中,生成的程序集用於執行實際轉換。如果你確實想知道什麼時候DLL出現/消失,你可以在調試器中逐行瀏覽代碼,並觀察Temp目錄。

爲什麼你在意臨時文件呢?它們只是XSL轉換代碼的實現細節,不應該影響您的代碼。

+0

我試過多次調試。保持臨時文件夾打開並被觀察。但我看不到它創造,我不知道原因。 這種臨時文件的創建有時候也是偶爾的..我想。 – 2010-05-18 04:50:17

+0

好。在部署此代碼的服務器上存在錯誤。這些文件被創建,但他們也有一些如何被刪除,所以程序提出了一個錯誤,說「DLL文件丟失」(太奇怪了..)。 因此,作爲這個問題的臨時解決方案,我找到了解決辦法。如果是的話,我只能看到那裏是否有加載錯誤的可能性,那麼讓我再次創建臨時文件並觸發轉換。 (成功) – 2010-05-18 04:55:24