MSBuild con la versión .NET 4.6.2, como?

Iniciado por z3nth10n, 5 Febrero 2017, 15:05 PM

0 Miembros y 1 Visitante están viendo este tema.

z3nth10n

Hola buenas,

pues como aquí verán, tengo un proyecto con la versión 3.5 del FW de .NET y me compila sin problema...

https://github.com/Lerp2Dev/Lerp2API/tree/master/Compile

La cosa está ahora en que requiero compilar un proyecto que está en la versión 4.6.2 de FW... Y bueno, la última vez lo hice con:

https://www.microsoft.com/es-es/download/details.aspx?id=48159

"Lo instalé", y después, copie los binarios y las dependencias de DLL, cree mi propio Batch que llamase a MSBuild.exe y todo iba de maravilla...

Pero, al parecer no hay ninguna versión de MSBuild que sea capaz de compilar la versión 4.6.2, cosa mía o que es cierto?

Si os sirve, aquí tenéis un log:

http://pastebin.com/QxDh2z3m

El MSBuild lo saqué de la carpeta: C:\Program Files (x86)\MSBuild\14.0\Bin\amd64

Los archivos que copie:



Y el código del compilador:

Código (dos) [Seleccionar]

@echo off

if "%MAIN_PATH%" == "" ( for %%a in ("%~dp0../..") do set "MAIN_PATH=%%~fa" )
if "%REF_PATH%" == "" ( set "REF_PATH=%MAIN_PATH%\Assemblies" )

"%~dp0\MSBuild.exe" "%MAIN_PATH%\Lerp2API.sln" /t:Lerp2Console /pp "/p:ReferencePath=%REF_PATH%" /p:Platform="Any CPU" /p:OutputPath=../../Build/Console /p:Configuration=Debug /flp:logfile=Output.log;verbosity=diagnostic  

pause


Un saludo.

Interesados hablad por Discord.

Eleкtro

#1
Lee el log a partir de la linea 1268 y 1269:
CitarCompilando con la versión de herramientas "14.0".

El archivo del proyecto contiene ToolsVersion="15.0". Puede que no se conozca o que falte este conjunto de herramientas, en cuyo caso es posible que tenga que resolver este problema instalando la versión adecuada de MSBuild, o puede aplicarse una versión de las herramientas determinada a la compilación si así lo requieren las directivas. Se tratará el proyecto como si contuviera ToolsVersion="14.0". Para obtener más información, consulte http://go.microsoft.com/fwlink/?LinkId=293424.

Te está indicando que el proyecto (csproj) depende de la versión 15.0 de MSBuild (Visual Studio 2017), pero tú estas intentando compilarlo con la versión 14.0 (Visual Studio 2015). Todos los errores que el log describe pueden ser debido a esto puesto que han hecho muchísimos cambios en la estructura del formato de los archivos de configuración de proyecto (csproj/vbproj) en el nuevo VS 2017. La solución yo creo que en teoría sería que te instalases el VS 2017 RC versión community para que éste te instale la versión más reciente de las MSBuild (asegúrate de seleccionar el componente de MSBuild en el menú de instalación, está algo oculto), puesto que al parecer por ahora no existe una descarga oficial del Microsoft Build Tools 2017 (15.0) así que la única manera que le veo es instalando el VS 2017 RC.

Saludos








z3nth10n

#2
Hoa Elektro, gracias por guiarme en el sendero ;D

Pero ya te digo, probando no lo he conseguido, los errores siguen siendo los mismos aún así habiendo instalado VS 2017 RC, de hecho, la ruta de instalación no es la de siempre, es esta:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\

Pero me sigue compilando el proyecto como si fuese de otra versión... Que puedo hacer? Bajarle la versión a este o seguir intentandolo?

Mi nuevo codigo:

Código (dos) [Seleccionar]
@echo off

if "%MAIN_PATH%" == "" ( for %%a in ("%~dp0../..") do set "MAIN_PATH=%%~fa" )
if "%REF_PATH%" == "" ( set "REF_PATH=%MAIN_PATH%\Assemblies" )
set "msbuildPath=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\amd64"

"%msbuildPath%\MSBuild.exe" "%MAIN_PATH%\Lerp2API.sln" /t:Lerp2Console /pp "/p:ReferencePath=%REF_PATH%" /p:Platform="Any CPU" /p:OutputPath=../../Build/Console /p:Configuration=Debug /flp:logfile=Output.log;verbosity=diagnostic  

