---
title: "Why is VS.Net Add-in architecture so overly complicated?"
url: "https://osherove.com/blog/2004/4/29/why-is-vsnet-add-in-architecture-so-overly-complicated.md"
canonical: "https://osherove.com/blog/2004/4/29/why-is-vsnet-add-in-architecture-so-overly-complicated.html"
published: "2004-04-29T20:27:00"
updated: "2004-04-29T20:27:00"
tags: [".Net Original"]
author: "Roy Osherove"
description: "One of the weirdest things for me is trying to understand the motives behind some of the technical decisions that went into designing the VS.Net Add-in/Plugin architecture. It's an amazing and powerful scheme that…"
usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)."
license: "https://creativecommons.org/licenses/by/4.0/"
---

# Why is VS.Net Add-in architecture so overly complicated?

By Roy Osherove April 29, 2004 In [.Net Original](https://osherove.com/blog/category/net-original)

**Historical article** · Originally published April 29, 2004; technical details may be outdated.

One of the weirdest things for me is trying to understand the motives behind some of the technical decisions that went into designing the VS.Net Add-in/Plugin architecture. It's an amazing and powerful scheme that allows a plugin developer have various degrees of power, but there's just something weird about it. It still uses COM!

Why must Add-in developers suffer going through to create VS.Net add-ins? is it some sort of security thing?

Is using pure reflection based loading too simple? Seems to me like someone was trying to make this difficult on purpose, so that it won't look like child's play to create add-ins or understand how they work.

## More in .Net Original

[All posts in .Net Original](https://osherove.com/blog/category/net-original)

- May 1, 2004

    ### [Book of the month: May](https://osherove.com/blog/2004/5/1/book-of-the-month-may.html)

- Apr 29, 2004

    ### [TrimEnd() Vs. SubString()](https://osherove.com/blog/2004/4/29/trimend-vs-substring.html)

- Apr 29, 2004

    ### [How to: Creating project groups under a single solution](https://osherove.com/blog/2004/4/29/how-to-creating-project-groups-under-a-single-solution.html)

- Apr 29, 2004

    ### [Bill Vaughn blogs, and I ask an ADO.Net question](https://osherove.com/blog/2004/4/29/bill-vaughn-blogs-and-i-ask-an-adonet-question.html)


---

## About the author

**Roy Osherove**: Senior Solutions Architect at AWS working on AI for production and AI-driven development; author of The Art of Unit Testing and Elastic Leadership, with about 20 years of consulting and training on unit testing, TDD, team leadership and continuous delivery.

### Sites

- [RobotPaper](https://robotpaper.ai/): This blog: AI patterns and anti-patterns, AI and coding agents, and engineering leadership.
- [osherove.com](https://osherove.com): Roy's personal site. Author of The Art of Unit Testing and Elastic Leadership; consulting and training on unit testing, TDD, team leadership and continuous delivery, plus about 20 years of blog posts.
- [The Art of Unit Testing](https://www.artofunittesting.com): The Art of Unit Testing, 3rd Edition (Manning): readable, maintainable, trustworthy unit tests, plus TDD workshops in C#, JavaScript, Java and Kotlin.
- [5whys.com](https://www.5whys.com): Roy's writing on software team leadership: self-organizing teams, surviving chaos, learning mode and the Elastic Leadership model.
- [Pipeline Driven](https://pipelinedriven.org): Continuous delivery and DevOps practices: build patterns, pipeline-friendly testing, DevOps metrics and enterprise DevOps.
- [Elastic Leadership](https://www.elasticleadership.com): Elastic Leadership, Roy's framework for software team leaders (survival, learning and self-organizing modes).

### Social

- X: https://x.com/royosherove
- LinkedIn: https://www.linkedin.com/in/osherove/

### Contact

- Contact form: https://forms.gle/jQSx5KoXvrVA1JCK7

### License

Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page). License: https://creativecommons.org/licenses/by/4.0/
