Eu estava estudando bastante os novos recursos do Visual Studio 2015 e o Projeto Compartilhado, mas não entendo como é diferente usar uma Biblioteca de Classes ou uma Biblioteca de Classes Portátil. Alguém pode explicar?
Editar: Projeto Compartilhado é um novo recurso do Visual Studio 2015 e é diferente de uma Biblioteca de Classes Portátil. Entendo o que é uma Biblioteca de Classes Portátil. O que estou tentando entender é como um projeto compartilhado difere de uma biblioteca de classes. Veja o link abaixo.
c#
.net
visual-studio-2015
Indy411
fonte
fonte
Respostas:
A diferença entre um projeto compartilhado e uma biblioteca de classes é que o último é compilado e a unidade de reutilização é a montagem.
Considerando que, com o primeiro, a unidade de reutilização é o código-fonte e o código compartilhado é incorporado a cada assembly que faz referência ao projeto compartilhado.
Isso pode ser útil quando você deseja criar montagens separadas direcionadas plataformas específicas , mas ainda possuem código que deve ser compartilhado.
Veja também aqui :
Nas versões anteriores do Visual Studio 1 , era possível compartilhar o código-fonte entre os projetos em Adicionar -> Item Existente e depois escolher Vincular. Mas isso era meio desajeitado e cada arquivo de origem separado precisava ser selecionado individualmente. Com a mudança para oferecer suporte a várias plataformas diferentes (iOS, Android etc.), eles decidiram facilitar o compartilhamento de fontes entre projetos, adicionando o conceito de Projetos Compartilhados.
1 Esta pergunta e minha resposta (até agora) sugerem que os Projetos Compartilhados eram um novo recurso do Visual Studio 2015. De fato, eles fizeram sua estréia no Visual Studio 2013 Update 2
fonte
Encontrei mais algumas informações deste blog .
fonte
Diferenças breves são
1) O PCL não terá acesso total ao .NET Framework, onde o SharedProject possui.
2) #ifdef para código específico da plataforma - você não pode escrever em PCL (a opção #ifdef não está disponível em uma PCL porque é compilada separadamente, como sua própria DLL, portanto, em tempo de compilação (quando o #ifdef é avaliado) ele não sabe de que plataforma fará parte. ) onde, como projeto compartilhado, você pode.
3) O código específico da plataforma é obtido usando Inversion Of Control em PCL, onde, usando as instruções #ifdef, você pode obter o mesmo no Projeto Compartilhado.
Um excelente artigo que ilustra as diferenças entre PCL x Projeto Compartilhado pode ser encontrado no seguinte link
http://hotkrossbits.com/2015/05/03/xamarin-forms-pcl-vs-shared-project/
fonte
Como outros já escreveram, em suma:
reutilização compartilhada do projeto no nível do código (arquivo), permitindo a estrutura e os recursos da pasta também
reutilização de pcl no nível de montagem
O que mais faltava nas respostas aqui para mim é a informação sobre funcionalidade reduzida disponível em uma PCL: como exemplo, você limitou as operações de arquivo (estava faltando muita funcionalidade do File.IO em um projeto de plataforma cruzada Xamarin).
Projeto compartilhado com mais detalhes :
+ Pode usar #if ao direcionar várias plataformas (por exemplo, Xamarin iOS, Android, WinPhone)
+ Toda a funcionalidade da estrutura disponível para cada projeto de destino (embora precise ser compilado condicionalmente)
o Integra em tempo de compilação
- tamanho ligeiramente maior de montagens resultantes
- Precisa do Visual Studio 2013 Update 2 ou superior
pcl :
+ gera um assembly compartilhado
+ utilizável com versões mais antigas do Visual Studio (atualização 2 anterior a 2013)
o
- funcionalidade vinculada dinamicamente vinculada - (subconjunto de todos os projetos pelos quais está sendo referenciado)
Se você tiver a opção, eu recomendaria um projeto compartilhado, geralmente é mais flexível e mais poderoso. Se você conhece seus requisitos com antecedência e um PCL pode atendê-los, você pode seguir esse caminho também. O PCL também impõe uma separação mais clara ao não permitir que você escreva código específico da plataforma (o que pode não ser uma boa opção para ser colocado em um assembly compartilhado em primeiro lugar).
O foco principal de ambos é quando você direciona várias plataformas, caso contrário, normalmente você usaria apenas um projeto comum de biblioteca / dll.
fonte
Do livro VS 2015 sucintamente
Projetos compartilhados permite compartilhar código, ativos e recursos em vários tipos de projetos. Mais especificamente, os seguintes tipos de projeto podem fazer referência e consumir projetos compartilhados:
Nota: - Os projetos compartilhados e as bibliotecas de classes portáteis (PCL) permitem o compartilhamento de código, recursos XAML e ativos, mas é claro que existem algumas diferenças que podem ser resumidas a seguir.
fonte
Biblioteca de classes é um código compilado compartilhado.
Projeto compartilhado é um código-fonte compartilhado.
fonte