The DAX Studio solution is broken up into a number of different projects
| Project | Entry Point | Description |
|---|---|---|
| ADOTabular | No | This is a wrapper over AdomdClient that gives a tabular abstraction (ie. Models/Tables/Columns) over the top of the |
| DaxEditor | No | This is a wrapper project over AvalonEdit which customizes it for DAX Studio |
| DaxStudio.Checker | Yes | This is a standalone project used for running environment checks on end user PCs. The primary use case for this utility is to help diagnosing issues with users PCs when DAX Studio fails to start. Once DAX Studio is up and running the normal diagnostic logging usually provides more actionable information. |
| DaxStudio.Common | No | This contains various classes that are used between both the Excel Addin and Standalone projects |
| DaxStudio.Controls.DataGridFilter | No | This project contains a custom WPF DataGrid Filter control |
| DaxStudio.ExcelAddin | Yes | This project is the Excel addin used to enable connectivity to PowerPivot models. If you need to debug an issue with PowerPivot you should set this as your startup project in visual studio. |
| DaxStudio.Interfaces | No | This project contains interfaces that are shared by two or more of the other projects |
| DaxStudio.QueryTrace | No | This project contains the core query tracing engine |
| DaxStudio.QueryTrace.Excel | No | This project contains the core query tracing engine used by the Excel Addin |
| DaxStudio.Standalone | Yes | This project is the entry point for the standalone .exe version of DAX Studio. If you are debugging issues with anything other than PowerPivot models this project should be set as your startup project in Visual Studio |
| DaxStudio.UI | No | This project contains all the User Interface objects |
| UnitComboLib | No | This project contains the custom combo control that contains the zoom percentage control at the bottom of the Query editor |
This is the core project that contains all of the User Interface. It uses Caliburn.Micro to implement the MVVM pattern and is using MEF as a sort of light-weight IoC container.
- DaxStudio.Startup runs
static void Main()in EntryPoint.cs, this sets up logging, creates a WPF and runs it - When the app from the previous step is run it creates an
AppBootstrapperfromDaxStudio.UI\AppBootstrapper.cs - This first runs the
Configuremethod to setup the MEF container - Then the
OnStartupmethod is called which creates aShellViewModelobject - The
ShellViewModelthen gets aRibbonViewModelandStatusBarViewModelfrom MEF - The
RibbonViewModelthen gets aDocumentTabViewModelfrom MEF (this represents the collection of open documents) - The
DocumentTabViewModelwill then create a newDocumentViewModel - The
DocumentViewModelis the core part of the application, it will create a collection of toolwindows including:MetadataPaneViewModelDmvPaneViewModelFunctionPaneViewModelOutputPaneViewModelQueryHistoryPaneViewModelQueryResultsPaneViewModel
- Once the
DocumentViewModelhas been created it will open and display aConnectionDialogViewModel