Se eu criar um novo projeto no Visual Studio 2010 SP1 e selecionar "Aplicativo WPF" e tentar criar o aplicativo gerado, recebo o erro
O nome 'InitializeComponent' não existe no contexto atual.
Recebi um erro semelhante nesta manhã quando tentei construir meu projeto atual. Ontem, não tive problemas em compilar e executá-lo.
Criei um novo projeto e recebia o erro sempre que compilava o projeto. Acabei de enviar o projeto para um colega, e ele acabou de compilar sem erros.
O que está errado?
wpf
visual-studio-2010
visual-studio
initializecomponent
user876402
fonte
fonte
Respostas:
Eu encontrei isso algumas vezes e continuo esquecendo o que causa isso. Eu me deparei com isso quando renomeei o espaço para nome no meu código por trás do arquivo, mas não no meu XAML.
Portanto, verifique se você fez o mesmo.
O namespace e os nomes de classe precisam corresponder, pois ambos fazem parte de uma classe parcial
fonte
A Ação de compilação para o arquivo .xaml também deve ser definida como "Página", ao mover um arquivo xaml entre projetos, essa configuração é perdida (pelo menos no VS 2010).
fonte
Para aqueles que não têm erros no modo de depuração, mas fazer tem o erro especificado no modo de versão (e ainda o projeto funciona muito bem), aqui está algo simples para tentar:
Esse método funcionou para mim no VS 2015 e, de acordo com outros usuários, também em 2017 e 2019
fonte
Encontrei esse erro durante a refatoração, onde renomeei alguns arquivos / pastas e os arquivos * .g.cs prexistentes precisavam ser gerados novamente.
fonte
x:Class
corresponde aoNamespace.Class
.Há uma razão muito específica para isso, e está nas configurações do projeto. Isso geralmente acontece sempre que você tenta adicionar um controle / janela WPF a uma biblioteca ou projeto de classe .NET 2.0. O motivo desse erro é que o projeto não sabe que está criando um controle ou janela do WPF e, portanto, tenta construí-lo como um projeto C # 2.0.
A solução envolve editar o arquivo .csproj. Clique com o botão direito do mouse no projeto que está causando o problema e selecione “Descarregar projeto”. Clique com o botão direito do mouse no projeto descarregado e selecione "Editar .csproj". O arquivo .csproj será aberto e você poderá ver o XML. procure a seguinte linha:
É perto do final do arquivo, e a única linha que você tem é provavelmente
Isso informa ao Visual Studio para criar o projeto como um projeto .NET 2.0. O que queremos fazer é dizer ao Visual Studio que esse é realmente um projeto WPF, portanto, precisamos adicionar a seguinte linha:
Esta linha instruirá o Visual Studio a criar o projeto como um projeto WPF. Agora, o final do arquivo .csproj deve ficar assim:
Salve o arquivo .csproj, clique com o botão direito do mouse no Solution Explorer e selecione a opção “Reload Project” compile e pronto, pronto!
fonte
isso aconteceu comigo quando eu excluí acidentalmente a referência de classe da definição xaml:
Eu substituí o
primeira linha com isso:
Sei que essa não é a resposta para a pergunta original (porque esse projeto se baseia em outra máquina), mas a mensagem de erro foi a mesma, então talvez eu ajude alguém com essa situação.
fonte
Você pode receber esse erro ao importar uma classe de outro projeto ou alterar o caminho do arquivo xaml ou o espaço para nome do arquivo xaml ou atrás do arquivo .cs.
Um: pode ter um espaço para nome que não seja o mesmo que você possui em seu novo projeto
Como você pode ver, o espaço para nome no arquivo importado começa com o antigo nome do projeto: "TrainerB" , mas seu novo projeto pode ter um nome diferente; basta alterá-lo para o novo nome correto do projeto, no arquivo .xaml e o arquivo .cs de trás.
Dois:
altere as propriedades do arquivo .xaml para:
Ação de Compilação: Recurso Incorporado
Ferramenta personalizada: MSBuild: UpdateDesignTimeXaml
fonte
xaml
arquivo. +1Verifique se no arquivo xaml
corresponder ao nome do 'Projeto1' e ao nome da 'Página1'
fonte
Verifique o arquivo do Designer .
Eu tive esse mesmo problema. No meu caso, a causa era que o
namespace
para FileName.Designer.cs não coincidir com o (correto)namespace
usado em FileName.cs .Alterar o nome
namespace
do arquivo.Designer.cs para corresponder ao nome do arquivo.cs resolveu o problema imediatamente.fonte
Eu já tive isso (embora tenha sido muito minha culpa e tenha sido causado depois que copiei e colei algum código); isso pode ocorrer quando o espaço para nome não corresponde ao XAML e ao código por trás
POR EXEMPLO
e o código por trás é
fonte
Encontrei isso ao renomear um controle de usuário. A maneira como eu o corrigi foi comentar InitializeComponent, verificar se todos os nomes estavam corretos (xaml e code behind), criar o projeto, remover o comentário InitializeComponent e depois compilar novamente. Parece que pode haver algumas causas / soluções para esse problema, mas dessa maneira o fizeram por mim.
fonte
Nenhuma das respostas acima funcionou para mim. Eu tentei todos eles, exceto os duplicados. No entanto, por algum motivo estranho, isso funcionou no meu projeto de plataforma cruzada no Visual Studio 2015:
fonte
Concordo com a resposta acima que os namespaces devem corresponder. No entanto, tive um problema como esse em que os namespaces correspondiam.
Para corrigir, simplesmente alterei o espaço para nome no XAML para um incorreto, salvei e mudei de volta para o correto. Voila!
fonte
Se você estiver usando o Xamarin Forms e mover um arquivo XAML, a "ação de compilação" do arquivo será alterada. O Xamarin Forms requer "ação de compilação = Recurso Incorporado".
Aplique "ação de compilação" no Visual Studio:
Select the XAML file -> Properties -> Build Action = Embedded Resource
fonte
Eu tento todas as sugestões acima. Se você tentar sem sucesso, obtenha o caminho mais fácil. Crie um novo page.xaml e copie seu código para a nova classe e exclua a classe XAML com problemas. Não gaste mais tempo.
fonte
Descarregue a solução inteira e recarregue-a novamente. Em seguida, reconstrua a solução. Isso resolveu o problema para mim.
fonte
Outra causa comum desse erro é se você fez algo nisto:
Clique com o botão direito do mouse na pasta do projeto para criar um novo UserControl. Isso cria um arquivo de classe e xaml que deriva do controle do usuário no espaço para nome da pasta.
Então você decide alterar o espaço para nome da classe porque realmente está apenas usando pastas para organização do código. O atributo x: Class não será atualizado automaticamente; portanto, ele estará procurando por uma classe que não existe. Provavelmente, poderia usar uma mensagem de erro melhor como "x: O tipo de classe não pôde ser encontrado no namesace bla.blaa.blaaa".
fonte
Outra solução para esse problema é simplesmente alterar a propriedade-> Construir Ação no XAML de Embedded Resource para qualquer outra coisa, salvar e alterá-la de volta para Embedded Resource. O erro desaparece.
fonte
Eu sei que isso foi respondido devido a uma causa diferente, mas esta é uma postagem muito bem-sucedida e eu tive o mesmo problema com uma biblioteca de classes. Nesse caso, acabou sendo uma alteração no meu namespace (respondida nesta postagem aqui ) e que o compilador não pôde reconstruir o Window.gics, que define o método InitializeComponent (). Não foi possível porque a biblioteca de classes estava com falta do valor ProjectTypeGuid para projetos WPF no arquivo csproj. As instruções para isso estão aqui e aqui . Eu pensei em compartilhar caso outra pessoa tenha o mesmo problema. Apenas alterar o espaço para nome não é suficiente neste caso.
fonte
Isso aconteceu comigo porque um desinstalador de pacote Nuget eliminou todos os atributos do elemento <Application> no App.xaml. Isso incluiu o atributo x: Class, que especifica o nome da classe do aplicativo. Portanto, a classe parcial que contém o método InitializeComponent () nunca foi gerada.
Corrigi o problema revertendo App.xaml para a cópia controlada pela fonte.
fonte
Isso resolveu para mim.
Eu tinha comentado os recursos no arquivo App.xaml
Comentando isso, foi corrigido o erro de compilação.
Aprofundando um pouco, descobri que o arquivo app.g.cs em {Project} \ obj \ debug continha apenas o seguinte quando deixei o recurso comentado.
fonte
Para quem encontra isso na internet. Verifique o arquivo Windows.csproj se a compilação estiver lá. Deve haver 2 entradas
fonte
<DependentUpon>YourFile.xaml</DependentUpon>
por algum motivo e é isso que o corrigiu para mim!Se os namespaces estiverem corretos, também haverá o mesmo erro,
Apenas feche seu aplicativo e abra-o novamente .
Isso pode resolver seu problema
fonte
Após alguma ação, o espaço para nome do arquivo .cs e o arquivo .xaml podem ser diferentes (no xaml, procure o x: Class = "namespace.yourType").
Corrija-os para que sejam iguais.
fonte
Eu descobri que o "objeto de inicialização" estava (não definido) causando esse erro para mim.
"Objeto de inicialização" (não definido)
fonte
root
para oView
diretório.Como esse parece ser o tópico principal do problema referente à falta de 'InitializeComponent', incluirei minha resposta aqui.
Eu também estava tendo esse problema e tentei tudo o que encontrei aqui e em todos os outros fóruns que o Google encontrou, mas nenhum resolveu o problema para mim. Depois de duas horas tentando de tudo, finalmente descobri o que havia de errado com minha configuração.
Em nosso projeto, estamos usando componentes Metro do MahApps . A visão que estava me causando problemas era uma visão herdada do MetroWindow, assim:
Agora, eu defini meus recursos estáticos como
Foi assim que defini Recursos em
UserControl
s em todas as minhas outras visões, e foi o que presumi que funcionaria.Mas não foi esse o caso
Controls:MetroWindow
! Ali eu precisava absolutamente da definição de recurso da seguinte maneira:Então, meu problema, em resumo, era uma
<ResourceDictionary>
tag ausente . Realmente não sei por que isso produziu o erro 'InitializeComponent' e, estranhamente, nem o produziu em todas as minhas máquinas, mas foi assim que eu o corrigi. Espero que isso ajude (os restantes 0,001% das pessoas que enfrentam esse problema).fonte
Acabei de encontrar esse problema e o projeto foi armazenado na minha pasta de usuário, que é armazenada na rede, e tivemos uma interrupção momentânea na rede. Eu fiz uma construção; queixou-se de que meus arquivos haviam sido modificados fora do editor (eles não tinham; os bloqueios de arquivo acabavam de funcionar) e funcionou perfeitamente, removendo o erro referente ao
InitializeComponent()
método.BTW, no caso de você estar se perguntando, desenvolver algo a partir de uma unidade de rede é uma prática ruim. Isso se torna particularmente problemático quando você está tentando aproveitar o código gerenciado do .NET; na minha experiência, ele assusta toda vez que você constrói. Esqueci de colocar esse pequeno projeto descartável na pasta apropriada e acabei pagando o preço.
fonte
Outra explicação possível é que você está construindo contra o x86. Clique com o botão direito do mouse em sua solução e escolha Gerenciador de Configurações. Veja se você está construindo contra x86 em vez de qualquer CPU.
fonte
Entendo que essa é uma pergunta mais antiga, mas estávamos tendo um problema semelhante. Conseguimos criar um projeto usando o VS2012, mas não usando o msbuild na linha de comando. Entrei no arquivo .proj e notei que não havia um registro para "ProjectTypeGuids" na seção padrão "PropertyGroup", então adicionei o seguinte:
qual é o GUID do projeto para o WPF. Em seguida, excluí e adicionei novamente o UserControl e ele começou a funcionar. Não tenho certeza se tive que fazer o último passo, mas funciona para mim agora.
fonte
Por algum motivo, depois de copiar .xaml e .cs entre projetos, a ação de compilação às vezes muda. Certifique-se de que a ação de compilação do seu .xaml seja a Página.
fonte