Pergunta

Anteriormente, eu tinha uma subpasta no meu projeto de aplicativo WPF chamado "Controls". Continha um controle do usuário do WPF. Decidi mover esse controle de usuário para minha pasta "visualizações". Como a pasta original estava vazia, decidi excluí -la do projeto.

Como o controle e a pasta do usuário são removidos, recebo um erro de compilação porque o controle do usuário usou o ProjectName.Folder namespace e agora nada faz referência a ele. MainWindow.g.cs é o que as referências ProjectName.Controls em uma instrução usando.

Eu sei que *.g.cs são gerados pelo VS e não podem ser editados porque será substituído. O que eu faço para não permitir que esse espaço para nome seja gravado no arquivo G.CS? Tentei limpar minha solução/projeto e reconstruir, mas nada funcionou.

Foi útil?

Solução

Eu tinha uma referência local ao espaço para nome dos controles no meu código XAML (mainwindow.xaml). Eu removi a referência, limpei o projeto e produzi uma construção bem -sucedida.

Outras dicas

Em seu arquivo de controle de usuário,

No seu nome de classe.xaml, você deve alterar o espaço para nome, como mostrado abaixo,

<UserControl
    x:Class="YourOldNamespace.ClassName"
    ...
    ...
/>

E em sua classe nome.xaml.cs, você deve alterar o espaço para nome, como mostrado abaixo

using System;
using System.Windows;

namespace YourOldNamespace{

   public class ClassName{ ....

}

Em ambos os arquivos, você deve substituir o YouroldNamespace por algum novo espaço para nome, conforme necessário.

Também tive problemas com os arquivos G.CS em meus projetos antes. Como eles são gerados automaticamente, eu tendem a excluir o arquivo manualmente e reconstruir.

Não se esqueça também, você deve verificar se a propriedade Build Action quando clicar no arquivo XAML afetado está definido como página (em vez de recurso). Isso é útil saber quando você copia um XAML de outro projeto usando a cola de cópia para economizar tempo.

Veja também o App.xaml e todos os seus dicionários de recursos. Por qualquer motivo, a opção Substitua de 2012 em arquivos / "Solução inteira" não encontrou a referência de namespace antiga no app.xaml, teve que mudar manualmente isso. Corrigido para mim.

Não se esqueça de alterar seu arquivo genérico.xaml também,

<ResourceDictionary 
                   xmlns:local="clr-namespace:MyOldNameSpace">
</ResourceDictionary>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top