Como impedir o Visual Studio de "sempre" verificar arquivos de solução?

152

Aparentemente, sem motivo, toda vez que abro minha solução, o Visual Studio verifica o arquivo sln.

Se eu compará-lo com a versão anterior, não há alterações. Mas isso é realmente frustrante, pois todo mundo tem a solução verificada.

Estou usando o VS 2008 e o TFS 2008, ambos SP2.

Alguma idéia de como posso impedir que isso aconteça? Ou é um recurso / bug do provedor de controle de origem TFS para o VS?

CodeClimber
fonte
você tem um projeto de teste de unidade como parte da solução?
Mitch Wheat
1
O TFS suporta checkouts simultâneos e, desde que não haja modificação no arquivo .sln, o check-out múltiplo não é um problema.
Dirk Vollmar
5
Quando os arquivos * .sln têm alterações reais, eles são um pesadelo horrível de se mesclar, porque os projetos recebem IDs arbitrários, mas não exclusivos. Sou um grande defensor dos checkouts simultâneos, mas mantenho a maior parte do nosso * .sln bloqueado.
Richard Berg
3
ISTO É CORRIGIDO NO VS2013 !!! Eu abro a mesma solução em 2012 e ele faz check-out .sln, aberto em 2013 e permanece claro.
felickz
2
Eu já vi isso de tempos em tempos com todas as versões do Visual Studio 2010 e da versão mais recente, o Visual Studio 2015 Update 3. Ocorre cerca de metade das vezes que abro uma solução e parece ser mais frequente para soluções com muitos projetos.
Tore Østergaard

Respostas:

121

Isso acontece quando o seguinte está no arquivo .sln:

GlobalSection(ExtensibilityGlobals) = postSolution
    MyGlobalProperty = AnyValue
EndGlobalSection

Eu descobri que a Enterprise Library adicionou um desses. Eu o removi, fiz o check-in da solução, fechei e reabri-o, e não mais check-out automático.

Graham Clark
fonte
21
Parece que o pacote do Unity NuGet pode ter feito isso no meu arquivo de solução no VS 2010. Removai esta seção e meu problema de verificação automática foi resolvido. Graças à Graham!
Dan Mork
14
duas das minhas tecnologias favoritas - TFS e EntLib - que par de queridinhos.
1
Eu tenho essa seção, mas não quero removê-la, pois ela contém dados que eu quero manter - e agora? A Microsoft encerrou esse problema como "não reproduzível" - estúpido? connect.microsoft.com/VisualStudio/feedback/details/573538/…
mattanja
O comentário de Dan adiciona as informações necessárias - não é necessário remover todas as seções globais - apenas a parte que parece ter sido adicionada pelo pacote unity nuget.
precisa saber é o seguinte
ainda é o mesmo em 2012
BlackICE 12/04
6

Na memória, se você usar o menu Ferramentas, Opções e selecionar o Controle de origem, Ambientes painel , deve haver algumas opções para configurar a maneira como o IDE interage com o controle de versão.

Eu acho que algumas dessas opções controlam o checkout no comportamento aberto .

jussij
fonte
1
sim ... eles permitem que você check-out automaticamente, alerta de check-out, ou não fazer nada ... mas nada que ajuda com este problema
CodeClimber
você não pode simplesmente dizer "não, não dê uma olhada" quando isso solicitar?
22411 Scott Marlowe
Eu queria ser o único desenvolvedor na equipe ... infelizmente eu não posso confiar um todos os desenvolvedores de ser diligente
CodeClimber
CodeClimber, toda vez que você inicia o VS, ele faz uma verificação automática e você deseja que a interrupção e a desativação da verificação automática não resolvam o problema. O que?
Veight
1
Para aqueles que não possuem "Ambientes" em sua lista de opções, altere sua conexão de "Local" para "Servidor" (fonte: stackoverflow.com/questions/26843300/… )
VenerableAgents
5

No caso de, como eu, você não conseguir fazer funcionar e descobrir que um ou mais projetos também são verificados, encontrei uma solução mais simples. Anote o (s) projeto (s) que ele continua fazendo check-out. Vá para Arquivo - Controle de origem - Alterar controle de origem e, em seguida, desative os projetos em questão. Clique em OK, Salvar tudo e volte para o Change Source Control e vincule o projeto à solução. Espero que isso funcione para outros

user408720
fonte
3

Embora não previna o problema em primeiro lugar, o uso liberal do comando "Desfazer inalterado" do Team Foundation Power Tools (surpresa surpresa) desfará a edição pendente se nenhuma alteração tiver sido feita.

Dave Roberts
fonte
Link atualizado para o Team Foundation Power Tools: marketplace.visualstudio.com/…
Jaider
3

Permita o check-out e compare os dois arquivos. Se o VS adicionou algo como

<Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" />

você está enfrentando um bug do VS com uma solução no VS2008, mas não portado para o VS2005

Verifique este link para obter mais detalhes:

Luis Filipe
fonte
Nenhum projeto na solução possui essa linha de XML
CodeClimber
2

O arquivo da solução Visual Studio está sendo retirado silenciosamente por meio de um ou mais projetos da solução usando a Microsoft Enterprise Library - acredito que isso tenha algo a ver com o Enterprise Library Configuration Utility, que permite o gerenciamento da configuração dos vários Application Blocks - http : //msdn.microsoft.com/en-us/library/ff649479.aspx

Consulte esta postagem dos Comentários da Microsoft: http://connect.microsoft.com/VisualStudio/feedback/details/737184/globalsection-extensibilityglobals-postsolution-checks-out-sln-file-on-open

Nigel Belham
fonte
obrigado pelo link Nigel, toda a equipe está enfrentando esse problema
Baldy
1

É um recurso / bug de um dos sistemas do projeto sendo carregado na solução. Tente remover vários tipos de projetos (C #, VB, C ++, site, aplicativo Web, teste de unidade, silverlight ...) até que ele desapareça; essa é a sua resposta.

Richard Berg
fonte
0

Você está salvando seus arquivos antes de fazer a comparação? Aconteceu comigo há algum tempo e continuo dizendo que não há alterações entre os arquivos, mas depois de algum tempo percebo que não estava salvando os arquivos antes e estava comparando com a versão em disco, não a versão em memória.

Sempre que você abre alguma solução no Visual Studio, ele executa algumas operações que podem causar a alteração dos arquivos .sln ou de projeto e, em seguida, solicita que você faça o check-out do arquivo. Isso acontece quando há alterações na estrutura da pasta na máquina do desenvolvedor ou quando elas não têm as mesmas versões de todos os arquivos. Talvez alguém tenha adicionado um projeto em alguma pasta e outro desenvolvedor tenha o mesmo projeto em outro local. Outro caso que vejo acontecer é quando temos uma solução com alguns projetos c ++, por algum motivo, um desses projetos c ++ possui um arquivo .res com caminhos absolutos. Depois que esse arquivo foi gerado automaticamente pelo VS, ele foi alterado de máquina desenvolvedor para máquina desenvolvedor.

Eu sugiro que você abra o arquivo .sln e procure alguns caminhos absolutos ou caminhos relativos que podem não existir em alguma máquina do desenvolvedor, dependendo dos arquivos que eles obtêm do seu Controle de origem.

Carlos
fonte