Guess what Semantic Merge is about? Well, as the name says, it is just a tool able to run merge (and diff!) based on code structures instead of text. So refactoring is no longer a pain even if one developer decides to rearrange a file while another one is working on it. It is now available for VB.net (together with C#) and it can get integrated with SVN, Git, TFS, Perforce, Mercurial and Plastic SCM.