pause


El nuevo log: http://pastebin.com/5hAWymUT

Ya no se que pensar, si es problema de NewJsonUtility este o algo... :rolleyes:

Un saludo.

Interesados hablad por Discord.

Eleкtro

#3
Cita de: Ikillnukes en  7 Febrero 2017, 12:19 PMPero me sigue compilando el proyecto como si fuese de otra versión...

¿Qué te hace pensar eso?, no es así. En el nuevo log ya no aparece ningún error de versión incorrecta de MSBuild/ToolsVersion precisamente por que ahora estás utilizando la versión apropiada, la versión que está especificada en la propiedad ToolsVersion del archivo csproj, la versión 15.0. Y no, si cambiases "15.0" por "14.0" en el archivo csproj no ibas a conseguir nada bueno, por que como ya digo la estructura de los nuevos csproj/vbproj ha cambiado, hay nuevas propiedades y Microsoft lo ha simplificado bastante eliminando otras, así que la versión 14.0 no creo que fuese capaz de parsear/reconocer la nueva sintaxis del esquema de configuración de proyecto de VS2017. Quizás pudiera compilarlo de todas formas omitiendo esas nuevas propiedades, no lo sé, pero sea como sea no parece muy buena idea usar una versión inferior de MSBuild a la que te está pidiendo...

Por curiosidad, si asumimos que ese proyecto ha sido desarrollado bajo VS 2017 RC (puesto que se supone que compila para NetFX 4.6.2 y en el archivo csproj está especificado el ToolsVersion 15.0), ¿entonces por que lo tienes en el directorio de proyectos de VS2015 (...\Documents\Visual Studio 2015\Projects\Lerp2API\Project\Lerp2Console\Lerp2Console.csproj)?. ¿Estás seguro que no has trasteado más de la cuenta con ese proyecto y tal vez lo hayas podido acabar "estropeando" en general?. EDITO: ¿O a lo mejor lo que ocurre es que en tu solución tienes el proyecto principal desarrollado en VS2015 que pide la versión 14.0 de MSBuild, y luego en esa misma solución tienes un proyecto referenciado (JSON.NET) que está pidiendo la versión 15.0 de MSBuild, lo has comprobado?.




Los errores de compilación empiezan a partir de la linea 3295 en el último log que has compartido:
CitarNewtonsoft.Json\Converters\ExpandoObjectConverter.cs(30,14): error CS0234: El tipo o el nombre del espacio de nombres 'Dynamic' no existe en el espacio de nombres 'System' (¿falta alguna referencia de ensamblado?) [C:\Users\Usuario\Documents\Visual Studio 2015\Projects\Lerp2API\Project\Lerp2Console\Lerp2Console.csproj]

Esos errores como ya te habrás dado cuenta también aparecían en el otro log, pero cabía la posibilidad de que todo pudiera ser consecuencia de no estar usando la versión 15.0 de MSBuild puesto que ese era el primer error y el error principal. En fin, por lo visto eso no ha solucionado el resto de errores...

Esos errores son bastante auto-descriptivos, al parecer no se puede encontrar "X" miembro por la ausencia de la referencia al ensamblado correspondiente, sin embargo, en este escenario no le encuentro sentido, puesto que al parecer según lo que veo en el log se está referenciando la versión correspondiente del ensamblado System.dll el cual contiene el espacio de nombres Dynamic (System.Dynamic), el que dice que no encuentra (entre otros)... pues no se por qué.

Prueba a intentar compilar ese proyecto llamando al devenv.com por linea de comandos (o a devenv.exe si prefieres usar la UI) de VS 2017 RC.

EDITO: O pásame el proyecto por mensaje privado y miro a ver si doy con lo que esté fallando....

Saludos!








z3nth10n

Gracias por tomarte la molestia :P

Ahora te cuento...

Interesados hablad por Discord.

z3nth10n

Bueno, hago doble post ya que hace 3 días que no he vuelto a hablar... Cuando he tenido tiempo, básicamente...

Pues al final .NET ha ganado la batalla, he decidido hacer un downgrade a la versión del proyecto hasta la 4.0, he arreglado unas cosillas del código y ahora compila perfectamente...

Aún así gracias Elektro por tomarte la molestia, un saludo.

Puedes cerrar. :P

Interesados hablad por Discord.