Estoy construyendo un proyecto a través de la línea de comandos y no dentro de Visual Studio 2013. Nota, yo había actualizado mi proyecto de Visual Studio 2012 a 2013. El proyecto se construye bien dentro del IDE. Además, he desinstalado completamente VS2012 primero, reiniciado, e instalado VS2013. La única versión de Visual Studio que tengo es 2013 Ultimate.
ValidateProjects:
39>path_to_project.csproj(245,3): error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
39>Done Building Project "path_to_project.csproj" (Clean target(s)) -- FAILED.
Aquí están las dos líneas en cuestión:
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
La segunda línea original era v10.0, pero he cambiado manualmente a v12.0.
$(VSToolsPath) se alarga de lo que veo a la carpeta v11.0 (VS2012), que obviamente ya no está allí. La ruta debería haber sido a v12.0.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications\
He intentado especificar VSToolsPath en mi tabla de variables de entorno del sistema, pero la utilidad de compilación externa sigue utilizando v11.0. Traté de buscar a través del registro y que no vino con nada.
Lamentablemente, no veo ninguna manera fácil de obtener la línea de comandos exacta utilizada. Yo uso una herramienta de compilación.
¿Qué opinas?
Yo tenía el mismo problema y encontrar una solución más fácil
Se debe a que Vs2012 añadió lo siguiente al archivo csproj:
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolspath>
</PropertyGroup>
Usted puede quitar con seguridad esa parte y su solución se construirá.
Como Sielu señaló tienes que asegurarte de que el archivo .proj comience con
<Project ToolsVersion="12"
de lo contrario la próxima vez que abra el proyecto con visual studio 2010, se añadirá el nodo eliminado de nuevo.
De lo contrario, si necesita utilizar webdeploy o utiliza un servidor de compilación, la solución anterior no funcionará, pero puede especificar la propiedad VisualStudioVersion
en su script de compilación:
msbuild myproject.csproj /p:VisualStudioVersion=12.0
o editar la definición de compilación:
Acabo de recibir una respuesta de Kinook, que me ha facilitado un enlace:
Básicamente, necesito llamar a lo siguiente antes de bulding. Supongo que Visual Studio 2013 no registra automáticamente el entorno en primer lugar, pero 2012 hizo, o lo hice y se me olvidó.
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
Espero que este post ayude a alguien más.
Estaba usando una utilidad de compilación externa. Piensa en algo como Ants, si entiendo bien el producto, sólo que una versión comercial. Tuve que ponerme en contacto con el fabricante para obtener la respuesta.
Resulta que hay una macro global en el proyecto, DEVSTUDIO_NET_DIR. Tuve que cambiar la ruta a .Net allí. Se enumeran varias versiones de Visual Studio como "Acciones", que a través de mí fuera, pero todos los caminos conducen de nuevo a que una variable global detrás de las escenas. Me gustaría que la lista como un defecto contra el producto, si tuviera mi manera, a menos que me estoy perdiendo algo en mi comprensión. Corrigiendo la ruta se solucionó el problema.