none
O que usar no lugar de App_Code em Web Application RRS feed

  • Pergunta

  • Estou dando manutenção em um projeto que apesar de estar como Web Application (.sln)  tem uma pasta app_code.

    Nesta página existe uma class PaginaBase que herda System.Web.UI.Page e tem alguns métodos. Todas as outras páginas herdam a PaginaBase.

    Não tenho como mudar esta estrutura agora e tudo esta funcionando.

    Porém pesquisando na internet vi que não é a melhor forma de usar em Web Application, pois pode acontece conflitos por esta pasta ser para Web Sites.

    Qual seria a opção correta para substituir a pasta app_code?

    Em add -> Add asp.net folder aparece: appGlobal e AppLocal, algumas dela substitui a app_code?


    Ninguém falou que seria fácil!

    quinta-feira, 20 de novembro de 2014 16:33

Respostas

  • Na verdade, a estrutura com App_code é proveniente de um "WebSite". Logo, provavelmente esse site era um "WebSite" e foi convertido para "WebApplication", porém se manteve a estrutura antiga.

    O ideal, já que está utilizando WebApplication é ir no Solution Explorer, clicar com o botão direito e Adicionar um novo projeto do tipo "Class Library". Então, transfira seu código da App_code para essa nova ClassLibrary.

    Em seguida, clique com o botão direito sobre sua aplicação web e adicione referencia a esse novo projeto de class library.

    Pronto. Isso organiza seu código de forma correta. Claro que, dependendo do que existe nessa App_code, uma separação mais modular possa ser necessário. Algo como "Class Library de acesso a dados, negócio, infraestrutura, etc..). O que, no fim da constas, seria separar seu projeto em "camadas".

    Porém, é claro, devido a mudança da "App_code" para uma Class Library, erros de nomenclatura podem acontecer e você terá que arrumá-los, já que ao criar uma Class Library, o namespace vai mudar, e isso deve ser ajustado.

    Mas assim que ajustar as nomenclaturas, tudo vai funcionar perfeitamente.


    • Editado undefined error quinta-feira, 27 de novembro de 2014 16:18
    • Marcado como Resposta jothaz sexta-feira, 28 de novembro de 2014 21:48
    quinta-feira, 27 de novembro de 2014 16:17

Todas as Respostas

  • Na verdade, a estrutura com App_code é proveniente de um "WebSite". Logo, provavelmente esse site era um "WebSite" e foi convertido para "WebApplication", porém se manteve a estrutura antiga.

    O ideal, já que está utilizando WebApplication é ir no Solution Explorer, clicar com o botão direito e Adicionar um novo projeto do tipo "Class Library". Então, transfira seu código da App_code para essa nova ClassLibrary.

    Em seguida, clique com o botão direito sobre sua aplicação web e adicione referencia a esse novo projeto de class library.

    Pronto. Isso organiza seu código de forma correta. Claro que, dependendo do que existe nessa App_code, uma separação mais modular possa ser necessário. Algo como "Class Library de acesso a dados, negócio, infraestrutura, etc..). O que, no fim da constas, seria separar seu projeto em "camadas".

    Porém, é claro, devido a mudança da "App_code" para uma Class Library, erros de nomenclatura podem acontecer e você terá que arrumá-los, já que ao criar uma Class Library, o namespace vai mudar, e isso deve ser ajustado.

    Mas assim que ajustar as nomenclaturas, tudo vai funcionar perfeitamente.


    • Editado undefined error quinta-feira, 27 de novembro de 2014 16:18
    • Marcado como Resposta jothaz sexta-feira, 28 de novembro de 2014 21:48
    quinta-feira, 27 de novembro de 2014 16:17
  • Raphael Moreira,

    Eu sempre prefiro criar projetos separados. Até criei um pasta chamada "Codigo" e jogue a classe nela, mudei a propriedade "Build Action" da classe para "compile" e funcionou, mas sua sugestão é muto melhor.

    Agradeço atenção, assertividade e disposição em compartilhar conhecimentos.


    Ninguém falou que seria fácil!

    sexta-feira, 28 de novembro de 2014 21:52
  • Sim, principalmente se no futuro, você precisar compartilhas suas regras de negócio. Se ela estiver dentro de seu WebSite, não vai ficar muito bom.

    Estando numa ClassLibrary separada, você pode reaproveitá-la em outros sistemas.

    quarta-feira, 3 de dezembro de 2014 12:38