Uso de un comstackdor incorrecto durante la construcción del proyecto de base de datos de SQL Server

Tengo un problema con la comstackción del Proyecto de base de datos de SSDT SQL Server mediante Visual Studio 2015. Quiero usar las características de C # 6 dentro del proyecto de mi base de datos, pero parece que no es compatible. Por ejemplo, he agregado la siguiente clase en mi proyecto de db:

namespace Database1 { class ClassFile1 { public string Str { get; } = string.Empty; } } 

He intentado comstackr esto, pero recibí el error:

CS1519: token no válido ‘=’ en la clase, estructura o statement de miembro de la interfaz

Descubrí que la razón de este error es la versión incorrecta del comstackdor que utiliza VS 2015. La siguiente línea de comstackción es generada por VS:

 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /noconfig /nowarn:1701,1702,2008 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE /errorendlocation /preferreduilang:en-US /highentropyva+ /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\mscorlib.dll" /debug+ /debug:full /optimize- /out:obj\Debug\Database2.dll /subsystemversion:6.00 /target:library /warnaserror- /utf8output ClassFile1.cs 

Como puede ver, se utiliza C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Csc.exe y es incorrecto.

He intentado comstackr db project desde Developer Command Prompt para VS 2015 y esto se hizo con éxito, porque dentro de este indicador de comandos csc.exe está el comstackdor Roslyn (C: \ Archivos de progtwig (x86) \ MSBuild \ 14.0 \ Bin \ csc.exe) que compatible con las características de C # 6. Puede consultar la pregunta ¿Cómo ejecutar Roslyn en lugar de csc.exe desde la línea de comandos?

Intenté comstackr el proyecto utilizando MSBuild 14.0 y también se realizó con éxito.

La pregunta es: ¿cómo puedo cambiar / anular la versión del comstackdor que mi VS usó para la comstackción del proyecto de base de datos SSDT del antiguo C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Csc.exe al nuevo comstackdor de Roslyn (C: \ Archivos de progtwig (x86) \ MSBuild \ 14.0 \ Bin \ csc.exe)?

Deberá apuntar a la versión de clr que usa la versión de SQL que implementará para:

SQL 2005-2008 R2 = CLR 2

SQL 2012 = CLR 4

Me temo que no se puede ejecutar cualquier versión de clr que esté en la máquina.

ed

Intenté hacer esto también y enfrenté el mismo problema. Mi solución es crear un proyecto de biblioteca de clase regular independiente. Moví el código C # de mi proyecto de Base de datos a la nueva biblioteca (que se comstackrá usando C # 6 / Roslyn por VS 2015). Y luego haga referencia a esta biblioteca de clases de mi proyecto de base de datos.

Solo recuerde establecer las propiedades de la referencia a la biblioteca de clases: Model Aware = true y Generate Sql Script = true. No he probado esto a fondo, pero pude implementarlo desde mi proyecto de Base de datos utilizando el comando de publicación y llamar a la función dentro de la biblioteca de clases.

¡Buenas noticias!
Visual Studio 2017 utilizará el comstackdor actual de C # para proyectos de base de datos SSDT, por lo que todas las características de
C # 6 finalmente funcionará en ensamblajes de SQL Server.

La ruta del comstackdor utilizado es:

 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\csc.exe 

Debido a que todas las características de C # 6 son solo características puras del comstackdor, ahora incluso puede usarlas si solo está apuntando a .NET 3.5 y SQL Server 2008.

En Visual Studio 2017 RC, también pude usar algunas características de C # 7 como constructores con cuerpo de expresión, las nuevas variables de out , los retornos de ref , el switch/is mejorado switch/is la comparación de patrones y los literales binarios / hexadecimales mejorados. Pero no pude usar funciones locales ni nada relacionado con tuplas como los nuevos tipos de retorno de tuplas, los literales de tuplas o la nueva statement de deconstrucción.
Quizás este comportamiento cambie en la versión final de Visual Studio 2017.