Una de las cosas que descubrimos que nos mudamos a TFS (que utiliza msbuild, al menos como lo tenemos configurado) de VSS/CruiseControl.NET (que yo supongo devenv utilizado en nuestra configuración) es que a veces el ProjectGuids no se sincroniza.
Por lo tanto, el Proyecto A hace referencia al Proyecto B y el archivo de proyecto o solución para el Proyecto A tiene el ProjectGuid y la ruta al archivo de proyecto del Proyecto B. Sin embargo, por cualquier motivo, ProjectGuid del Proyecto B ha cambiado y el proyecto o archivo de solución del Proyecto A no se actualizó para reflejar esto.
Devenv está bien porque simplemente usa la ruta de archivo al archivo de proyecto del Proyecto B o vuelve a caer en él. Msbuild, sin embargo, se detiene en este punto porque si los ProjectGuids no coinciden es un no-go. En este punto, puede corregirlo en Visual Studio (I think eliminando y volviendo a agregar las obras del proyecto) o manualmente a través del Bloc de notas o algo así.
Lo dejo a usted para decidir cuál es la mejor (la adherencia estricta a la ProjectGuid o indulgencia cuando se conoce la ruta de acceso al proyecto)
1 para la señalización vdproj proyecto. En cuanto a la búsqueda de dependencia, creo que es lo mismo para VS y MsBuild, como se define en Microsoft.Common.Targets (ver aquí: http://www.beefycode.com/post/Resolving-Binary-References-in-MSBuild .aspx) –
He visto casos en los que se creará una solución en VisualStudio, pero no directamente desde msbuild debido a que los ensamblajes no están en la ubicación correcta. VisualStudio parece hacer una búsqueda en el árbol de códigos y corregirá los problemas de ruta. Asumí que devenv.exe haría la misma corrección automática, pero puede que ese no sea el caso. – Pedro