C# Asp.net - O nome do tipo ou namespace 'Helper' não pôde ser encontrado (você está perdendo uma diretiva usando uma referência de montagem?)

StackOverflow https://stackoverflow.com/questions/3416487

  •  26-09-2019
  •  | 
  •  

Pergunta

Estou reformulando o código de outra pessoa, onde eles tinham uma classe auxiliar com muito código que não deveria estar lá (acesso a dados, lógica de negócios, tudo foi lentamente empurrado lá).

Eu movi o código relevante para as classes pré-existentes apropriadas e criei uma nova classe de auxiliar separada no projeto apropriado, mas todas as minhas referências a essa classe simplesmente não funcionam.

Aqui está uma visão simples de como minha classe parece (nomes ligeiramente alterados);

namespace Company.Web.Application.Reporting 

{
    public class ReportHelper
    {
    here I have a bunch of methods
    }
}

E aqui está como está sendo referenciado;

using Company.Web.Application.Reporting;

namespace Company.Web.Application.App.Reports
{
    public partial class PlansReports : PageBase
    {
        //This is the problem part
        private ReportHelper Helper = new ReportHelper(); 
        heaps of other code with no problems here...
    }
}

Meu problema é que eu recebo o seguinte erro, em todos os lugares em que tento acessar meu novo ajudante.

O nome do tipo ou namespace 'reportelper' não pôde ser encontrado (você está perdendo uma diretiva ou referência de montagem?)

Todas as minhas declarações de uso estão lá, tenho as referências apropriadas em cada projeto relevante, mas isso ainda persiste. Nesse ponto, estou totalmente preso, só preciso resolver esse problema de referência para que eu possa garantir que todos os meus métodos auxiliares funcionem corretamente.

Qualquer ajuda é muito apreciada,

Pat.

Foi útil?

Solução

Ok, eu encontrei o problema (na verdade um colega)

Esta classe auxiliar original estava contida na pasta app_code do meu projeto principal, que, como acabei de aprender, lida com a compilação de maneira diferente a todas as outras pastas de um projeto. O código aqui é compilado no tempo de execução, e não durante a construção. Quando criei minhas novas classes, elas estavam na pasta app_code porque usei o código Rush para extrair a classe para um novo arquivo, que o manteve no mesmo local ... após o qual os movi para o local "sensato". Infelizmente, eles ainda tinham a ação de construção do "conteúdo" herdado de sua presença anterior na pasta app_code. Então, no novo arquivo de classe, eu simplesmente mudei sua ação de construção para "compilar" e agora tudo está bem com o mundo.

Saúde,

Pat.

Outras dicas

É seu ReportHelper em um projeto separado ou DLL? Se sim, você adicionou este projeto/DLL como referência? (No seu Solution Explorer em Referências, verifique seu projeto/DLL está lá.

Você construiu Company.Web.Application.Reporting para que o tipo seria conhecido? Essa seria minha ideia, além de garantir que as dependências sejam configuradas corretamente.

Parece que você sabe o que está fazendo e tudo parece certo, então tem que ser algo simples. Você está tentando acessar mudanças no reportelper que não foram compiladas na DLL? Eu tentaria reconstruir a assembléia de referência; Toda vez que você faz alterações nessa montagem, ela precisa ser reconstruída.

Verifique também que você está adicionando a montagem correta (por exemplo, depuração vs. lançamento) ao seu projeto. Não importa qual tipo, mas você não deseja compilar novas alterações na DLL de depuração e continuar adicionando a versão antiga da DLL de liberação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top