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

   

2 responses to “[#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

    1. Buenas
      podría ser problema de permisos, con que tipo de autenticación te estas conectando? integrada? con user/pwd?
      Saludos

      Like

Leave a reply to Kris Cancel reply

Discover more from El Bruno

Subscribe now to keep reading and get access to the full archive.

Continue reading