# KnowledgeBase for Prism Guidance * [Official Site](https://prismlibrary.com/) * Existing Mitech-wpf use `Prism 4.x`. The only official legacy reference is based on [Prism 6](https://prismlibrary.com/docs/wpf/legacy/Introduction.html) * Its using `MEF Ioc (Dependency Injection)`. The `MEF DI` was removed from Prism 7.x and above. Only `Unity Dependency Injection` supported from Prism 7.x onward * **MEF** vs **Unity** Modularity [Quick Start](https://learn.microsoft.com/en-us/previous-versions/msp-n-p/ff921068(v=pandp.40)?redirectedfrom=MSDN) * The latest Prism Library is `8.1` * Prism 8 support NET 5 and dotnet Framework. Prism 6.x and below only DotNet Framework 4.8 and below. * `Mitech-wpf` was migrated to Prism 6.3 on Feb 2023, as this is the last version to support `MEF DI` Container. ## Legacy Documentation - [Prism 4 Demo](https://www.codeproject.com/Articles/254120/Prism-4-MEF-Application). Migrated to Prism 6 [link](http://dev.mitech.com.sg:3000/playground/prism4-demo) - [Prism 4 QuickGuide](./legacy/Prism4_QuickGuide.pdf) - [Prism 4 Guide](./legacy/Prism4_Guide.pdf) - [Prism 5](https://www.microsoft.com/en-sg/download/details.aspx?id=42572) - Another nice [link](https://www.cnblogs.com/DoubleChen/p/3687305.html) - Nuget : [Prism 4.1](https://www.nuget.org/packages/prism/4.1.0) ## Migration Guides - [Prism 4.1 to 5](https://learn.microsoft.com/en-us/previous-versions/msp-n-p/ff921144(v=pandp.40)) - `Microsoft.Practices.Prism.ViewModel` namespace deprecated. Please use `Microsoft.Practices.Prism.Mvvm` - The `BindableBase` class was added to simplify `INotifyPropertyChanged` interface. - EventAggregator Namespace and API Changes. **NEW** `Prism.PubSubEvents` namespace - Regions Namespace API Changes - `UriQuery` class was replaced with the `NavigationParameters` - Namespace changes - Refer to [Prism 5 pdf](./legacy/Prism5forWPF.pdf) for legacy changes ```cs using Microsoft.Practices.Prism.ViewModel; // change to using Microsoft.Practices.Prism.Mvvm; using Microsoft.Practices.Prism.Mvvm.Desktop; using Microsoft.Practices.Prism.ShareInterfaces; ``` - [Prism 5 to 6](https://github.com/PrismLibrary/Prism/wiki/Release-Notes---6.0.0) - Breaking Changes - Removed `Microsoft.Practices` from all namespaces - Add Nuget `Prism.Mef 6.3` ```bash # .NET cli > dotnet add package Prism.Mef --version 6.3.0 # Package Manager PM> NuGet\Install-Package Prism.Mef -Version 6.3.0 ``` - Created new xmlns namespace `http://prismlibrary.com/` - Namespace changes ```cs // Prism 4 using Microsoft.Practices.Prism; using Microsoft.Practices.Prism.ViewModel; // change to Prism 6.3 using Prism.Mvvm ``` ```cs // Prism 4 using Microsoft.Practices.Prism.MefExtensions.Modularity; using Microsoft.Practices.Prism.Modularity; // change to Prism 6.3 using Prism.Mef.Modularity; using Prism.Modularity; ``` ```cs using Microsoft.Practices.Prism.Regions; // change to using Prism.Regions ``` ```cs using Microsoft.Practices.Prism.Commands; // change to using Prism.Commands; ``` - [Prism 6 to 8](https://prismlibrary.com/docs/wpf/converting-from-6.html) - Bootstrapper class need to move to Application class - use `xmlns:prism="http://prismlibrary.com/"` - [Prism 7.1](https://brianlagunas.com/whats-new-prism-7-1/) - **BIG** changes. [Release Notes](https://github.com/PrismLibrary/Prism/releases/tag/v7.1.0) - No longer be shipping or supporting MEF for WPF - New `Prism.IoC` namespace - For `Prism.WPF`, introduced new `PrismApplication` base class. `Bootstrapper` class deprecated. - [Prism 7 to 8](https://prismlibrary.com/docs/wpf/converting-from-7.html) - [Release Notes](https://github.com/PrismLibrary/Prism/releases/tag/v8.0.0.1909) - AutoWireViewModel is now default to true `prism:ViewModelLocator.AutoWireViewModel="True"` - Removed `ILoggerFacade`. Use `Prism.Plugin.Logging` ## Online Tutorial - [Prism 6 Unity - VS2015](https://www.c-sharpcorner.com/article/getting-started-mvvm-pattern-using-prism-library-in-wpf/) ## Tutorials - [View-ViewModel](./view-viewmodel.md)