Buenas,
desde hace un par de días me estoy dando un baño de Visual Studio LightSwitch. Puede gustarte o no, pero para sacarte de un apuro en la generación de un CRUD rápido, pues es bastante potente. Sin embargo, cuando tienes un ordenador con más versiones de prueba de producto que versiones estables, sueles encontrarte con errores como los siguientes.
Lo primero que me encontré, fue al momento de lanzar mi aplicación de LightSwitch un error relacionado con la versión de SQL Server.
1: Error 67 Sql Server version not supported.
2: 11.00.1440 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\LightSwitch\v1.0\Microsoft.LightSwitch.targets
Claro, la versión express de Denali que tengo instalada no le gusta a LightSwitch. Así que decidí cambiarla desde la configuración de Visual Studio: “Tools // Options” y luego en la sección “Database Tools // DataConnections”. En mi caso la opción que aparecía era “.\SQLEXPRESS” y esa versión de SQL es la 11.
Cambié el valor por una versión 10 de SQL Express que tengo instalada en local, pero tampoco funcionó la aplicación. Lo siguiente fue ir a ver el target de ejecución. Ya que teníamos la ruta del target en
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\LightSwitch\v1.0\Microsoft.LightSwitch.targets
Pues veamos que tiene el código del mismo dentro. Me encontré con varias cosas, pero lo que más me llamó la atención era que se utilizaba siempre una propiedad
$(SqlExpressInstanceName)
que no estaba declarada por ningún lado.
1: <!--The Development Database is built in the same location - Bin\Data - for all configurations.-->
2: <BuildSchema Inputs="@(LightSwitchModel)"
3: ProjectPath="$(MSBuildProjectFullPath)"
4: OutputDirectory="Bin\Data"
5: SqlExpressInstanceName="$(SqlExpressInstanceName)"
6: ExternalDataSources="@(ServerExternalDataSources)"/>
7: <!--The _IntrinsicData connection string should be updated to use the SQL Express Instance Name
8: from the LightSwitch Project' Property-->
9: <UpdateDataSourceSection ConfigFile="$(OutDir)\web.config"
10: Name="_IntrinsicData"
11: Key="Data Source"
12: Value=".\$(SqlExpressInstanceName)"/>
Así que lo siguiente fue editar el proyecto de LightSwitch. Este valor no es configurable por ningún sitio, salvo que edites el archivo de proyecto *.lsproj y dentro del mismo puedes ver algo similar a lo siguiente:
1: <PropertyGroup>
2: <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
3: <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
4: <SchemaVersion>2.0</SchemaVersion>
5: <ProjectGuid>c3800149-599b-4dbc-ba07-190956453c17</ProjectGuid>
6: <OutputType>WinEXE</OutputType>
7: <CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory>
8: <RootNamespace>Application5</RootNamespace>
9: <AssemblyName>Microsoft.LightSwitch.Server.Host</AssemblyName>
10: <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
11: <LightSwitchVersion>v1.0</LightSwitchVersion>
12: <LightSwitchProjectVersion>v1.0</LightSwitchProjectVersion>
13: <Name>Application5</Name>
14: <LightSwitchProjectType>LightSwitch</LightSwitchProjectType>
15: <GenerateManifests>true</GenerateManifests>
16: <SignManifests>false</SignManifests>
17: <BaseIntermediateOutputPath>bin</BaseIntermediateOutputPath>
18: <ApplicationClientType>Desktop</ApplicationClientType>
19: <ApplicationServerType>LocalHost</ApplicationServerType>
20: <RequireSecureConnection>true</RequireSecureConnection>
21: <AuthenticationType>None</AuthenticationType>
22: <ApplicationName>Application5</ApplicationName>
23: <AssemblyVersion>1.0.0.0</AssemblyVersion>
24: <ServiceDefinitionFile>ServiceDefinition.csdef</ServiceDefinitionFile>
25: <ServiceConfigurationFile>ServiceConfiguration.cscfg</ServiceConfigurationFile>
26: <SqlExpressInstanceName>.\sqlexpress</SqlExpressInstanceName>
27: </PropertyGroup>
En mi caso, cambié la línea 26 por el valor correcto, hice un reload del proyecto y todo funcionó. Pero antes de seguir un par de datos a tener en cuenta
- Cuando creas un proyecto de LightSwitch siempre tomará el valor configurado en Visual Studio. Si cambias los settings de Visual Studio, este cambio no se refleja en el proyecto.
- Tanto Visual Studio como LightSwitch tiempre trabajan con un sql local. Y esto que parece un detalle muy simple hace que el nombre de la instancia con el formato “.\INSTANCIA” sea inválido. Hay que poner solo el nombre de la instancia “INSTANCIA”
Bueno a seguir con el mega proyecto ![]()
Saludos @ Here
El Bruno


Leave a comment