Como forçar um arquivo de solução (SLN) a ser aberto no Visual Studio 2013?

102

Tentar abrir uma solução VS 2012 (arquivo SLN) explicitamente no VS 2013 é bem-sucedido. Basta clicar duas vezes no Windows Explorer para abri-lo no VS 2012.

Eu li "O Visual Studio 2012 não converte a solução vs2010? " E segui a sugestão de "Salvar como ..." o arquivo de solução .

Ainda assim, ele abre no VS 2012 por padrão.

Minha pergunta:

Como alterar um arquivo SLN para forçá-lo a ser aberto no Visual Studio 2013?

Uwe Keim
fonte

Respostas:

123

O .slnarquivo indica a versão pretendida como uma das primeiras linhas - por exemplo:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013

ou:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012

No entanto, ele só pode fazer uso disso se o aplicativo padrão para .slnarquivos for o "Microsoft Visual Studio Version Selector". Não é incomum que o .slnaplicativo padrão tenha uma versão específica . No Windows 8:

insira a descrição da imagem aqui

você pode saber qual é o padrão porque diz "continue usando":

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Marc Gravell
fonte
2
@UweKeim hmmm; essa não é minha experiência; com o seletor de versão como padrão, para mim a versão correta do devenv é carregada por arquivo sln - é possível que você tenha carregado essas soluções no VS2013 em algum ponto? que irá atualizá-los
Marc Gravell
2
Bem, sua sugestão é mais do que suficiente para mim. Adorei os ícones de pasta agora novamente amarelos, em comparação com aqueles escuros no VS 2012!
Uwe Keim
2
@UweKeim se você olhar no arquivo sln, a segunda linha informa com qual IDE abrir: # Visual Studio 2013vs# Visual Studio 2012
Marc Gravell
1
@UweKeim Eu imagino que tenha um fallback de "se eu não reconhecer o valor, ou se o IDE não estiver instalado, use o IDE mais recente instalado"
Marc Gravell
6
para mim o launcher padrão já estava definido como "Microsoft Visual Studio Version Selector" mas estava lançando soluções feitas no visual studio 2013 no ide 2012 !!. Mas reaplicar o "Seletor de versão do Microsoft Visual Studio" como padrão corrigiu o problema. Agora 2012 abre em 2012 ide e 2013 abre em 2013 ide. (Estou usando o Windows 7 64bit)
Peter Flannery
35

Observe que você também pode forçar a atualização de um arquivo .sln ou .proj usando a linha de comando, onde devenv é a versão IDE de destino:

devenv "MyProject.sln" /upgrade

Exemplo:

"%programfiles(x86)%\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" "D:\Source\MySolution.sln" /upgrade

Observe que isso não abre o Visual Studio. Uma alternativa é, de dentro do IDE, selecionar "Salvar como" para seu arquivo de solução e sobrescrever ou salvar a solução com um novo nome.

Leia mais: http://msdn.microsoft.com/en-us/library/w15a82ay.aspx

zumey
fonte
1
ISSO porque é programável e não hacky.
CAD cara de
2
Infelizmente, essa técnica nem sempre atualiza o arquivo de solução.
Theophilus
Depois disso devenv "MyProject.sln" /upgrade, você também deve editar o arquivo .sln, verifique os ans de @ Zac.
Wei Guo
22

Parece que o OP já tem uma resposta que funciona ... mas para mim o problema era diferente. Eu tinha uma solução VS 2012 (várias na verdade) e queria convertê-los para 2013 (que eu entendo ser uma alteração trivial no arquivo .sln, mas eu queria que fosse feito automaticamente no caso de haver alguma lógica de atualização secreta que eu não conhecia) .

Então pensei em abri-lo no VS2013, ele seria atualizado automaticamente conforme o esperado e, em seguida, seria configurado para clicar duas vezes na solução e vê-la no VS2013 daqui para frente. Mas abrir no VS2013 NÃO era atualizar a solução automaticamente como esperado e não consegui encontrar uma maneira explícita de forçar a atualização depois de abrir o arquivo no VS2013. Eu poderia trabalhar com a solução, salvar minhas alterações e fechar o VS2013, mas o .sln permaneceria inalterado e sem atualização.

Acontece que meu problema estava em como eu estava abrindo a solução ... por hábito, clico com o botão direito nos arquivos e seleciono "abrir com" para escolher o programa que desejo usar para abrir um arquivo. Eu faço isso com frequência. Observação: NÃO estou falando sobre alterar o programa padrão "abrir com", mas apenas abrir um arquivo com um programa específico uma vez. Então, eu clicaria com o botão direito do mouse no arquivo .sln ... abrir com o Visual Studio 2013 ... e nada seria atualizado.

