DLL Hell – Same as it Ever Was

Everything old is new again.

How it started (1998):

And all it takes is a single DLL, VBX or OCX to be missing, or present in an older version (or even an incompatible newer version), for an application to fail. A poorly designed installation program, user error, registration error or change in the user’s PATH environment variable are a few of the ways in which this problem can occur.


.Net – our savior (2001)?

.NET’s versioning features promise to do the most to eliminate the DLL Hell syndrome


Yeah no (2021)

DLL Hell is an old term that got a new meaning in managed runtimes like .NET. The original DLL Hell issue was that many applications shared the same DLL file dependency. Then, if one of those applications updated that DLL, it broke the API for the other applications, and caused all sorts of trouble.

In .NET we don’t have that problem. In most cases, applications don’t share DLLs, which prevents issues in the first place. When apps do share libraries, they use the Global Assembly Cache (GAC). This is a place to share libraries on the machine, but it’s only for strong-named libraries. When an application uses a library from the GAC, it requests a specific version, and the strong name guarantees it will get that exact version.

But if you think this architecture solved all our problems, you will be disappointed. We still have problems, just different ones (emphasis mine RH).


We still have problems, just different ones…sums up a lot of “progress” in software development.

New DBAs be like

begin transaction
select * into dbo.TranSACTIOnAlLoGwilLNoTgrOWAlldbsAreINsImPLERECOveRy from dbo.ActivityLogs
while 1 = 1
	insert into dbo.TranSACTIOnAlLoGwilLNoTgrOWAlldbsAreINsImPLERECOveRy
	select * from dbo.ActivityLogs

Time to hit F5 and go to lunch…

UI Fails #2, SSMS Dropdown Button

Using the “generate scripts” wizard in SSMS, I always have to stop and check my eyes on the last step.

Is that a button?
Surprise! It’s a dropdown.

Clicking a row in the dropdown performs the action you would expect the button to do. It’s bizarre the form doesn’t use checkboxes or option buttons for picking the output format, since both are already in use.

In the grand scheme of things, this is a minor inconsistency. But…this is from Microsoft, and a lot of developers just starting out will unconsciously emulate the look and feel of the tools they use most often. We need better examples than this to start out with.