Recientemente comencé a usar el operador nameof() de C# 6.0 en mis proyectos. Ahora (al registrarme, duh...) yo (o mejor: el agente de compilación) me negué a compilar el proyecto (que se estaba compilando localmente bien) porque no podía encontrar la expresión nameof() .
Comencé a instalar VS 2015 en el controlador de compilación, así como en el propio servidor TFS, pero fue en vano. ¿Cómo puedo obtener mi TFS 2013 Update 5 para crear proyectos con características de C# 6.0?
Ya pensé en editar BuildProcessTemplate, pero estamos usando la plantilla predeterminada en todas nuestras definiciones de compilación e incluso no sabía si esta era la forma correcta de hacerlo.
Puede instalar "Microsoft Build Tools 2015" en la máquina del agente de compilación y configurar la plantilla de compilación para usar esa versión de msbuild, o bien instalar el paquete Microsoft.Net.Compilers NuGet en los proyectos que desea compilar con el nuevo compilador. .
Tuve el mismo problema con TFS 2015. Mis definiciones de compilación estaban en el formato de definiciones de compilación XAML ; este formato no es compatible con las características de C#6, incluso si especifica /p:VisualStudioVersion=14.0 o 15.0 para los argumentos de MSBuild en la compilación avanzada parámetros de proceso.
En su lugar, utilice el nuevo formato de compilación. En Visual Studio 2017 (sí, puede usar VS 2017 con TFS 2015), está disponible en la sección "Definiciones de compilación" (tenga en cuenta que debajo está la sección anterior "Definiciones de compilación XAML").
Si crea una nueva definición de compilación de esta manera, se abre un sitio web donde debe crear los pasos de compilación. Los archivos binarios aparecen en la sección "Artefactos". Desafortunadamente, no encontré ninguna forma de convertir las definiciones de compilación XAML al nuevo formato, por lo que debe crearlo desde cero.
En el paso Compilación de Visual Studio, asegúrese de que el campo "Versión de Visual Studio" esté establecido en "Más reciente".
Sugerencia: para obtener los archivos correctos en sus artefactos, debe definir patrones de minicoincidencia. Puede encontrar la sintaxis aquí , en el ejemplo allí puede encontrar un patrón de archivo de copia para implementar un proyecto web.