advertencia: Todos los proyectos que hagan referencia a MyProject.csproj deben instalar el paquete nuget Microsoft.Bcl.Build

90

Tengo una aplicación ASP.NET MVC 4 desarrollada en VS 2012. La aplicación consta de un proyecto principal (MyProject), un proyecto de prueba unitaria (MyProject.Tests), un proyecto de implementación de Azure (MyProject.Azure) y un par de proyectos de biblioteca de propósito general.

Cuando hago clic con el botón derecho en la solución o en el proyecto principal y selecciono Administrar paquetes NuGet, veo un montón de actualizaciones de Microsoft que aparentemente están disponibles en el último mes. Si hago clic en el botón Actualizar todo, las actualizaciones aparentemente se instalan sin ningún problema obvio, pero cuando construyo la solución, aparece este mensaje de error DOS VECES:

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

Ok, tengo dos proyectos que hacen referencia a MyProject: MyProject.Tests y MyProject.Azure. Puedo hacer clic con el botón derecho en MyProject.Tests, seleccionar ManageNuGet Packages y agregar Microsoft.Bcl.Build. Eso elimina una de las dos advertencias. Pero VS no me da una opción para administrar paquetes NuGet para el proyecto MyProject.Azure .

¿Cómo agrego el paquete Microsoft.Bcl.Build al proyecto de implementación de Azure?

EDITAR:

Gracias al aumento de usuarios , ahora sé que se ha abierto aquí un problema de Microsoft Connect para este problema .

Bob.en.Indigo.Health
fuente
2
Gracias por la referencia al problema de conexión, este es un problema molesto.
Paul Keister
1
En relación con la advertencia al crear el proyecto de implementación, también hay un error que provoca una advertencia falsa al publicar el proyecto. El error relacionado con la publicación también se informa en Connect . No conozco una solución alternativa.
Edward Brey
3
El mismo problema me sucede con los proyectos de WiX que tienen referencias a otros proyectos (con el propósito de recolectar la salida del proyecto, también conocida como "calor"). ¡No tiene ningún sentido que un proyecto de instalación de WiX instale paquetes de NuGet! ¡¡Argh !!
Jaans
1
El enlace al problema de conexión ahora devuelve 404 connect.microsoft.com/VisualStudio/feedback/details/789839/…
Ryan Gates

Respuestas:

54

Si hace doble clic en la advertencia, obtendrá instrucciones para desactivar la advertencia.

Es seguro deshabilitar las referencias de proyectos de proyectos que aún no son compatibles con Nuget.

Consulte la parte siguiente en negrita copiada de Microsoft.Bcl.Build.targets.

BclBuildValidateNugetPackageReferences

Este objetivo se puede deshabilitar para una referencia de proyecto estableciendo SkipValidatePackageReferences = true para la referencia:

<ProjectReference Include="..\pcl\pcl.csproj">
  <Project>{664a9e98-fac7-4567-a046-0dde95fddb48}</Project>
  <Name>pcl</Name>
  <Properties>SkipValidatePackageReferences=true</Properties>
</ProjectReference>
TheESJ
fuente
4
Arthur, ¿puedes intentar configurar el valor de metadatos AdditionalPropertes en lugar de Propiedades?
TheESJ
5
@TheESJ Estaba teniendo este problema con un proyecto de WiX y parece que la configuración de AdditionalProperties en lugar de Properties funciona. Aunque estoy interesado en saber por qué
lc.
3
Esto funciona solo para construir la solución, pero cuando realmente usa 'Ejecutar' con el proyecto azure como su proyecto de inicio, verá las advertencias nuevamente.
eoleary
2
No trabajes ni siquiera en la construcción. VS 2015 Community Edition.
Artyom
2
No funcionó en VS2015 Professional. Tengo el mismo problema al agregar esta línea.
aclalex
63

