aviso: todos os projetos que fazem referência a MyProject.csproj devem instalar o pacote nuget Microsoft.Bcl.Build

90

Eu tenho um aplicativo ASP.NET MVC 4 desenvolvido no VS 2012. O aplicativo consiste em um projeto principal (MyProject), um projeto de teste de unidade (MyProject.Tests), um projeto de implantação do Azure (MyProject.Azure) e alguns projetos de biblioteca de uso geral.

Quando clico com o botão direito do mouse na solução ou no projeto principal e seleciono Gerenciar pacotes NuGet, vejo várias atualizações da Microsoft que aparentemente foram disponibilizadas no mês passado. Se eu clicar no botão Atualizar tudo, as atualizações serão aparentemente instaladas sem problemas óbvios, mas quando crio a solução, recebo esta mensagem de erro DUAS VEZES:

warning : All projects referencing MyProject.csproj must install nuget package Microsoft.Bcl.Build

Ok, então eu tenho dois projetos que fazem referência a MyProject: MyProject.Tests e MyProject.Azure. Eu posso clicar com o botão direito em MyProject.Tests, selecionar ManageNuGet Packages e adicionar Microsoft.Bcl.Build. Isso elimina um dos dois avisos. Mas o VS não me dá a opção de gerenciar pacotes NuGet para o projeto MyProject.Azure .

Como adiciono o pacote Microsoft.Bcl.Build ao projeto de implantação do Azure?

EDITAR:

Graças ao usuário swell , agora sei que um problema do Microsoft Connect para esse problema foi aberto aqui .

Bob.at.Indigo.Health
fonte
2
Obrigado pela referência ao problema de conexão, este é um problema irritante.
Paul Keister de
1
Relacionado ao aviso ao construir o projeto de implantação, também há um bug que causa um aviso falso ao publicar o projeto. O bug relacionado à publicação também é relatado no Connect . Eu não sei de uma solução alternativa.
Edward Brey
3
O mesmo problema acontece comigo para projetos WiX que têm referências a outros projetos (com o propósito de colher a saída do projeto, também conhecido como "calor"). Não faz nenhum sentido para um projeto de instalador de WiX instalar pacotes NuGet! Argh !!
Jaans
1
O link para o problema de conexão agora retorna 404 connect.microsoft.com/VisualStudio/feedback/details/789839/…
Ryan Gates

Respostas:

54

Se você clicar duas vezes no aviso, obterá instruções para desativar o aviso.

É seguro desabilitar para referências de projetos de projetos que ainda não suportam Nuget.

Veja a parte abaixo em negrito copiada de Microsoft.Bcl.Build.targets.

BclBuildValidateNugetPackageReferences

Este destino pode ser desativado para uma referência de projeto definindo SkipValidatePackageReferences = true para a referência:

<ProjectReference Include="..\pcl\pcl.csproj">
  <Project>{664a9e98-fac7-4567-a046-0dde95fddb48}</Project>
  <Name>pcl</Name>
  <Properties>SkipValidatePackageReferences=true</Properties>
</ProjectReference>
TheESJ
fonte
4
Arthur, você pode tentar definir o valor de metadados AdditionalPropertes em vez de Propriedades?
TheESJ
5
@TheESJ Eu estava tendo esse problema com um projeto de WiX e parece que a configuração de propriedades adicionais em vez de propriedades funciona. Estou interessado em saber por quê
lc.
3
Isso funciona apenas para construir a solução, mas quando você realmente usar 'Executar' com o projeto azure como seu projeto de inicialização, você verá os avisos novamente.
ano
2
Não trabalhe nem na construção. VS 2015 Community Edition.
Artyom de
2
Não funcionou no VS2015 Professional. Eu tenho o mesmo problema ao adicionar esta linha.
aclalex de
63

A resposta fornecida pelo TheESJ está correta, porém a redação não ficou clara para mim. Como não posso comentar a resposta, darei mais detalhes aqui. Especificamente, eu estava tendo esse problema com um projeto do Azure e a seguinte solução alternativa foi necessária para fazer o aviso desaparecer:

Ao clicar duas vezes no aviso no VisualStudio, você será levado ao destino BclBuildValidateNugetPackageReferences no arquivo Microsoft.BclBuild.targets. Acima do elemento de destino real, você deve encontrar um grande bloco de comentário que fala sobre como desabilitar as verificações de referência do projeto. Como os projetos do Azure não podem ter referências de biblioteca, é impossível para esses projetos do Azure atender aos requisitos desse destino de compilação específico.

A solução? Desative a verificação de referência do projeto do Azure, pois é impossível realmente adicionar uma referência de pacote nuget.

EXEMPLO

Portanto, suponha que temos dois projetos: MyAzureProject.ccproj que faz referência a MyProject.csproj . Siga esses passos:

  1. Clique com o botão direito em "MyAzureProject" no Solution Explorer e selecione "Edit Project File".
  2. Encontre a referência do projeto para "MyProject." Deve ser parecido com:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
    </ProjectReference>
    
  3. Adicione o seguinte elemento dentro do elemento ProjectReference:

      <Properties>SkipValidatePackageReferences=true</Properties>
    
  4. A referência do seu projeto agora deve ser semelhante a:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
      <Properties>SkipValidatePackageReferences=true</Properties>
    </ProjectReference>
    
  5. Clique com o botão direito em "MyAzureProject" no Solution Explorer e escolha "Reload Project".

Agora você deve ser capaz de reconstruir e o erro deve ter desaparecido.

AggieEric
fonte
17
Na minha versão do VS, preciso primeiro clicar com o botão direito e "Descarregar projeto" antes de clicar com o botão direito para editar o arquivo do projeto
pius
2
Você quis dizer em MyAzureProject.ccprojvez de MyAzureProject.csproj?
Edward Brey
Funciona apenas se eu adicionar '<Properties> SkipValidatePackageReferences = true </Properties>' ao arquivo de projeto * .csproj referenciado. Apenas editar * .ccproj não funciona.
alexey de
1
@pius É um recurso pequeno, mas há uma opção de menu contextual 'Editar arquivo de projeto' em 'Comandos de energia' em Ferramentas de produtividade de energia , disponível para várias edições do VS. Ele irá descarregar o projeto e abrir o arquivo do projeto para você com um clique.
Jeff
16

Eu enfrentei o mesmo problema e estava tentando atualizar o Microsoft.Bcl.Build.targets; o que não ajudou.

Depois de alguma investigação descobriu que o arquivo .csproj do projeto de serviço do Azure deve ser modificado para incluir <Properties>SkipValidatePackageReferences=true</Properties>.

Isso não ficou aparente na resposta de @TheESJ e então decidimos postar uma resposta separada. Agradecimentos a @TheESJ.

Santosh
fonte
2

Eu encontrei esse problema várias vezes e o método Properties realmente funciona, mas ao lidar com um projeto Wix, tive que fazer o seguinte:

<AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>

Quando usei o nó Propriedades Xml, recebi um novo erro:

A propriedade OutputPath não está definida para o projeto 'MyInstallerProject.csproj'. Verifique se você especificou uma combinação válida de configuração e plataforma para este projeto. Configuração = 'Depurar' Plataforma = 'x86'. Este erro também pode aparecer se algum outro projeto está tentando seguir uma referência projeto a projeto para este projeto, este projeto foi descarregado ou não está incluído na solução, e o projeto de referência não constrói usando o mesmo ou equivalente Configuração ou plataforma.

ozz
fonte