MS_VSDesignerProblem - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- æ»ãïŒ.NETéçºïŒ
VS ãã¶ã€ãã«ã¯
ãã¶ã€ã³æã«ã³ãŒããå®è¡ãããããšã«ããã
幟ã€ãåé¡ãçºçãåŸãã
è£è¶³ïŒãã® 1 è¡ãæ¬ããŒãžã®æ žå¿ïŒ: ããã¶ã€ã³æã«ã³ãŒããå®è¡ãããã
ââãã®äºå®ãç¥ããªããšã以éã®åé¡ã¯ã©ããçè§£ã§ããªãããVS ãã¶ã€ããäœãããŠãããã ãã©ãŒã ãã¶ã€ããéã â Visual Studio ããããªãã®ã³ãŒããã³ã³ãã€ã«ãã â ããã©ãŒã ã®ã€ã³ã¹ã¿ã³ã¹ãå®éã«çæãããâ â ãããæç»ããŠãã¶ã€ã³ç»é¢ã«è¡šç€ºãã ã€ãŸãã ã»ã³ã³ã¹ãã©ã¯ã¿ããèµ°ãã ã»ãã£ãŒã«ãåæååããèµ°ãã ã»ã«ã¹ã¿ã ã³ã³ãããŒã«ã® OnPaint ããèµ°ãã ã»éçã³ã³ã¹ãã©ã¯ã¿ããèµ°ããããã ããèµ°ããªããã®ã ã»Main ã¡ãœããïŒã¢ããªã®èµ·ååŠçïŒâ ã»Form_Load / ShownïŒãã¶ã€ã³æã¯çºçããªãïŒ ã»App.config ãèªãåæååŠçïŒåŸè¿°ã®éãäžéšã¯èªããïŒ ã»DI ã³ã³ããã®æ§ç¯ â ããã¢ããªã¯èµ·åããŠããªãã®ã«ããã©ãŒã ã ãçããŠãããã ãšããç¹æ®ãªç¶æ ã§ãããããåé¡ã®æ ¹æºã§ããã
ãã¢ããªãèµ·åããŠããã°åœç¶ããã¯ãã®ãã®ããã
ãã¶ã€ã³æã«ã¯ååšããªãã
VS ãã¶ã€ã㯠Visual Studio ã® 32bit ããã»ã¹äžã§åãã®ã§ã
VS ãã¶ã€ãããå®è¡ãããã³ãŒãäžã§ã64bit ã® DLL ãããŒãã§ããªãã
- ç¶æ¿ãã©ãŒã ãäœæããããšãããšãã¶ã€ããŒããšã©ãŒãšãªãã
https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/b3914f86-7a4a-44e8-9abc-caa0a8dfeda1?forum=csharpgeneralja
ç§»è¡ã¡ã¢ïŒVisual Studio 2022 ã§ 64bit åãããïŒ: æ¬ç¯ã®åæã¯
Visual Studio 2022 ã§å€ãã£ãããVisual Studio 2019 ãŸã§ã devenv.exe ã¯ã32bit ããã»ã¹ãâ â ãã¶ã€ãã 32bit â 64bit å°çšã® DLL ã P/Invoke ããã³ã³ãããŒã«ã¯ ãã¶ã€ã³æã«èªã¿èŸŒããããšã©ãŒã«ãªã ãVisual Studio 2022 以éã devenv.exe ãã64bit åãããã â éã«ã32bit å°çšã® DLL ãèªããªããªã£ããâ â å€ã 32bit ã® COM / ãã€ãã£ã DLL ã«äŸåãã ã³ã³ãããŒã«ããã¶ã€ã³æã«èœã¡ãããã«ãªã£ããã€ãŸããåé¡ãæ¶ããã®ã§ã¯ãªããåããéã«ãªã£ããã ã»æ§æ¥ïŒ 64bit DLL ãèªããªã ã»çŸåšïŒ 32bit DLL ãèªããªã â [DLLäœææé ](MS_DLLCreationSteps) ã® ã32bit / 64bit ã®äžèŽãïŒBadImageFormatExceptionïŒãšåãåé¡.NETïŒCore ç³»ïŒã® Windows Forms ãã¶ã€ãã¯ããã«æ§é ãéãã
ã.NET Framework ã®ãã¶ã€ãã Visual Studio ã®ãããã»ã¹å ãã§çŽæ¥ãã©ãŒã ãçæ ã.NETïŒCore ç³»ïŒã®ãã¶ã€ããâ ãå¥ããã»ã¹ïŒãã¶ã€ã ãµãŒããŒïŒãã§ãã©ãŒã ãçæãã VS ãšã¯ IPC ã§éä¿¡ãã â VS æ¬äœã®ãããæ°ã«çžãããªã â ãããžã§ã¯ãã®ã¿ãŒã²ããïŒx86 / x64ïŒã«åãããŠèµ·åã§ãã â äžæ¹ã§ããã¶ã€ã ããã»ã¹ãèœã¡ãããšããæ°ããçç¶ãåºã ããã¶ã€ã㌠ãµãŒã㌠ããã»ã¹ãšã®éä¿¡ã«å€±æããŸãããåé¿ç:
ã»ãã©ãããã©ãŒã ã¿ãŒã²ããã AnyCPU ã«ãã ã»DesignMode å€å®ã§ãã€ãã£ãåŒã³åºããé¿ããïŒåŸè¿°ïŒ ã»32bit / 64bit ã®äž¡æ¹ãçšæããå®è¡æã«åãæ¿ãã ïŒ[ã¢ã³ãããŒãžãã³ãŒãã®ã¯ãã¹ãã©ãããã©ãŒã å](MS_UnmanagedCodeCrossPlatform)ïŒ
ãã¶ã€ã³æã«äœ¿çšã§ããå€ã¯ãå®è¡æã«äœ¿çšã§ããå€ãšç°ãªãã
-
ã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããŠããªãã®ã§ã
å ±æã¡ã¢ãªãã°ããŒãã«å€æ°ãªã©ã®ãã¶ã€ã³æã«èªãããšã¯ã§ããªãã -
ãã¶ã€ã³ã¿ã€ã ã»ããããã£ïŒOpenæ£æ¢ã®ã«ã¹ã¿ã ã³ã³ãããŒã«ã®ãã§ãã¯å±æ§ã®ãããªïŒã¯å©çšå¯èœã
-
app.config ã®å€ã«ã€ããŠã¯ã
以äžã®ããã«ãã¶ã€ã³ã¿ã€ã ã§å©çšå¯èœã§ãããããã- ãã¶ã€ã³æã«æå®ããDBã®ãã¹åãå®è¡æã«å€æŽããæ¹æ³ ïŒ Insider.NET ïŒ ïŒ IT
https://atmarkit.itmedia.co.jp/bbs/phpBB/viewtopic.php?topic=47969&forum=7 - å€éšãã¡ã€ã«ã«ã³ã³ãããŒã«ã®ããããã£ãæ ŒçŽãã: .NET Tips: C#, VB.NET
https://dobon.net/vb/dotnet/programing/dynamicproperties.html
- ãã¶ã€ã³æã«æå®ããDBã®ãã¹åãå®è¡æã«å€æŽããæ¹æ³ ïŒ Insider.NET ïŒ ïŒ IT
è£è¶³ïŒ
app.configããèªãããããšã®æ£äœïŒ: åæã®ãå©çšå¯èœã§ãã
ãããããšããæ éãªæžãæ¹ã¯åŠ¥åœã§ã
èªããããèªãã§ããã®ã¯æ³å®ãšéããã¡ã€ã«ã§ãããããã¶ã€ã³æã« ConfigurationManager ãèªããã®ã ã¢ããªã® App.configãã§ã¯ãªãã â ãdevenv.exe.configãïŒVisual Studio èªèº«ã®æ§æãã¡ã€ã«ïŒâ ãŸãã¯ã.NET Core ã®ãã¶ã€ãã§ã¯ â ãã¶ã€ã ãµãŒã㌠ããã»ã¹ã®æ§æãã¡ã€ã« â ãå€ãåããªãããnull ã«ãªãããæ¢å®å€ã«ãªãã ãšããçç¶ã®åå**åèãªã³ã¯ã瀺ãããã€ããã㯠ããããã£ã**ã¯ã
å¥ã®ä»çµã¿ã§ãããããã€ããã㯠ããããã£ïŒWindows FormsïŒã ãã¶ã€ããããããã£å€ã App.config ã«æžãåºãã å®è¡æã«ãçæãããã³ãŒããèªã¿èŸŒãã â InitializeComponent ã®äžã« ConfigurationManager.AppSettings[...] ãåãã â ãã¶ã€ã³æã« config ãèªãã§ããããã§ã¯ãªã â ãçŸæ³ã ãã®æ©èœã¯çŸåšã®ãã¶ã€ãã§ã¯æšå¥šãããªã â èšå®ã¯ [.NET config](MS_DotNetConfig) / IOptions ãã¿ãŒã³ã§æ±ã
è£è¶³ïŒãã¶ã€ã³æãå€å®ããæ¹æ³ ââ å®åã§ã®å¿ é ç¥èïŒ: æ¬ããŒãžã®
ã察çãç¯ãåèãªã³ã¯ã®ã¿ã®ãããå ·äœçãªææ®µãè£ã£ãŠããã// â Component.DesignModeïŒæãåºæ¬ããã ãèœãšã穎ããïŒ public partial class MyControl : UserControl { public MyControl() { InitializeComponent(); if (!DesignMode) // â ã³ã³ã¹ãã©ã¯ã¿ã§ã¯ false ã«ãªã â LoadDataFromDatabase(); } }ãDesignMode ã®èœãšã穎ãâ æéèŠ â ãã³ã³ã¹ãã©ã¯ã¿ã®äžã§ã¯åžžã« falseã â ãŸã ãã¶ã€ãã«é¢é£ä»ããããŠããªããã â ã³ã³ã¹ãã©ã¯ã¿ã§ã®å€å®ã«äœ¿ããªã â¡ ãå ¥ãåã®ã³ã³ãããŒã«ã§ã¯ falseã â èªåããã¶ã€ã³ãããŠããå Žå㯠true â 芪ããã¶ã€ã³ãããèªåããã®åã®å Žå㯠false ã«ãªã ⢠WPF ã§ã¯å¥ã® APIïŒåŸè¿°ïŒ// â¡ ãã確å®ãªå€å®ïŒããã»ã¹åãèŠãïŒ static bool IsDesignTime => LicenseManager.UsageMode == LicenseUsageMode.Designtime || System.Diagnostics.Process.GetCurrentProcess().ProcessName is "devenv" or "DesignToolsServer"; // â .NET Core ã®ãã¶ã€ã â// ⢠LicenseManagerïŒã³ã³ã¹ãã©ã¯ã¿ã§ãå¹ãïŒâ public MyControl() { InitializeComponent(); if (LicenseManager.UsageMode == LicenseUsageMode.Runtime) LoadDataFromDatabase(); }WPF ã®å Žå:
// WPF 㯠DesignerProperties ã䜿ã if (!System.ComponentModel.DesignerProperties.GetIsInDesignMode(this)) LoadData();<!-- XAML ã§ã¯ d: åå空éã§ãã¶ã€ã³æå°çšã®å€ãäžãããã â --> <UserControl xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DataContext="{d:DesignInstance vm:MyViewModel, IsDesignTimeCreatable=True}"> <!-- â ãã¶ã€ãäžã§ã ããããŒã®ããŒã¿ã衚瀺ããããå®è¡æã¯ç¡èŠããã --> </UserControl>
d:åå空éã¯ãã¶ã€ã³æã®çç£æ§ã倧ããäžããã
å®ããŒã¿ããªããŠãã¬ã€ã¢ãŠãã確èªã§ããããã§ãã
ïŒXAMLã®æžãæ¹ïŒïŒïŒ ã®ãã€ã³ãã£ã³ã°ãšäœµçšããïŒã
ïŒåã³ã³ãããŒã«ãæã€ Form ãã«ã¹ã¿ã ã³ã³ãããŒã«ã®ïŒ
åã³ã³ãããŒã«ãçæããåŠçããã³ã³ã¹ãã©ã¯ã¿ã«å®è£
ããå Žåã
ãã¶ã€ã³æãšå®è¡æã®è¡šç€ºãä¹é¢ããçŸè±¡ãçºçããã
è£è¶³ïŒãªãäºéã«è¿œå ãããã®ãïŒ: å¥ããŒãžã§æ±ãããäž»é¡ã ãã
æ¬ããŒãžã®ããã¶ã€ã³æã«ã³ãŒããå®è¡ããããããèªç¶ã«å°ããã®ã§ã
ä»çµã¿ãè£ã£ãŠããããäºé远å ãèµ·ããæµãã â ããã¶ã€ã³æã ãã¶ã€ãããã©ãŒã ã®ã€ã³ã¹ã¿ã³ã¹ãçæ â ã³ã³ã¹ãã©ã¯ã¿ãèµ°ã â åã³ã³ãããŒã«ã 1 ã€è¿œå ããã â ãã¶ã€ããããã®ãã©ãŒã ã«ã¯åã³ã³ãããŒã«ã 1 ã€ããããšèªè â ãã¶ã€ãããInitializeComponent ã«è¿œå ã³ãŒããæžãåºããâ this.Controls.Add(this.myChild); â¡ ãå®è¡æã InitializeComponent ãèµ°ã ⊠1 ã€è¿œå ïŒãã¶ã€ããæžããã³ãŒãïŒ ã³ã³ã¹ãã©ã¯ã¿ã®ç¶ããèµ°ã ⊠ãã 1 ã€è¿œå ïŒèªåã§æžããã³ãŒãïŒ â ãåèš 2 ã€ãâã察çã â ã³ã³ã¹ãã©ã¯ã¿ã§åã³ã³ãããŒã«ã远å ããªã â OnLoad / Loaded ã€ãã³ãã§è¡ã â¡ DesignModeïŒãŸã㯠LicenseManagerïŒã§å€å®ããŠã ãã¶ã€ã³æã«ã¯è¿œå ããªã ⢠[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] ãä»ãããã¶ã€ãã«æžãåºãããªã â ⣠ããããããã¶ã€ã ãã¡ã€ã«ãæã§ç·šéããªãã â [*.aspx.designer.cs(vb)ãçæããæ¹æ³](MS_ASPXDesignerGeneration) ãš åãããçæç©ã¯çæããã
äžèšã®ãããªå¯Ÿçã®æ¹æ³ãããã
-
Windowsãã©ãŒã ã®ãã¶ã€ã³æã«éå®è¡ã®ã³ãŒããæžãã«ã¯ ïŒ Insider.NET ïŒ ïŒ IT
https://atmarkit.itmedia.co.jp/bbs/phpBB/viewtopic.php?topic=15316&forum=7 -
.NETïŒTips > ãã¶ã€ã³ïŒãã¶ã€ã³æã«åŠçãå®è¡ãããªã - YiaoWang
http://yiaowang.web.fc2.com/programing/vs_tips/design_04.html
è£è¶³ïŒãã¶ã€ããå£ãããšãã®åãåãæé ïŒ: æ¬ããŒãžã®å 容ãèžãŸãã
å®åã§äœ¿ããæé ã«ãŸãšããŠããããçç¶å¥ã®åå ã ããã¶ã€ããŒã§äŸå€ãçºçããŸããã â ã³ã³ã¹ãã©ã¯ã¿ or ã«ã¹ã¿ã ã³ã³ãããŒã«ã®åæåã§äŸå€ â ãã¹ã¿ã㯠ãã¬ãŒã¹ãå¿ ãéããŠèªããâ ïŒãã¶ã€ãã®ãšã©ãŒç»é¢ã«ã詳现ã®è¡šç€ºããããïŒ ãå 'Xxx' ãèªã¿èŸŒããŸããã§ããã â ãã«ããéã£ãŠããªãïŒDLL ãèŠã€ãããªã â ããŸããœãªã¥ãŒã·ã§ã³ããã«ããçŽãã â 32/64bit ã®äžäžèŽïŒåç¯ïŒ ããã¶ã€ã㌠ãµãŒã㌠ããã»ã¹ãšã®éä¿¡ã«å€±æããŸãããïŒ.NET CoreïŒ â ãã¶ã€ã ããã»ã¹ãèœã¡ã â VS ãåèµ·åãbin/obj ãåé€ ãéããã³ã«ã³ã³ãããŒã«ã®äœçœ®ããããã â ã³ã³ã¹ãã©ã¯ã¿ã§ã¬ã€ã¢ãŠãã倿ŽããŠãã â ãã¶ã€ãããã®çµæã .designer.cs ã«æžãæ»ããŠãã â ãæ¯å .designer.cs ã«äžèŠãªå·®åãåºãã â åäžãDesignerSerializationVisibility.Hidden ãæ€èšãèšèšäžã®ååãâ â ã³ã³ã¹ãã©ã¯ã¿ã«ã¯ãInitializeComponent 以å€ãæžããªãã â åæå㯠Load / LoadedããŸãã¯æç€ºç㪠Init ã¡ãœãããž â¡ ãå€éšãªãœãŒã¹ã«ãã¶ã€ã³æã«è§Šããªãã â DBããã¡ã€ã«ããããã¯ãŒã¯ãã¬ãžã¹ããªãå ±æã¡ã¢ãª ⢠觊ãå¿ èŠããããªããå¿ ã DesignMode å€å®ã§å²ãã ⣠ã«ã¹ã¿ã ã³ã³ãããŒã«ã¯ããã¶ã€ã³æã«èœã¡ãªãããšãã åãå ¥ãæ¡ä»¶ã«å«ãã â èœã¡ããšããã®ã³ã³ãããŒã«ã䜿ãå šç»é¢ãç·šéäžèœã«ãªã âãªããæ ¹æ¬çãªåé¿çã¯ããã¶ã€ãã«äŸåããªããããšã§ããã
ã»WPF / [XAMLã®æžãæ¹ïŒïŒïŒ](MS_XAMLWriting1) 㯠ãXAML ãæã§æžããã®ãæ®é â ãã¶ã€ãã¯ãã¬ãã¥ãŒãšããŠäœ¿ã â ãã¶ã€ã³æå®è¡ã®åé¡ã«å·»ã蟌ãŸãã«ãã ã»[Blazor](MS_Blazor) / Web ãåæ§ïŒãã¶ã€ãããªãïŒ ã»Windows Forms ã§ããåçãªç»é¢ã¯ã³ãŒãã§çµãæ¹ãå®å®ãã
Tags: ç§»è¡, .NETéçº, UIãµãã·ã¹ãã , Windows Forms, ASP.NET Web Forms