VisualStudio2017のデザインビューの仕組みについて


VidualStudio2017にて、あるXamlをデザインビューで表示しようとしたところ、「アサートに失敗しました」ポップアップが表示されました。  
追ってみると、あるメソッドにてDebug.Assertをしている箇所にてエラーが起きているようです。  
ただXamlを開いただけなのに、実際のロジックが走るものなのでしょうか。




実際のロジックが走ります。

Xamlの場合、[`DesignerProperties.IsInDesignMode`添付プロパティ](https://docs.microsoft.com/ja-
jp/dotnet/api/system.componentmodel.designerproperties.isindesignmode?view=netframework-4.8#System_ComponentModel_DesignerProperties_IsInDesignMode)を使うことで、デザインモードで実行されているか判定できるため、これで処理を分岐することを検討してください。

WinFormsでも同様でこちらは[`Component.DesignMode`プロパティ](https://docs.microsoft.com/ja-
jp/dotnet/api/system.componentmodel.component.designmode?view=netframework-4.8)で判定できるようになっています。またASP.NETの場合、Webですから実行時にはHTMLが生成されるわけですが、こちらもデザインモードではそれ用に別途UI表示できるようになっています。この際も[`Control.DesignMode`プロパティ](https://docs.microsoft.com/ja-
jp/dotnet/api/system.web.ui.control.designmode?view=netframework-4.8#System_Web_UI_Control_DesignMode)で判定することになります。




実際のロジックが走ります。

Xamlの場合、[`DesignerProperties.IsInDesignMode`添付プロパティ](https://docs.microsoft.com/ja-
jp/dotnet/api/system.componentmodel.designerproperties.isindesignmode?view=netframework-4.8#System_ComponentModel_DesignerProperties_IsInDesignMode)を使うことで、デザインモードで実行されているか判定できるため、これで処理を分岐することを検討してください。

WinFormsでも同様でこちらは[`Component.DesignMode`プロパティ](https://docs.microsoft.com/ja-
jp/dotnet/api/system.componentmodel.component.designmode?view=netframework-4.8)で判定できるようになっています。またASP.NETの場合、Webですから実行時にはHTMLが生成されるわけですが、こちらもデザインモードではそれ用に別途UI表示できるようになっています。この際も[`Control.DesignMode`プロパティ](https://docs.microsoft.com/ja-
jp/dotnet/api/system.web.ui.control.designmode?view=netframework-4.8#System_Web_UI_Control_DesignMode)で判定することになります。

