CORRECÇÃO: Mensagem de erro quando chamar o método "System.Xml.Xsl.XslTransform.Transform" duas vezes numa aplicação baseada no .NET Framework 2.0: "Referência circular na definição da variável < nome da variável >"

Traduções de Artigos Traduções de Artigos
Artigo: 937320 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

No Microsoft aplicação baseada no .NET Framework 2.0, chamar o método System.Xml.xsl.XslTransform.Transform para transformar dados XML de uma folha de estilos. Quando voltar a chamar este método, poderá receber a seguinte mensagem de erro:
System.Xml.xsl.XsltException: Referência circular na definição do variable name de variável
Este problema ocorre quando a folha de estilos contém uma referência directa a uma variável global.

Resolução

Informações sobre a correcção

Uma correcção suportada está agora disponível da Microsoft. Contudo, destina-se a corrigir o problema descrito neste artigo. Aplique-a apenas em sistemas que tenham este problema específico. Esta correcção poderá submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afectado por este problema, recomendamos que aguarde pelo próximo service pack do .NET Framework 2.0 que contenha esta correcção.

Para resolver este problema imediatamente, contacte o suporte técnico da Microsoft para obter a correcção. Para obter uma lista completa dos números de telefone de suporte técnico da Microsoft e informações sobre os custos de suporte, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota Em casos especiais, os custos normalmente inerentes às chamadas de suporte poderão ser anulados, se um técnico de suporte da Microsoft determinar que uma actualização específica resolverá o problema. Os custos normais do suporte serão aplicados a problemas adicionais e questões de suporte que não se enquadrem na atualização específica em questão.

Pré-requisitos

Tem de ter o .NET Framework 2.0 instalado para aplicar esta correcção.

Requisito de reinício

Não é necessário reiniciar o computador depois de aplicar esta correcção.

Informações sobre substituição de correcções

Esta correcção não substitui quaisquer outras correcções.

Informações do ficheiro

A versão inglesa desta correcção tem os atributos de ficheiro (ou atributos de ficheiro posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são indicadas na hora universal coordenada (UTC). Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador fuso horário no item data e hora no painel de controlo.
O .NET Framework 2.0, x 86 versões
Reduzir esta tabelaExpandir esta tabela
Nome de ficheiroVersão do ficheiroTamanho do ficheiroDataTempoPlataforma
System.data.SQLXML.dll2.0.50727.883716,80015 De Maio de 200719: 47x 86
O .NET Framework 2.0, versões baseadas em 64 x
Reduzir esta tabelaExpandir esta tabela
Nome de ficheiroVersão do ficheiroTamanho do ficheiroDataTempoPlataforma
System.data.SQLXML.dll2.0.50727.883716,80015 De Maio de 200719: 20x 64
System.data.SQLXML.dll2.0.50727.883716,80015 De Maio de 200719: 47x 86

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Mais Informação

Para obter mais informações sobre a terminologia de actualização de software, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
824684Descrição da terminologia padrão utilizada para descrever actualizações de software da Microsoft

Passos para reproduzir o problema

  1. Inicie o Microsoft Visual Studio 2005.
  2. No menu ficheiro , clique em Novo projecto .
  3. Em tipos de projecto , clique em Visual C# .
  4. Em modelos , clique em Consola de aplicação .
  5. Escreva um nome de projecto e, em seguida, clique em OK .
  6. No ficheiro Program.cs, substitua o código existente com o código seguinte.
    using System.Xml.Xsl;
    
    class Repro {
        static void Main(string[] args) {
            XslTransform trans = new XslTransform();
            trans.Load("repro.xsl");
            trans.Transform("repro.xsl", "repro1.out");
            trans.Transform("repro.xsl", "repro.out");
        }
    }
    
  7. Crie uma folha de estilos que contém o código seguinte.
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:variable name="variable1" select="$variable2"/>
      <xsl:variable name="variable2"/>
    </xsl:stylesheet>
  8. Guarde a folha de estilo que criou no passo 7 como Frame.htm.
  9. Guarde a folha de estilos para a seguinte pasta:
    ProjectName\Bin\Debug
  10. Execute a aplicação.

Informações de pilha de chamada

Unhandled Exception: System.Xml.Xsl.XsltException: Circular reference in the definition of variable 'variable2'.
   at System.Xml.Xsl.XsltOld.Processor.GetVariableValue(VariableAction variable)
   at System.Xml.Xsl.XsltOld.XsltCompileContext.EvaluateVariable(VariableAction variable)
   at System.Xml.Xsl.XsltOld.VariableAction.System.Xml.Xsl.IXsltContextVariable.Evaluate(XsltContext xsltContext)
   at MS.Internal.Xml.XPath.VariableQuery.Evaluate(XPathNodeIterator nodeIterator)
   at System.Xml.Xsl.XsltOld.Processor.RunQuery(ActionFrame context, Int32 key)
   at System.Xml.Xsl.XsltOld.VariableAction.Execute(Processor processor, ActionFrame frame)
   at System.Xml.Xsl.XsltOld.ActionFrame.Execute(Processor processor)
   at System.Xml.Xsl.XsltOld.Processor.Execute()
   at System.Xml.Xsl.XsltOld.Processor.Execute(Stream stream)
   at System.Xml.Xsl.XslTransform.Transform(XPathNavigator input, XsltArgumentList args, Stream output, XmlResolver resolver)
   at System.Xml.Xsl.XslTransform.Transform(String inputfile, String outputfile, XmlResolver resolver)
   at System.Xml.Xsl.XslTransform.Transform(String inputfile, String outputfile)
   at Repro.Main(String[] args)

Propriedades

Artigo: 937320 - Última revisão: 3 de dezembro de 2007 - Revisão: 1.1
A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 2.0
Palavras-chave: 
kbmt kbexpertiseadvanced kbfix kbpubtypekc kbqfe kbhotfixserver KB937320 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 937320

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com