<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>dotnet on Neolisk's Tech Blog</title><link>/tags/dotnet/</link><description>Recent content in dotnet on Neolisk's Tech Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>neolisk@gmail.com (Victor Zakharov)</managingEditor><webMaster>neolisk@gmail.com (Victor Zakharov)</webMaster><copyright>©2020-2024 Victor Zakharov. All Rights Reserved</copyright><lastBuildDate>Sat, 15 Jan 2022 00:00:00 +0000</lastBuildDate><atom:link href="/tags/dotnet/index.xml" rel="self" type="application/rss+xml"/><item><title>Converting to .NET 6 Core</title><link>/posts/2022-01-15-converting-to-dotnet-6-core/</link><pubDate>Sat, 15 Jan 2022 00:00:00 +0000</pubDate><author>neolisk@gmail.com (Victor Zakharov)</author><atom:modified>Sat, 15 Jan 2022 16:35:22 -0500</atom:modified><guid>/posts/2022-01-15-converting-to-dotnet-6-core/</guid><description>Suppose we need to convert a legacy .NET 4.5 MVC or API project to .NET Core 6.0. It might sound like daunting task at first, and if you never did this, might cause you headache for a few days/weeks, or even months depending on the size of the project.
In this article I will do my best to reduce that headache by giving you starter info and some follow-up articles to learn more about the topic.</description><dc:creator>Victor Zakharov</dc:creator><category>dotnet</category><category>development</category><category>csharp</category></item><item><title>.NET Architecture - eShopOnContainers</title><link>/posts/2021-06-05-dotnet-arch-eshop-on-cont/</link><pubDate>Sat, 05 Jun 2021 00:00:00 +0000</pubDate><author>neolisk@gmail.com (Victor Zakharov)</author><atom:modified>Sat, 05 Jun 2021 15:28:50 -0400</atom:modified><guid>/posts/2021-06-05-dotnet-arch-eshop-on-cont/</guid><description>Below video is from 2018, so almost 3 years old now, but somehow I only found it now. It&amp;rsquo;s a handy overview into microservices, has a few gotchas such as avoiding internal communication when fulfilling client requests, to reduce latency, as well as async workflows like adding items to cart. Check it out - if you are starting your journey into microservices with .NET, it&amp;rsquo;s well worth 30min of your time.</description><dc:creator>Victor Zakharov</dc:creator><category>development</category><category>dotnet</category><category>microsoft</category><category>docker</category></item><item><title>Jetbrains .NET Days 2021 - Notes</title><link>/posts/2021-05-11-jetbrains-dotnet-days-2021/</link><pubDate>Tue, 11 May 2021 00:00:00 +0000</pubDate><author>neolisk@gmail.com (Victor Zakharov)</author><atom:modified>Wed, 12 May 2021 16:35:28 -0400</atom:modified><guid>/posts/2021-05-11-jetbrains-dotnet-days-2021/</guid><description>Here are some of the notes I took while attending Jetbrains .NET Days 2021 online event - for select sessions from Days 1 and 2. Specifically, I skipped 1 session from Day 1 (React/CosmosDB), and only watched 1 session from Day 2 (AWS/Kubernetes). This is similar to my earlier MS Build notes articles for Day 1 and Day 2. Main purpose is providing a quick overview of the topics covered, if you do not have those hours to watch whole videos.</description><dc:creator>Victor Zakharov</dc:creator><category>development</category><category>jetbrains</category><category>event</category><category>dotnet</category></item><item><title>.NET Core 2.0 Worth Using?</title><link>/posts/2017-09-24-dotnet-core-worth-it/</link><pubDate>Sun, 24 Sep 2017 00:00:00 +0000</pubDate><author>neolisk@gmail.com (Victor Zakharov)</author><atom:modified>Sat, 05 Jun 2021 11:36:56 -0400</atom:modified><guid>/posts/2017-09-24-dotnet-core-worth-it/</guid><description>September of 2017 is almost gone, and only now I had a chance to look at the most recent issue of the monthly MSDN magazine. What&amp;rsquo;s the hot topic in September? .NET Core 2.0 / Standard 2.0 is highly praised by most MSDN authors. One of the articles mentions a feature I did not know existed. It&amp;rsquo;s called Razor pages. In short, it&amp;rsquo;s the new Web Forms.
It allows you to finally transition to Razor even for small websites, which do not require a full blown MVC structure (where files live in 3 different folders, and you are constantly switching between them).</description><dc:creator>Victor Zakharov</dc:creator><category>dotnet</category></item><item><title>Migration issue of MainMenu to MenuStrip</title><link>/posts/2012-10-09-migration-issue-mainmenu-item/</link><pubDate>Tue, 09 Oct 2012 00:00:00 +0000</pubDate><author>neolisk@gmail.com (Victor Zakharov)</author><atom:modified>Sat, 05 Jun 2021 11:36:56 -0400</atom:modified><guid>/posts/2012-10-09-migration-issue-mainmenu-item/</guid><description>Suppose you were lucky to find this article and already resolved all your compile time errors. I found an issue that may require redesign of your application, even though everything else appears to be working fine. I&amp;rsquo;ll put it straight: MenuStrip/ToolStripMenuItem pair is not 100% backwards compatible with MainMenu/MenuItem. One particular thing is how keyboard shortcuts work.
In MainMenu concept, triggering a shortcut by pressing a hotkey combination causes .NET framework to open the corresponding menu under the hood, process Popup event and only then click the MenuItem.</description><dc:creator>Victor Zakharov</dc:creator><category>dotnet</category><category>menu</category></item><item><title>.NET Winforms - App loses focus when a window is closed</title><link>/posts/2012-09-21-dotnet-winforms-app-loses-focus/</link><pubDate>Fri, 21 Sep 2012 00:00:00 +0000</pubDate><author>neolisk@gmail.com (Victor Zakharov)</author><atom:modified>Sat, 05 Jun 2021 11:36:56 -0400</atom:modified><guid>/posts/2012-09-21-dotnet-winforms-app-loses-focus/</guid><description>I have a main form which is an MDI parent and a modal form, which is a progress dialog. When loading is completed, an MDI child is opened. If it cannot be completed, an error message shows up with user prompt. Problem is if user takes action, and the modal form is closed, the focus is switched to the application, which was active before my application was started. In my case it was Visual Studio 2010.</description><dc:creator>Victor Zakharov</dc:creator><category>dotnet</category><category>winforms</category></item><item><title>VB.NET - Hidden items in a ListBox</title><link>/posts/2012-06-21-vbnet-hidden-items-in-listbox/</link><pubDate>Thu, 21 Jun 2012 00:00:00 +0000</pubDate><author>neolisk@gmail.com (Victor Zakharov)</author><atom:modified>Sat, 29 Feb 2020 15:06:15 -0500</atom:modified><guid>/posts/2012-06-21-vbnet-hidden-items-in-listbox/</guid><description>There is one good way to dynamically show/hide items in a ListBox - use a DataView as DataSource.
You do not need to manually Add and Remove items from your list. In fact, coding effort is very low with this approach.
Here is the extract in VB.NET, which shows the idea:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 Public Class frm_main Dim _dataView As DataView Private Sub MyBase_Load(sender As System.</description><dc:creator>Victor Zakharov</dc:creator><category>vbnet</category><category>dotnet</category></item><item><title>VB.NET - Delay form resize-to-fit until it loads</title><link>/posts/2012-05-08-vbnet-delay-form-resize-to-fit/</link><pubDate>Tue, 08 May 2012 00:00:00 +0000</pubDate><author>neolisk@gmail.com (Victor Zakharov)</author><atom:modified>Sat, 29 Feb 2020 15:14:35 -0500</atom:modified><guid>/posts/2012-05-08-vbnet-delay-form-resize-to-fit/</guid><description>Suppose every once in a while in your application you need to have a popup dialog being shown. This dialog is a value picker, nothing more. It shows as many values as your screen can handle.
Problem happens when list population takes considerable amount of time, say, 5 seconds.
Until then you are completely unsure which size it needs to resize to.
Attached is a piece of production quality code, with irrelevant features and optimizations left out.</description><dc:creator>Victor Zakharov</dc:creator><category>vbnet</category><category>dotnet</category></item><item><title>VB.NET - Get all controls of specified type from tree</title><link>/posts/2012-05-08-vbnet-get-all-controls-of-type/</link><pubDate>Tue, 08 May 2012 00:00:00 +0000</pubDate><author>neolisk@gmail.com (Victor Zakharov)</author><atom:modified>Sat, 29 Feb 2020 15:18:14 -0500</atom:modified><guid>/posts/2012-05-08-vbnet-get-all-controls-of-type/</guid><description>Linearise ControlCollection tree into array of Control - generic extension method, no recursion, LINQ or GetNextControl:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 &amp;lt;System.Runtime.CompilerServices.Extension()&amp;gt; Friend Function GetAllControlsOfType(Of T As Control)(ByVal controls As Control.ControlCollection) As T() Dim controlsArray(controls.Count - 1) As Control controls.CopyTo(controlsArray, 0) Dim oldControlSieveList As New List(Of Control)(controlsArray) Dim newControlSieveList As List(Of Control) Dim targetControlList As New List(Of T) While oldControlSieveList.</description><dc:creator>Victor Zakharov</dc:creator><category>vbnet</category><category>dotnet</category></item><item><title>.NET - AddRange for HashSet</title><link>/posts/2012-02-28-dotnet-addrange-hashset/</link><pubDate>Tue, 28 Feb 2012 00:00:00 +0000</pubDate><author>neolisk@gmail.com (Victor Zakharov)</author><atom:modified>Sat, 29 Feb 2020 15:36:36 -0500</atom:modified><guid>/posts/2012-02-28-dotnet-addrange-hashset/</guid><description>You do not need to implement your own HashSet for that, just use the native UnionWith extension method.</description><dc:creator>Victor Zakharov</dc:creator><category>dotnet</category></item><item><title>VB.NET - DropDownOpening Event For ComboBox</title><link>/posts/2012-02-21-vbnet-dropdownopening-event-combobox/</link><pubDate>Tue, 21 Feb 2012 00:00:00 +0000</pubDate><author>neolisk@gmail.com (Victor Zakharov)</author><atom:modified>Sat, 29 Feb 2020 15:39:47 -0500</atom:modified><guid>/posts/2012-02-21-vbnet-dropdownopening-event-combobox/</guid><description>Here is a proper way to do it - inherit a class from native ComboBox and override OnDropDown to raise a custom DropDownOpening event first:
1 2 3 4 5 6 7 8 9 10 11 12 13 Public Class MyComboBox : Inherits ComboBox Public Event DropDownOpening(sender As Object, e As System.EventArgs) Protected Overrides Sub OnDropDown(e As System.EventArgs) RaiseEvent DropDownOpening(Me, e) MyBase.OnDropDown(e) End Sub End Class Private Sub MyComboBox1_DropDownOpening(sender As Object, e As System.</description><dc:creator>Victor Zakharov</dc:creator><category>vbnet</category><category>dotnet</category></item><item><title>.NET parallel for - how good is it?</title><link>/posts/2011-05-17-dotnet-parallel-for-how-good-is-it/</link><pubDate>Tue, 17 May 2011 00:00:00 +0000</pubDate><author>neolisk@gmail.com (Victor Zakharov)</author><atom:modified>Sat, 24 Oct 2020 12:47:11 -0400</atom:modified><guid>/posts/2011-05-17-dotnet-parallel-for-how-good-is-it/</guid><description>I recently had a Microsoft workshop session and became excited about parallel for/foreach/etc.
There we got a solid 60% of efficiency. It means that whenever number of cores increases by 2x, performance is boosted by 1.6x.
I became curious about it, and created a test project to verify the fact for myself.
Here are the results I got on subsequent runs (time in milliseconds + efficiency):
I even got 96% on some early build, which did not show that information clearly (hence, no screenshot).</description><dc:creator>Victor Zakharov</dc:creator><category>dotnet</category><category>benchmark</category></item><item><title>VB.NET - Compare strings - case sensitivity issues</title><link>/posts/2011-04-21-vbnet-compare-strings-case-sensitivity/</link><pubDate>Thu, 21 Apr 2011 00:00:00 +0000</pubDate><author>neolisk@gmail.com (Victor Zakharov)</author><atom:modified>Sun, 29 Mar 2020 19:47:31 -0400</atom:modified><guid>/posts/2011-04-21-vbnet-compare-strings-case-sensitivity/</guid><description>I recently stumbled upon this problem in one of our company .NET projects.
For some reason, project settings there were configured for Text comparison, rather than Binary.
As a result, lower case strings were equal to upper case, which was discovered later when some bug in UI occured.
There were three solutions available:
Switch default comparison type on the project level. Go to Project / Properties / Option Compare -&amp;gt; Binary.</description><dc:creator>Victor Zakharov</dc:creator><category>dotnet</category><category>vbnet</category></item></channel></rss>