Did you know that everything you design in a LightSwitch application (tables, screens, queries etc) is stored in a file called
ApplicationDefinition.lsml?
LSML extension stands for the title of the post…no, I’m kidding of course. It stands for LightSwitch Markup Language. This file can be found in the folder
<Project Path>\<Project Name>\Data.
Working in
Logical View this is file is not visible (no files are visible in this view either way). Turning to
File View you can see
links to this file in all three projects
Client, Common and
Server. Notice they are links. The original file is not included directly in any project.
The reason there is only one file and all projects have link to it, is that it’s common to all of them and any change made to it should be available simultaneously to all projects.
The reason it’s not included to any project, in my humble opinion, is mainly because it’s not meant to be edited in any way. It could be included in the
Common project for example as it
IS common.This file is the product of all designer work done in LightSwitch. Even when you change the Theme, or Access Type properties of the application from the
Properties of the project this change is stored in this file.
This is the reason also, that only
ONE (or none) “<
Project Name> Designer” window is available at any given time in your workspace. Because there
IS only one such window displaying a different part of the ApplicationDefinition.lsml file every time you double-click a table or a form or whatever opens a designer window.
One tip for the end. When you plan a major change in your model (data design),
especially if you are NOT using a native datasource, keep a backup of ApplicationDefinition.lsml. If you are using version control, check a version in, even temporarily. If not, keep a backup copy of the file. One day you might thank me for this advice…
