Sendo novo no VS, como posso pensar nesses dois conceitos, qual a diferença?
103
Sendo novo no VS, como posso pensar nesses dois conceitos, qual a diferença?
Uma solução é um contêiner para projetos e controla as dependências entre os projetos.
Encontro algumas informações ausentes nas outras respostas (pelo menos para pessoas que vêm de outros IDEs como, digamos, Eclipse). Dizer que uma solução é um container para projetos é apenas parte da coisa. A característica conceitual de um projeto VS (o que determina sua 'granularidade') é que um projeto produz uma saída : normalmente um executável ou uma biblioteca (dll). Portanto, se você for codificar três executáveis que usam código relacionado, criará uma solução e pelo menos três projetos - provavelmente mais.
Só para inventar uma metáfora ..
Uma solução é como uma casa, um projeto como um quarto. Cada cômodo fornece uma peça de funcionalidade, enquanto a casa, um contêiner de cômodos, fornece os meios para unir os cômodos e organizá-los adequadamente.
Meio cafona, mas eu inventei na hora, então tenha paciência comigo :)
fonte
Não ajuda que o Visual Studio pareça tornar as coisas mais confusas. Na verdade, "New Project" cria uma nova SOLUÇÃO contendo um projeto. "Open Project" na verdade abre uma solução contendo um (ou vários) projetos. (O menu de arquivo diz "Abrir projeto / solução", mas na verdade está abrindo soluções. Não há "Fechar projeto", apenas "Fechar solução", que é preciso.
Então, no VS você está sempre trabalhando dentro de uma solução. Muitas soluções contêm apenas um projeto e os desenvolvedores mais recentes provavelmente pensam nelas como a mesma coisa. No entanto, você pode adicionar outros projetos em uma solução.
fonte
Caso alguém decida rolar para baixo até aqui ... Achei que os documentos do MS fizeram um bom trabalho ao descrever as diferenças. Copiei, colei (e reformulei) as partes relevantes aqui:
Uma solução possui um
.suo
arquivo associado que armazena configurações, preferências e informações de configuração para cada usuário que trabalhou no projeto.fonte
Uma solução pode ter muitos projetos.
A solução também pode gerenciar as dependências entre seus diferentes projetos ... certificando-se de que cada projeto seja construído na ordem adequada para que a solução final funcione.
fonte
Um projeto contém arquivos executáveis e de biblioteca que constituem um aplicativo ou componente de um aplicativo.
Uma solução é um espaço reservado para projetos logicamente relacionados que constituem um aplicativo. Por exemplo, você pode ter projetos separados para a GUI do seu aplicativo, camada de acesso ao banco de dados e assim por diante. Os projetos seriam divisões específicas para a funcionalidade do seu programa e a solução seria o guarda-chuva unificando todos eles em um único aplicativo.
fonte
Soluções são contêineres para projetos - você também pode usá-los para organizar itens que são usados em diferentes projetos relacionados (dlls compartilhadas e outros).
fonte
Uma solução é um arquivo de texto legível cuja extensão é
.sln
e com um conteúdo estruturado que descreve os projetos que contém. Um projeto é um arquivo de texto formatado em XML legível cuja extensão é.vcxproj
e tem um conteúdo estruturado de acordo com seu esquema XML, e cujo objetivo principal é conter a listagem de nomes de arquivos de códigos-fonte e suas dependências ou referências a outros códigos-fonte de projeto também.fonte
Para obter mais detalhes, consulte - https://docs.microsoft.com/en-us/visualstudio/ide/quickstart-projects-solutions
Se você tiver experiência em Eclipse, provavelmente irá construir o caminho de um projeto e incluir uma dependência em outro projeto ou incluir um jar externo. No VS, você pode fazer isso em um único contêiner chamado solução, onde todos os projetos relacionados são agrupados.
Por exemplo. Digamos que você construa um aplicativo Android e iOS no xamrin, haveria alguns códigos e recursos comuns que poderiam ir em um projeto separado e, em seguida, seus projetos Android e iOS podem depender desse projeto de código comum. Além disso, você pode ter projetos para testar esses projetos etc.
fonte