[#VS2010] Sobre LightSwitch y como trabaja con sus bases de datos internamente

image47dd1de4

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.

image

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 Risa

 

Saludos @ Here

El Bruno

   

Advertisements

2 thoughts on “[#VS2010] Sobre LightSwitch y como trabaja con sus bases de datos internamente

  1. Hola, yo tengo un problema similar, solo que en
    .\sqlexpress
    Tengo SQLEXPRESS, que es como lo tengo. Desarrolle con una SQL Express local y ahora lo quiero pasar a una Express pero en servidor. Es la misma versión (2012) pero cuando compilo me marca el error de:

    Error 1 Error al establecer una conexión con la instancia ‘.\SQLEXPRESS’ de SQL Server.
    Error relacionado con la red o específico de la instancia mientras se establecía una conexión con el servidor SQL Server. No se encontró el servidor o éste no estaba accesible. Compruebe que el nombre de la instancia es correcto y que SQL Server está configurado para admitir conexiones remotas. (provider: Shared Memory Provider, error: 40 – No se pudo abrir una conexión con SQL Server) C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\LightSwitch\v1.0\Microsoft.LightSwitch.targets 157 10 OICSSP

    Si me puedo conectar a la BD desde Navicat y con el Microsoft SQL Server Management Studio.

    Podrías ayudarme?

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s