# 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 )