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.
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).
The second born finished his online driving course today, and here is the certificate they sent. I’d like to say it was probably just an oversight, but it happened two years ago when his older brother took the course too.
select * into dbo.TranSACTIOnAlLoGwilLNoTgrOWAlldbsAreINsImPLERECOveRy from dbo.ActivityLogs
while 1 = 1
insert into dbo.TranSACTIOnAlLoGwilLNoTgrOWAlldbsAreINsImPLERECOveRy
select * from dbo.ActivityLogs
Using the “generate scripts” wizard in SSMS, I always have to stop and check my eyes on the last step.
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.