Por que criar um projeto ASP.NET 5 Class Library?

98

Estou tentando descobrir o que um projeto "ASP.NET 5 Class Library" (vNext) C # tem a ver com ASP.NET. Por que criar um projeto com este modelo em vez de apenas um projeto normal de "Biblioteca de classes" em C #?

Eu gosto dos novos recursos, como o arquivo project.json em vez do arquivo .csproj etc, mas não parece certo criar uma biblioteca de classes "ASP.NET" quando o projeto não tem nada a ver com ASP.NET ou IIS etc. .É apenas um projeto para a camada de lógica de negócios. Um novo site WebApi ASP.NET eventualmente fará referência a este projeto, mas isso não é relevante neste ponto.

É apenas mal nomeado? Deve ser chamado apenas de "vNext Class Library" e não usar um ícone que se pareça com um aplicativo da web?

mkaj
fonte
Existe uma estimativa de quando eles pensam que é possível adicionar um projeto existente do tipo boa e velha biblioteca de classes? Este é o último pensamento que esperava saudar minha migração de MVC 5 para ASP.NET 5 MVC 6.
radbyx
"ASP.NET 5 Class Library" tem uma estrutura diferente do ASP .NET Core, mas o core tem sua própria Biblioteca de Classes Core , use-a.
Jaider

Respostas:

100

Por que criar um projeto ASP.NET 5 Class Library?

Existem vários benefícios dos projetos de biblioteca de classes do ASP.NET 5 ( .kproj) em relação aos projetos de biblioteca de classes ( .csproj):

  1. Bibliotecas ASP.NET 5 classe apoiar facilmente projectos compilação cruzada para vários destinos, como aspnet50, aspnetcore50, net45, e várias outras variações de biblioteca de classe portátil. Isso inclui suporte avançado do Visual Studio para Intellisense para notificar quais APIs estão disponíveis para quais destinos.
  2. Os pacotes NuGet são criados automaticamente, o que é extremamente comum em bibliotecas de classes.
  3. Maior produtividade quando se trata de coisas como atualizar automaticamente o Gerenciador de Soluções quando o sistema de arquivos muda. Menos conflitos no controle de origem ao tentar mesclar alterações conflitantes no arquivo * .csproj.
  4. Pode ser compilado entre plataformas (em parte porque não depende do MSBuild)

Você pode fazer referência a um projeto * .csproj a partir de um projeto * .kproj (isso ficou muito mais fácil com a nova visualização do Visual Studio 2015), mas sempre foi possível com algumas etapas manuais.

Por que o nome contém "ASP.NET"?

No que diz respeito aos nomes, é uma relíquia da história que em breve será abordada. O novo tipo de projeto é útil muito além dos aplicativos ASP.NET 5. Espere ver novos nomes em uma futura visualização do Visual Studio:

  • Aplicativo de console .NET (plataforma cruzada)
  • Biblioteca de classes .NET (plataforma cruzada)

Atualização 13/05/2015

Com o lançamento do Visual Studio 2015 RC, você pode ver os nomes dos modelos de projeto atualizados:

  • Biblioteca de classes (pacote)
  • Aplicativo de console (pacote)

Eles usam o project.jsonarquivo e o .NET Execution Environment (DNX) para criar, executar e empacotar (em um pacote NuGet) o projeto.

Esses modelos de projeto continuam a aparecer na caixa de diálogo Novo projeto sob o nó "Web", mas agora também aparecem no nó "Visual C #" principal.

VS2015 RC Class Lib / Modelos de aplicativos de console

Eilon
fonte
você pode expandir em # 2 - você quer dizer que o intellisense sugere uma API e então baixa o pacote nuget para você? Eu digito JQuery e ele dá para mim?
Simon_Weaver
3
@Simon_Weaver Quero dizer que enquanto o projeto regular da Biblioteca de classes produz apenas uma DLL e PDB, o novo gera um NUPKG (pacote NuGet) que pode ser carregado em nuget.org.
Eilon
2
.kproj desde então foi renomeado para .xproj
Boris Lipschitz
10

Esta é uma observação interessante, o modelo atual irá gerar uma biblioteca de classes compatível com ASP.NET 5 runtime. Você não consegue isso na biblioteca de classes C # normal.

Registrei o seguinte problema para rastrear esta questão de design - https://github.com/aspnet/Home/issues/281

Yishai Galatzer
fonte
Vou assistir seu problema, obrigado. Mesmo problema de nomenclatura com "ASP.NET 5 Console Application", obviamente. Talvez deva ser chamado de "Aplicativo de console vNext", caso contrário, os desenvolvedores podem confundi-lo com algum tipo de aplicativo de console para um site ASP.NET. Talvez a localização dos modelos deva ser movida de "Visual C # -> Web" para "Visual C # -> vNext"
mkaj
O problema do github foi encerrado. Melhores nomes de projetos - obrigado: github.com/aspnet/Home/issues/281
mkaj de
3

Pelo que entendi, um benefício é que o produto final do projeto ASP.NET 5 Class Library é um pacote NuGet (em vez de apenas o assembly .dll).

Você pode gerar o pacote NuGet clicando com o botão direito do mouse no projeto no Visual Studio 2015 e escolhendo a opção "Publicar ...". Ou você pode usar o "pacote KPM" na linha de comando.

Além disso, você tem a capacidade de usar o tempo de execução do ASP.NET 5 Core para que sua biblioteca possa ser executada em várias plataformas.

Thomas Kadlec
fonte
Está mal nomeado? Não tem nada a ver com ASP.NET?
mkaj
1
Um dos principais objetivos do ASP.NET 5 é permitir que ele seja executado em várias plataformas. Alguns perguntaram "não deveria se chamar .NET Core?" Pelo menos por enquanto, a abordagem multiplataforma da Microsoft é apenas sobre a web (e aplicativos de console) e não oferece suporte ao desenvolvimento de desktop como Java. Para enfatizar que é sobre a web, eles estão usando a marca "ASP.NET 5". Se você deseja produzir uma biblioteca que execute várias plataformas, ela deve ser uma biblioteca de classes ASP.NET 5.
Thomas Kadlec
Significa que posso dizer 'sim' ao meu chefe quando ele perguntar 'ASP.NET é a melhor tecnologia' - é por isso
Simon_Weaver