Saltar al contenido

Error CS1056: carácter inesperado ‘$’ al ejecutar msbuild en un proceso de integración continua de tfs

Nuestros programadores estrellas han agotado sus reservas de café, en su búsqueda diariamente por la respuesta, hasta que Gabriel halló la contestación en Gitea y ahora la compartimos con nosotros.

Solución:

El problema se puede solucionar instalando un paquete Nuget Microsoft.Net.Compilers. A continuación se muestra el enlace de mi respuesta resaltada: El proyecto se compila bien con Visual Studio pero falla desde la línea de comando

Esa característica es un azúcar sintáctico para C # 6, intente instalar la última versión del marco 4.6.2 https://www.microsoft.com/en-us/download/details.aspx?id=53345

Luego, vaya a las propiedades de su proyecto y cambie la opción Aplicación en el marco de destino para apuntar a la última. No necesita cambiar su código para reemplazar el string interpolación con
string.Formato método para solucionarlo. Si aún recibe este error, es porque el compilador que está ejecutando su compilación no es la última versión de C #, intente agregar Microsoft.Net.Compilers, de Nuget y compile nuevamente, eso debería resolver el problema. Si desea evitar instalar este paquete, intente abrir su .csproj y eche un vistazo a ToolsVersion. Que debería apuntar a la versión 12, luego cámbielo a 14, pero asegúrese de haber instalado la última versión del MSBuild desde https://www.microsoft.com/en-us/download/details.aspx?id=48159 o vaya a C: Archivos de programa (x86) MSBuild 14.0 Bin, allí debería tener esta carpeta con el compilador csc.exe. Si incluso entonces eso no resuelve el problema, intente seguir estos pasos https://msdn.microsoft.com/en-us/library/bb383985.aspx.

En mi experiencia resolví este problema de 3 formas diferentes:

1- acaba de recibir el paquete de Nuget

2- instalación de Microsoft Build Tools 2015 en el servidor tfs

3- El mazo y las últimas opciones, pero para mí la mejor porque no necesitas lidiar con la dependencia de nuget, es instalar la versión de Visual Studio en el servidor tfs donde ejecutas el proceso.

Espero que esto ayude

Después de instalar las herramientas de compilación de MS 2015 en %ProgramFiles%MSBuild14.0bin necesitas anular la versión de MSBuild para el servidor de compilación con nuevo valor14.0).

Debería leer el artículo de MSDN (o esta respuesta), pero TL; DR tus opciones son:

  • Anular la versión mediante el /ToolsVersion cambiar (o /tv, para abreviar) cuando construye el proyecto o la solución desde la línea de comando:

    msbuild.exe someproj.proj /tv:14.0 /p:Configuration=Debug
    
  • Anular la versión configurando el ToolsVersion parámetro en el MSBuild tarea:

    
    
  • Anular la versión configurando el $(Project.ToolsVersion) propiedad en un proyecto dentro de una solución. Esto le permite construir un proyecto en una solución con un ToolsetVersion que difiere del resto de proyectos:

      
    

El orden de precedencia, de mayor a menor, utilizado para determinar el ToolsVersion es:

  1. El ToolsVersion attribute sobre el MSBuild tarea utilizada para construir el proyecto, si corresponde.
  2. El /toolsversion (o /tv) interruptor que se usa en el msbuild.exe comando, si lo hay.
  3. Si la variable de entorno MSBUILDTREATALLTOOLSVERSIONSASCURRENT está configurado, luego use el actual ToolsVersion.
  4. Si la variable de entorno MSBUILDTREATHIGHERTOOLSVERSIONASCURRENT está configurado y el ToolsVersion definido en el archivo del proyecto es mayor que el actual ToolsVersion, usa la corriente ToolsVersion.
  5. Si la variable de entorno MSBUILDLEGACYDEFAULTTOOLSVERSION está configurado, o si ToolsVersion no está configurado, se utilizan los siguientes pasos:
    • El ToolsVersion attribute de El Project elemento del archivo del proyecto. Si esto attribute no existe, se supone que es la versión actual.
    • La versión de herramientas predeterminada en el MSBuild.exe.config Archivo.
    • La versión de herramientas predeterminada en el registro. Para obtener más información, consulte Configuraciones de conjuntos de herramientas estándar y personalizadas.
  6. Si la variable de entorno MSBUILDLEGACYDEFAULTTOOLSVERSION no está configurado, se utilizan los siguientes pasos:
    • Si la variable de entorno MSBUILDDEFAULTTOOLSVERSION está configurado en un ToolsVersion que existe, úselo.
    • Si DefaultOverrideToolsVersion está preparado MSBuild.exe.config, utilícelo.
    • Si DefaultOverrideToolsVersion está configurado en el registro, utilícelo.
    • De lo contrario, utilice la corriente ToolsVersion.

Existe la posibilidad de que esté compilando con el MSbuild.exe incorrecto; haga la compilación en Visual Studio (donde funciona) y verifique los registros en Salida. Debería haber algo como:

1>Target "GetReferenceAssemblyPaths" in file "C:Program Files (x86)Microsoft Visual Studio2017CommunityMSBuild15.0BinMicrosoft.Common.CurrentVersion.targets" 

Asegúrese de que está utilizando MSBuild.exe en ese directorio Bin, en mi caso;

C:Program Files (x86)Microsoft Visual Studio2017CommunityMSBuild15.0BinMSbuild.exe

Reseñas y puntuaciones

Te invitamos a añadir valor a nuestro contenido informacional participando con tu veteranía en las críticas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *