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 elMSBuild
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 unToolsetVersion
que difiere del resto de proyectos:
El orden de precedencia, de mayor a menor, utilizado para determinar el
ToolsVersion
es:
- El
ToolsVersion
attribute sobre elMSBuild
tarea utilizada para construir el proyecto, si corresponde.- El
/toolsversion
(o/tv
) interruptor que se usa en elmsbuild.exe
comando, si lo hay.- Si la variable de entorno
MSBUILDTREATALLTOOLSVERSIONSASCURRENT
está configurado, luego use el actualToolsVersion
.- Si la variable de entorno
MSBUILDTREATHIGHERTOOLSVERSIONASCURRENT
está configurado y elToolsVersion
definido en el archivo del proyecto es mayor que el actualToolsVersion
, usa la corrienteToolsVersion
.- Si la variable de entorno
MSBUILDLEGACYDEFAULTTOOLSVERSION
está configurado, o siToolsVersion
no está configurado, se utilizan los siguientes pasos:
- El
ToolsVersion
attribute de ElProject
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.
- Si la variable de entorno
MSBUILDLEGACYDEFAULTTOOLSVERSION
no está configurado, se utilizan los siguientes pasos:
- Si la variable de entorno
MSBUILDDEFAULTTOOLSVERSION
está configurado en unToolsVersion
que existe, úselo.- Si
DefaultOverrideToolsVersion
está preparadoMSBuild.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.