Eventualmente, pensei em ir para o VS2013, em seguida, clique em Arquivo> Abrir e selecione o arquivo .sln (isso é estranho para mim, já que dificilmente ou nunca abro algo assim, talvez você seja da mesma forma). De qualquer forma, isso atualizou o arquivo de solução instantaneamente.

Após a atualização, as linhas 2-3 do arquivo .sln foram alteradas:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012

para isso:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30501.0
MinimumVisualStudioVersion = 10.0.40219.1

Portanto, por experiência própria, para atualizar automaticamente um .sln do VS2012 para o VS2013, você deve abrir o VS2013 e selecionar o .sln na caixa de diálogo Arquivo> Abrir. Usar o shell do explorer para forçar o arquivo .sln a abrir no VS2013 não invoca a lógica de atualização (aparentemente).

Como uma observação adicional, testei com outra solução, e depois de fazer alterações por meio do Configuration Manager (que obviamente "toca" o arquivo .sln) atualizei um VS2012 para VS2013, mesmo depois de abri-lo clicando com o botão direito do mouse para abrir com.

TCC
fonte
1
Isso é exatamente o que eu estava tentando fazer. Tenho a atualização 3 e um projeto atualizado automaticamente, mas o outro só mudaria quando abrisse o Gerenciador de configuração. Obrigado pelas dicas!
Erica
2
Eu até abri um .sln vs 2012 de dentro do VS 2013, mas para mim ele NÃO atualizou. Esquisito.
PositiveGuy
4
Não é a abertura da solução no VS 2013 que dispara a atualização, é uma ação que modifica a solução, como alterar uma configuração na configuração ativa.
bleater
Tentei atualizar do vs2013 para o vs2015 e funcionou.
Dingxin Xu
7

Eu tinha uma solução que havia sido atualizada anteriormente de 2010 para 2013 com sucesso, mas ainda mostrava o .sln associado a 2010.

Testei todos os métodos fornecidos neste tópico e o único que corrigiu com sucesso o .sln foi abrir o Visual Studio 2013 sozinho, em seguida, abrir a solução que ainda estava associada a 2010 no IDE e usar o [Arquivo]> [Salvar (nome) .sln as] para sobrescrever o arquivo .sln existente.

Definir o arquivo assoc do .sln como o "seletor de versão do Visual Studio" não fez nenhuma alteração e a solução continuou a ser aberta em 2010.

O método devenv (nome) .sln / upgrade não fez nenhuma alteração no meu arquivo .sln.

Hackear o texto bruto do arquivo .sln corrompeu o meu e ele não abriu.

Jeff
fonte
Saúde Jeff, acabei de me deparar com a mesma situação que você. Devo dizer que é bom que a Microsoft tenha decidido que o VS 2013 não tenta atualizar tudo o que toca, ao contrário das versões anteriores do VS! Normalmente é o contrário, e estou tentando evitar que meus diferentes VS IDEs atualizem uns dos outros arquivos .proj e .sln :)
Simon Brangwin
@SimonBrangwin que é uma melhoria, exceto que se você chamar explicitamente com / upgrade de acordo com a (s) outra (s) resposta (s), você esperaria que ele realmente executasse a atualização solicitada!
stannius
Jeff, obrigado! Esta é a única maneira que pude encontrar para atualizar meu sln VS 2013 para abrir por padrão com 2015. Eu também tive que abrir o explorador de solução e selecionar manualmente o nó de solução no topo da árvore do explorer para ver o 'Salvar (nome ) .sln as 'no menu Arquivo.
ToastyMallows de
6

Para resolver esse problema, acabei de alterar as seguintes linhas do arquivo .sln:

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010

para estes:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013

A linha de comentário deve ser alterada à medida que é analisada pelo carregador de solução.

Zac
fonte
4

Isso pode funcionar para leitores que tentam atualizar um arquivo de solução para Visual Studio 2015. (Eu atualizei uma solução VS 2012.)

  1. Abra a solução no VS 2015.
  2. Adicione um novo projeto à solução. (Eu adicionei um projeto de teste.)
  3. Remova o projeto.
  4. Salve a solução.

Você pode querer excluir a pasta de projeto removida neste momento, pois a etapa 3 não a excluiu.

Isso funcionou para mim quando nem as respostas de zumey nem de TCC funcionaram .

EDITAR

Metro Smurf tinha uma resposta semelhante, mas mais fácil do que a minha para uma pergunta semelhante . Seus passos foram:

  1. Solução aberta no VS 2015
  2. Clique com o botão direito em solução> Adicionar> Nova Pasta de Solução (o nome não importa)
  3. Salvar solução
  4. Exclua a pasta de solução recém-adicionada
  5. Salvar solução
Teófilo
fonte
Simplesmente renomeei um projeto e o revertei depois. Desta forma, nenhuma pasta é criada
Andy