Ive been working with a customer who uses SVN as version control. This works fine togeher with the Visual Studio plugin AnkhSVN. The problem is that this is a really old plugin and hasn’t been updated since 2016! This isn’t a big problem because usually it just works and causes no problems. However the latest supported version for visual studio is 2017 and we’re trying to update to 2019. We tried Visual SVN as an alternative however it doesn’t support commits into multiple repositories (currently) which is a feature this customer uses. So I wanted to try hacking the AnhSVN plugin so it will work in Visual Studio 2019.

After finding a stackoverflow post on how to do this I decided to try this for myself. So the first step is to download the latest package from their site. Rename the vsix file to zip and open this using your favorite zip tool. The following files need to be changed:

  • extension.vsixmanifest
    Change the occurance of [15.0,16.0) to [15.0,17.0)
    Change the prerequisite in this way:
    <Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[15.0,17.0)" DisplayName="Visual Studio core editor" />
  • catalog.json
    search Microsoft.VisualStudio.Component.CoreEditor and change the version to “[15.0,17.0)”
  • manifest.json
    search Microsoft.VisualStudio.Component.CoreEditor and change the version to “[15.0,17.0)” as the catalog.json

I have to admit that at first I tried adding [15.0,16.0,17.0) instead which for some vague reason didn’t work. But after following the post to the letter it worked perfectly. After installation when I opened my solution file my version control would switch back to Visual SVN and changed it to AnkhSVN caused a loop in where I had to restart visual studio and it defaulting back to Visual SVN again. So i uninstalled it and it works almost perfectly.

Of course a couple of small things didn’t work i’ll add them to this list:

  • Annotating a document generates an error and causes it not to work.

Leave a Reply

Your email address will not be published. Required fields are marked *