Migrei uma solução que está direcionada para o .NET 4.0 no VS2010 para o VS2012 e agora gostaria de redirecioná-la para .Net 4.5
O que não tenho certeza são os pacotes NuGet. Por exemplo, o EF5, que atualizei do EF4 no VS2010, na verdade é o EF 4.4, como você pode ver aqui:
<Reference Include="EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll</HintPath>
</Reference>
Também posso ver o seguinte em packages.config para o projeto:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="5.0.0" targetFramework="net40" />
</packages>
Então, minha pergunta é:
Qual é a melhor prática para redirecionar todos os pacotes NuGet atualmente definidos para direcionar o .NET 4.0 para o .NET 4.5?
.net
nuget
visual-studio-2012
.net-4.5
Ivan Zlatev
fonte
fonte
Respostas:
O NuGet 2.1 oferece um recurso que torna isso muito mais simples: basta fazê
update-package -reinstall -ignoreDependencies
-lo no Package Manager Console.O NuGet 2.0 não trata de redirecionar seus aplicativos muito bem. Para alterar as estruturas de destino dos seus pacotes, você deve desinstalar e reinstalar os pacotes (anotando os pacotes que você instalou para poder reinstalar cada um deles).
O motivo pelo qual os pacotes devem ser desinstalados e reinstalados é:
fonte
update-package -reinstall
no Package Manager Console. Todos os pacotes começaram a ser desinstalados e atualizados e, de repente, o Windows 8 foi reiniciado e, quando voltou, ele disse: "Seu PC encontrou um problema e foi reiniciado. Deseja enviar informações à Microsoft?" :( Assustador ... Aliás, esta é a versão do NuGet que instalei no momento:2.2.40116.9051
Abriu um problema aqui: nuget.codeplex.com/workitem/3049Para aqueles que tiveram problemas com o
update-package -reinstall <packagename>
comando, considere executá-lo com-ignoreDependencies
sinalizador, assim:Esse sinalizador deixará as dependências do pacote em paz, caso contrário, elas poderão ser atualizadas, mesmo que o pacote que você queria reinstalar ainda mantenha sua versão na mesma.
Mais informações aqui .
fonte
get-package | % { update-package $_.Id -reinstall -ProjectName $_.ProjectName -ignoreDependencies }
Depois de tentar a resposta aceita sem êxito, gostaria de sugerir um comando menos arriscado:
Para mais informações: http://blog.nuget.org/20121231/a-quick-tutorial-on-update-package-command.html
fonte
-reinstall
, instalará apenas a mesma versão, portanto, não há nenhum benefício em usar-safe
. Estou esquecendo de algo?Enquanto tentava reinstalar os pacotes em toda a solução, encontrei um erro de dependência (apesar de usar o
-ignoreDependencies
sinalizador) e todos os arquivos packages.config para cada projeto foram excluídos. No VS2013, parece que o packages.config não é liberado novamente no disco e adicionado novamente até que todas as dependências / referências atualizadas sejam reconectadas ao projeto.No meu caso o que funcionou foi o de atualizar cada projeto de um-em-um-tempo, adicionando a
-ProjectName
projectname aoupdate-package
comando. Nesse caso, o packages.config é atualizado à medida que cada projeto é atualizado.Pode não ser prático para soluções muito grandes, mas parece um compromisso razoável ainda aproveitar a atualização automatizada para o maior número possível de projetos e isolar os problemáticos sem que todos os packages.config da sua solução sejam excluídos por falha.
fonte
UpdatePackage -Reinstall
excluiu as referências package.config e project para alguns projetos (especificamente aqueles que tiveram assemblies falsos gerados neles). Fizemos uma solução para isso, desfazendo todas as alterações no projeto e executando asneira:Update-Package -reinstall -ProjectName "PROJECTNAME" -IgnoreDependencies
Com o Visual Studio para Mac 2019, clicar com o botão direito do mouse na pasta Pacotes mostra a opção 'Retarget' no menu. Isso resolveu o problema de redirecionamento para todos os pacotes no projeto que exigiam redirecionamento. Parece que não havia o Gerenciador de Pacotes NuGet no menu Ferramentas do Visual Studio para Mac (pelo menos no meu), então não pude iniciar o Console do Gerenciador de Pacotes.
fonte