CORREÇÃO: Uma atualização está disponível para ativar a personalização de identificação de controle para o modelo de extensão codificados teste da interface do usuário no Visual Studio 2010 SP1

Traduções deste artigo Traduções deste artigo
ID do artigo: 2696646 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Uma atualização está disponível para Microsoft Visual Studio 2010 Service Pack 1 (SP1). Essa atualização adiciona um novo modelo de extensão para ativar a personalização de identificação de controle quando você grava e reproduzir os testes de automação usando o modelo de extensão de teste de interface do usuário codificado no Visual Studio 2010 SP1. Após aplicar essa atualização, a implementação de um novo plug-in para controles personalizados é muito mais simples e mais simples do que antes.

O novo modelo de extensão adiciona as seguintes classes:
  • UITechnologyElementProxy.Como um exemplo de como usar essa nova classe, você pode alterar oQueryIDmétodo. Este método é listado como um conjunto de condições no mapa de elementos de interface do usuário (UIMap). Você pode usar essa nova classe para adicionar mais condições ou alterar condições existentes. Essas condições poderiam ser atributos adicionais de automação. Ou essas condições poderiam ser usadas para adicionar informações de hierarquia mais disponíveis para os arquivos UIMap existentes.
  • UITechnologyManagerProxy. Você pode usar essa nova classe para registrar o seu gerente de tecnologia com o gerente de tecnologia de proxy.

Para obter mais informações sobre como usar essas novas classes depois de aplicar esta atualização, consulte cenários na seção "Mais informações".

Mais Informações

Cenários

Cenário 1

Tente testar um controle personalizado usando código UI Test. tudo parece bom, exceto para uma ou duas falhas secundárias, como as alterações para o retângulo delimitador de um controle personalizado ou a substituição do método GetHashCode . Com o modelo de extensão anterior, você poderia escrever um plug-in para resolver esse problema e substituir o método pretendido. Mas ao mesmo tempo, você teria que substituir vários outros métodos para tornar o trabalho de plug-in e pode levar dias para se estabilizar. Usando o novo modelo de extensão, você pode fazer o mesmo trabalho substituindo somente os métodos pretendidos.

Cenário 2

Desenvolver um controle personalizado e verificar que o teste de interface do usuário codificada não automatizar as ações de controle personalizado. Por exemplo, o teste de interface do usuário codificado volta reproduz apenas coordenar cliques. Usando essas novas classes, você pode implementar o modelo de extensão para personalizar propriedades de pesquisa do controle para automatizar suas ações usando o teste de interface do usuário codificado em nove simples etapas a seguir.

A Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação para uma finalidade específica. Este artigo presume que você esteja familiarizado com a linguagem de programação que está sendo demonstrada e com as ferramentas que são usadas para criar e depurar procedimentos. Engenheiros de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento. No entanto, eles não alterar esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades específicas.
  1. Passe a propriedade de identificação do controle através de uma propriedade utilizável do tipo AccessibleObject como a propriedade Descrição ou Ajuda . Da mesma forma, passe outros valores de propriedade como uma seqüência de caracteres separados por delimitadores na propriedade AccessibleObject , como no exemplo a seguir:

    public override string Description
    {
        get
        {
            return "<custom_property_value1>"+";"+"<custom_property_value2>";
        }
    }

    Observação Este é apenas um método para passar parâmetros adicionais para o teste de interface do usuário codificado. Se você tiver várias propriedades que devem ser expostas, você também pode passar propriedades personalizadas usando a abordagem de injeção de código. Uma abordagem seria usar um canal WCF entre o teste de interface do usuário codificado e o aplicativo real. O canal pode ser usado para passar as propriedades necessárias para identificar controles ou realizar validação básica dos controles usando propriedades personalizadas. Outro método para a passagem de propriedades é usando mensagens do Windows. Você pode decidir sobre o método apropriado, dependendo dos seus requisitos.

  2. Especifique o nome de tecnologia personalizadas na UITechnologyManagerProxynomes de classe e gerente de tecnologia de núcleo correspondente para que o framework de extensão codificados teste da interface do usuário pode fazer o registro de proxy interno adequadamente.

    Observação Atualmente, plug-ins de terceiros não pode usar o mesmo nome de tecnologia como os nomes de tecnologia de núcleo codificados teste da interface do usuário. Além disso, vários nomes de plug-in de terceiros não é possível conflito. Embora o plug-in é carregado pelo Gerenciador de extensão, o Gerenciador de plug-in codificados teste da interface do usuário não pode permitir o registro de vários plug-ins que têm nomes duplicados de tecnologia. Portanto, controles personalizados deve ser registrado com um nome diferente de tecnologia no construtor CustomTechnologyManager , como no exemplo a seguir:
    public CustomTechnologyManager()
                : base("MSAA", "<custom_technology_name>")
            {
            }
  3. Substituir o método GetControlSupportLevel do UITechnologyManagerProxyclasse. Você pode obter o tipo AccessibleObject da propriedade windowHandle , como no exemplo a seguir. Após fazer isso, ele se torna relativamente fácil extrair a propriedade personalizada. Você pode, em seguida, retornar o nível apropriado de suporte de personalizado plug-in depois é validado contra o valor de propriedade personalizada.
    internal enum OBJID : uint
            {
                WINDOW = 0x00000000,
                SYSMENU = 0xFFFFFFFF,
                TITLEBAR = 0xFFFFFFFE,
                MENU = 0xFFFFFFFD,
                CLIENT = 0xFFFFFFFC,
                VSCROLL = 0xFFFFFFFB,
                HSCROLL = 0xFFFFFFFA,
                SIZEGRIP = 0xFFFFFFF9,
                CARET = 0xFFFFFFF8,
                CURSOR = 0xFFFFFFF7,
                ALERT = 0xFFFFFFF6,
                SOUND = 0xFFFFFFF5,
            }
     
    internal static IAccessible AccessibleObjectFromWindow(IntPtr windowHandle)
            {
                Guid accessibleGuid = typeof(IAccessible).GUID;
                IAccessible accessible = null;
     
                if (AccessibleObjectFromWindow(windowHandle, (int)OBJID.WINDOW, ref accessibleGuid, ref accessible) != 0)
                {
                    Trace.TraceError("AccessibleObjectFromWindow failed for window handle {0}", windowHandle);
                }
     
                return accessible;
            }
     
     
           [DllImport("oleacc.dll")]
    internal static extern int AccessibleObjectFromWindow(IntPtr hWnd, int dwObjectID, ref Guid riid, ref IAccessible pAcc);
     
    public override int GetControlSupportLevel(IntPtr windowHandle)
            {
                int supportLevel = base.GetControlSupportLevel(windowHandle);
                if (supportLevel > 1)
                {
                    IAccessible accessibleObject = this.AccessibleObjectFromWindow(windowHandle);
                    if (accessibleObject!=null && accessibleObject.accDescription.Contains("custom_property_value"))
                    {
                        return (int)ControlSupport.ControlSpecificSupport;
                    }
                }
     
                return (int)ControlSupport.NoSupport;
            }
  4. Adicionar uma propriedade personalizada para o método QueryID a UITechnologyElementProxyclasse. Você pode adicionar uma condição adicional ou remover uma condição do método QueryID . Lembre-se de que assim que uma condição é removida, a condição de propriedade pára aparecem no UIMap. Depois de uma condição adicional é adicionada, ele será listado como uma marca adicional para as condições de propriedade no arquivo .uitest do código gerado se nenhuma ação é executada no controle personalizado, como no exemplo a seguir:
    <PropertyCondition Name=" <Custom_property_name>">Custom_property_value</PropertyCondition>
     
            public override IQueryElement QueryId
            {
                get 
                {
                    if (queryElement == null)
                    {
                        queryElement = base.QueryId;
                        if(string.Equals(this.ControlTypeName, ControlType.Button.ToString(), StringComparison.OrdinalIgnoreCase))
                        {
                            Utilities.UpdateQueryId(this, queryElement, new string[] 
                            {
                                <Custom_property_name>
                        });
                        }
                    }
                    return queryElement;
                }
            }


    A seguir é um exemplo de como implementar o método Utilities.UpdateQueryId . Este método é usado no exemplo anterior.
    internal static void UpdateQueryId(UITechnologyElement element, IQueryElement queryElement, string[] inclusionProperties)
            {
                List<IQueryCondition> conditionList = new List<IQueryCondition>(queryElement.Condition.Conditions);
                if (conditionList != null)
                {
                    bool updated = false;
                    foreach (string propertyToInclude in inclusionProperties)
                    {
                        bool exists = false;
                        foreach (IQueryCondition qCond in conditionList)
                        {
                            PropertyCondition pCond = qCond as PropertyCondition;
                            if (pCond != null &&
                                string.Equals(pCond.PropertyName, propertyToInclude, StringComparison.OrdinalIgnoreCase))
                            {
                                exists = true;
                                break;
                            }
                        }
     
                        if (!exists)
                        {
                            string propVal = element.GetPropertyValue(propertyToInclude) as string;
                            PropertyCondition newCondition = new PropertyCondition(propertyToInclude, propVal);
                            conditionList.Add(newCondition);
                            updated = true;
                        }
                    }
     
                    if (updated)
                    {
                        queryElement.Condition.Conditions = conditionList.ToArray();
                    }
                }
            }
  5. Substituir o método GetPropertyValue do UITechnologyElementProxyclasse e defina o valor como o primeiro token na seqüência de descrição. Essa implementação serão diferentes com base em como passar propriedades personalizadas. Se você usar injeção de código para passar as propriedades, você deve criar um canal e buscar as propriedades de host, como no exemplo a seguir:
    public override object GetPropertyValue(string propertyName)
    {
        if (string.Equals(propertyName, ?<custom_property_name>?))
        {
            string accDesc = this.GetPropertyValue(<custom_property_name>) as string;
            if (accDesc != null)
            {
                string[] descriptionTokens = accDesc.Split(new char[] { ';' });
                return descriptionTokens[0];
            }
        }
        return base.GetPropertyValue(propertyName);
    }
  6. Especificar o gerente de tecnologia personalizadas na UITechnologyElementProxyclasse e associá-lo com o principal elemento de tecnologia IUI, como no exemplo a seguir:
    public RadGridViewTechnologyElement(CustomTechnologyManager technologyManager, IUITechnologyElement coreElement)
                : base(technologyManager, coreElement)
            {
            }
  7. Se você tem uma classe especializada para geração de código personalizado e adicionou condições adicionais de propriedade no método QueryID , conforme descrito na etapa 4, você deve expor a propriedade personalizada como uma propriedade de pesquisa válida para esse elemento, como no exemplo a seguir:
    protected override Dictionary<string, bool> GetValidSearchProperties()
    {
        Dictionary<string, bool> validSearchProperties = base.GetValidSearchProperties();
        if (!validSearchProperties.ContainsKey(<custom_property_name>))
        {
            validSearchProperties.Add((<custom_property_name>, true);
        }
     
        return validSearchProperties;
    }
  8. A extensão de PropertyProvider , adicione condições para definir o nível de suporte de controle, como no exemplo a seguir.

    Observação Quando as propriedades do método uiTestControl são recuperadas, recomendamos que você use apenas as propriedades que estão disponíveis na propriedade SearchProperties ou na propriedade FilterProperties de um método uiTestControl . Não tente buscar propriedades adicionais, porque o controle ao vivo pode não estar disponível durante a geração de código.
    public override int GetControlSupportLevel(UITestControl uiTestControl)
            {
                if (IsSupported(uiTestControl))
                {
                    return (int)ControlSupport.ControlSpecificSupport;
                }
     
                return (int)ControlSupport.NoSupport;
            }
     
    private static bool IsSupported(UITestControl uiTestControl)
            {
                string accDescriptionValue = string.Empty;
                string objectType = string.Empty;
     
                if (uiTestControl.SearchProperties != null && uiTestControl.SearchProperties.Count > 0)
                {
                    PropertyExpression controlTypeExpression = uiTestControl.SearchProperties.Find(?<Custom_property_name>?);
                    if (controlTypeExpression != null)
                    {
                        accDescriptionValue = controlTypeExpression.PropertyValue;
                        string[] descriptionTokens = accDescriptionValue.Split(new char[] { ';' });
                        objectType = descriptionTokens[0];
                    }
                }
     
                if (string.Equals(uiTestControl.TechnologyName, ?<Custom_technology_name>?, StringComparison.OrdinalIgnoreCase)
                     && (objectType.Contains(?<Custom_property_value>?)))
                 
                {
     
                    return true;
                }
                return false;
            }
  9. Implementar o método UITestExtensionPackage e anexar os serviços PropertyProvider e TechnologyManager, substituindo o método GetService , como no exemplo a seguir:
    public override object GetService(Type serviceType)
    {
        Trace.WriteLine("RadGridViewExtensionPackage.GetService(" + serviceType.ToString() + ")");
        if (serviceType == typeof(UITestPropertyProvider))
            return this.PropertyProvider;
        else if (serviceType == typeof(UITechnologyManager))
            return this.TechnologyManager;
        return null;
    }

Atualizar informações

Um hotfix suportado está disponível no Microsoft. No entanto, esse hotfix destina-se a corrigir somente o problema descrito neste artigo. Aplica esse hotfix somente aos sistemas que apresentarem o problema descrito neste artigo. Este hotfix pode receber testes adicionais. Portanto, se esse problema não o prejudicar, recomendamos que você aguarde a próxima atualização de software que contém esse hotfix.

Se o hotfix está disponível para download, há uma seção "Download de Hotfix disponível" na parte superior deste artigo do Knowledge Base. Se esta seção não for exibida, contate o suporte e atendimento ao cliente Microsoft para obter o hotfix.

Observação Se ocorrerem problemas adicionais ou se qualquer solução de problemas é necessária, talvez você precise criar uma solicitação de serviço separada. Os custos de suporte normais se aplicarão a perguntas de suporte adicionais e problemas que não se qualificam para esse hotfix específico. Para uma lista completa dos números de telefone de suporte e Atendimento Microsoft ou para criar uma solicitação de serviço separada, visite o seguinte site da Microsoft:
http://support.microsoft.com/contactus/?ws=support
Observação O formulário "Download de Hotfix disponível" exibe os idiomas para os quais o hotfix está disponível. Se você não vir seu idioma, isso é porque um hotfix não está disponível para esse idioma.

Pré-requisitos

Para aplicar esse hotfix, você deve ter o Service Pack 1 (SP1) aplicado a um dos seguintes:
  • Visual Studio Microsoft 2010 Premium
  • Visual Studio Microsoft 2010 Ultimate
  • Microsoft Visual Studio teste 2010 Professional
  • Microsoft Visual Studio Team Foundation Server 2010
  • Agente de teste do Microsoft Visual Studio 2010

Para obter mais informações sobre como obter o Visual Studio 2010 SP1, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
983509 Descrição do Visual Studio 2010 Service Pack 1

Informações sobre reinicialização

Talvez você precise reiniciar o computador após aplicar esse hotfix. Recomendamos que você feche quaisquer instâncias de Visual Studio antes de aplicar esse hotfix.

Informações de substituição do hotfix

Esse hotfix não substitui um hotfix lançado anteriormente.

Informações do arquivo

Esse hotfix instala arquivos que tenham os atributos listados nas tabelas a seguir. As datas e horários para esses arquivos estão listados no tempo Universal Coordenado (UTC). As datas e horários para esses arquivos no computador local são exibidos em sua hora local com a diferença de horário de verão (DST) atual. Além disso, as datas e horas podem ser alterados quando você realizar algumas operações nos arquivos.
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
Leviewer.exe10.0.40219.396118,34428-Abr-201218: 41x86
Microsoft.TeamFoundation.Build.Client.dll10.0.40219.396436,35227-Abr-20127: 59x86
Microsoft.TeamFoundation.Build.Controls.dll10.0.40219.3961,365,12828-Abr-201218: 41x86
Client. dll10.0.40219.3961,595,51227-Abr-20127: 59x86
Microsoft.TeamFoundation.Common.dll10.0.40219.396525,43227-Abr-20127: 59x86
Microsoft.TeamFoundation.Common.Library.dll10.0.40219.396334,98427-Abr-20127: 59x86
Microsoft.TeamFoundation.Controls.dll10.0.40219.396938,61628-Abr-201218: 41x86
Microsoft.TeamFoundation.dll10.0.40219.396675,43227-Abr-20127: 59x86
Microsoft.TeamFoundation.Lab.Activities.dll10.0.40219.396772,74428-Abr-201218: 41x86
Microsoft.TeamFoundation.Lab.Client.dll10.0.40219.396153,21627-Abr-20127: 59x86
Microsoft.TeamFoundation.Lab.uiutils.dll10.0.40219.396266,88028-Abr-201218: 41x86
Microsoft.TeamFoundation.Lab.Workflow.Activities.dll10.0.40219.396440,47228-Abr-201218: 41x86
Microsoft.TeamFoundation.officeintegration.Common.dll10.0.40219.396375,96828-Abr-201218: 41x86
Microsoft.TeamFoundation.officeintegration.Project.dll10.0.40219.396517,28028-Abr-201218: 41x86
Microsoft.TeamFoundation.Sync.Mapping.dll10.0.40219.39672,32028-Abr-201218: 41x86
Microsoft.TeamFoundation.Sync.Provisioning.dll10.0.40219.396194,19228-Abr-201218: 41x86
Microsoft.TeamFoundation.testmanagement.Activities.Common.dll10.0.40219.396315,05628-Abr-201218: 41x86
Microsoft.TeamFoundation.testmanagement.Activities.dll10.0.40219.3961,512,09628-Abr-201218: 41x86
Microsoft.TeamFoundation.testmanagement.activityruntime.dll10.0.40219.396219,81628-Abr-201218: 41x86
Microsoft.TeamFoundation.testmanagement.Client.dll10.0.40219.396685,20827-Abr-20127: 59x86
Microsoft.TeamFoundation.testmanagement.Client.Themes.dll10.0.40219.3963,059,36828-Abr-201218: 41x86
Microsoft.TeamFoundation.testmanagement.Client.wpfcontrols.dll10.0.40219.396257,71228-Abr-201218: 41x86
Microsoft.TeamFoundation.testmanagement.clientpackage.dll10.0.40219.39673,89628-Abr-201218: 41x86
Microsoft.TeamFoundation.testmanagement.Common.dll10.0.40219.39634,45627-Abr-20127: 59x86
Microsoft.TeamFoundation.testmanagement.Controller.dll10.0.40219.396120,99228-Abr-201218: 41x86
Microsoft.TeamFoundation.testmanagement.Controls.dll10.0.40219.396496,28028-Abr-201218: 41x86
Microsoft.TeamFoundation.testmanagement.Controls.wpfworkitemcontrols.dll10.0.40219.396100,04028-Abr-201218: 41x86
Microsoft10.0.40219.396706,20027-Abr-20127: 59x86
TeamFoundation10.0.40219.396233,11227-Abr-20127: 59x86
Microsoft.TeamFoundation.VersionControl.Controls.dll10.0.40219.3964,439,19228-Abr-201218: 41x86
Microsoft. TeamFoundation.10.0.40219.396699,03227-Abr-20127: 59x86
Microsoft.TeamFoundation.WorkItemTracking.Controls.dll10.0.40219.3961,215,13628-Abr-201218: 41x86
Microsoft.TeamFoundation.WorkItemTracking.proxy.dll10.0.40219.396390,80827-Abr-20127: 59x86
Microsoft.VisualStudio.QualityTools.agentobject.dll10.0.40219.396106,64828-Abr-201218: 41x86
Microsoft.VisualStudio.QualityTools.Common.dll10.0.40219.3961,355,40828-Abr-201218: 41x86
Microsoft.VisualStudio.QualityTools.controllerobject.dll10.0.40219.396276,12828-Abr-201218: 41x86
Microsoft.VisualStudio.QualityTools.datacollectionagentobject.dll10.0.40219.39637,04828-Abr-201218: 41x86
Microsoft.VisualStudio.QualityTools.executioncommon.dll10.0.40219.396481,44028-Abr-201218: 41x86
Microsoft.VisualStudio.QualityTools.Resource.dll10.0.40219.396966,80028-Abr-201218: 41x86
Microsoft.VisualStudio.QualityTools.testcasemanagement.dll10.0.40219.3961,280,16828-Abr-201218: 41x86
Microsoft.VisualStudio.QualityTools.TMI.dll10.0.40219.396398,47228-Abr-201218: 41x86
Microsoft.VisualStudio.TeamFoundation.Build.dll10.0.40219.396142,48028-Abr-201218: 41x86
Microsoft.VisualStudio.TeamFoundation.dll10.0.40219.39693,82428-Abr-201218: 41x86
Microsoft.VisualStudio.TeamFoundation.teamexplorer.dll10.0.40219.396799,90428-Abr-201218: 41x86
Microsoft.VisualStudio.TeamFoundation.VersionControl.dll10.0.40219.39659,04828-Abr-201218: 41x86
Microsoft.VisualStudio.TeamFoundation.VersionControl.dll10.0.40219.39659,56028-Abr-201218: 41x86
Microsoft.VisualStudio.TeamFoundation.VersionControl.dll10.0.40219.39661,09628-Abr-201218: 41x86
Microsoft.VisualStudio.TeamFoundation.VersionControl.dll10.0.40219.39663,65628-Abr-201218: 41x86
Microsoft.VisualStudio.TeamFoundation.VersionControl.dll10.0.40219.396942,24028-Abr-201218: 41x86
Microsoft.VisualStudio.TeamFoundation.WorkItemTracking.dll10.0.40219.396460,96828-Abr-201218: 41x86
Microsoft.VisualStudio.TeamSystem.Integration.dll10.0.40219.396193,17628-Abr-201218: 41x86
Microsoft.VisualStudio.TestTools.manualtest.Common.dll10.0.40219.396813,21628-Abr-201218: 41x86
Microsoft.VisualStudio.TestTools.uitest.codegeneration.dll10.0.40219.396155,30428-Abr-201218: 41x86
Microsoft.VisualStudio.TestTools.uitest.extension.dll10.0.40219.396193,69628-Abr-201218: 41x86
Microsoft.VisualStudio.TestTools.uitest.extension.IE.dll10.0.40219.396252,06428-Abr-201218: 41x86
Microsoft.VisualStudio.TestTools.uitest.extension.MSAA.dll10.0.40219.396115,36828-Abr-201218: 41x86
Microsoft.VisualStudio.TestTools.uitest.extension.UIA.dll10.0.40219.396107,17628-Abr-201218: 41x86
Microsoft.VisualStudio.TestTools.uitest.Framework.dll10.0.40219.39658,01628-Abr-201218: 41x86
Microsoft.VisualStudio.TestTools.uitest.playback.dll10.0.40219.39666,20028-Abr-201218: 41x86
Microsoft.VisualStudio.TestTools.uitest.Recorder.dll10.0.40219.396230,04028-Abr-201218: 41x86
Microsoft.VisualStudio.TestTools.uitesting.dll10.0.40219.396339,60028-Abr-201218: 41x86
Msdiff.dll10.0.40219.396485,44828-Abr-201218: 41x86
Mtm.exe10.0.40219.396449,08828-Abr-201218: 41x86
Qtagent.exe10.0.40219.39621,06428-Abr-201218: 41x86
Qtagent.exe10.0.40219.39621,07228-Abr-201218: 41x86
Qtagent32.exe10.0.40219.39621,06428-Abr-201218: 41x86
Qtagent32.exe10.0.40219.39621,07228-Abr-201218: 41x86
Qtagentservice.exe10.0.40219.39699,92828-Abr-201218: 41x86
Rpfplayback.dll10.0.40219.396482,47228-Abr-201218: 41x86
TF. exe10.0.40219.396325,69628-Abr-201218: 41x86


Referências

Para obter mais informações sobre a terminologia de atualização de software, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
824684 Descrição da terminologia padrão usada para descrever as atualizações de software da Microsoft

Propriedades

ID do artigo: 2696646 - Última revisão: quarta-feira, 23 de maio de 2012 - Revisão: 1.0
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Studio 2010 Service Pack 1 nas seguintes plataformas
    • Microsoft Visual Studio 2010 Ultimate
    • Microsoft Visual Studio 2010 Premium with MSDN
    • Microsoft Visual Studio Test Professional 2010
    • Microsoft Visual Studio Team Foundation Server 2010
    • Microsoft Visual Studio Agents 2010
Palavras-chave: 
kbautohotfix kbqfe kbhotfixserver kbfix kbbug kbexpertiseinter kbsurveynew kbmt KB2696646 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 2696646

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