La respuesta proporcionada por TheESJ es correcta, sin embargo, la redacción no me quedó clara. Dado que no puedo comentar sobre la respuesta, proporcionaré más detalles aquí. Específicamente, estaba teniendo este problema con un proyecto de Azure y se necesitaba la siguiente solución para que desapareciera la advertencia:

Cuando hace doble clic en la advertencia en VisualStudio, se le dirigirá al destino BclBuildValidateNugetPackageReferences en el archivo Microsoft.BclBuild.targets. Por encima del elemento de destino real, debería encontrar un bloque de comentarios grande que habla sobre la desactivación de las verificaciones de referencia del proyecto. Dado que los proyectos de Azure no pueden tener referencias de biblioteca, es imposible que esos proyectos de Azure cumplan con los requisitos de este objetivo de compilación en particular.

¿La solución? Deshabilite la comprobación de referencias del proyecto de Azure, ya que es imposible agregar realmente una referencia de paquete nuget.

EJEMPLO

Entonces, suponga que tenemos dos proyectos: MyAzureProject.ccproj que hace referencia a MyProject.csproj . Sigue estos pasos:

  1. Haga clic con el botón derecho en "MyAzureProject" en el Explorador de soluciones y seleccione "Editar archivo de proyecto".
  2. Busque la referencia del proyecto a "MyProject". Debería verse algo como:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
    </ProjectReference>
    
  3. Agregue el siguiente elemento dentro del elemento ProjectReference:

      <Properties>SkipValidatePackageReferences=true</Properties>
    
  4. La referencia de su proyecto ahora debería verse así:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
      <Properties>SkipValidatePackageReferences=true</Properties>
    </ProjectReference>
    
  5. Haga clic con el botón derecho en "MyAzureProject" en el Explorador de soluciones y seleccione "Recargar proyecto".

Ahora debería poder reconstruir y el error debería desaparecer.

AggieEric
fuente
17
En mi versión de VS primero tengo que hacer clic derecho y "Descargar proyecto" antes de poder hacer clic derecho para editar el archivo del proyecto
pius
2
¿Querías decir en MyAzureProject.ccprojlugar de MyAzureProject.csproj?
Edward Brey
Solo funciona si agrego '<Properties> SkipValidatePackageReferences = true </Properties>' al archivo * .csproj del proyecto referenciado. Simplemente editar * .ccproj no funciona.
alexey
1
@pius Es una función pequeña, pero hay una opción de menú contextual 'Editar archivo de proyecto' en 'Comandos de potencia' en Productivity Power Tools , disponible para varias ediciones de VS. Descargará el proyecto y abrirá el archivo del proyecto con un solo clic.
Jeff
16

Enfrenté el mismo problema y estaba intentando actualizar Microsoft.Bcl.Build.targets; que no ayudó.

Después de una investigación, se descubrió que el archivo .csproj del proyecto de servicio de Azure debe modificarse para incluir <Properties>SkipValidatePackageReferences=true</Properties>.

Esto no fue evidente en la respuesta de @TheESJ, por lo que decidió publicar una respuesta por separado. Gracias a @TheESJ.

Santosh
fuente
2

Encontré este problema varias veces, y el método de Propiedades realmente funciona, pero cuando se trata de un proyecto Wix, tuve que hacer lo siguiente en su lugar:

<AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>

Cuando usé el nodo Propiedades Xml, recibí un nuevo error:

La propiedad OutputPath no está establecida para el proyecto 'MyInstallerProject.csproj'. Verifique para asegurarse de haber especificado una combinación válida de Configuración y Plataforma para este proyecto. Configuración = 'Depuración' Plataforma = 'x86'. Este error también puede aparecer si algún otro proyecto está intentando seguir una referencia de proyecto a proyecto a este proyecto, este proyecto se ha descargado o no está incluido en la solución, y el proyecto de referencia no se construye usando el mismo o un equivalente Configuración o Plataforma.

ozz
fuente