3

This seemingly nonsensical question might seem strange from such a high-rep user, so please bear with me.

I wish to distribute the SQL Server SMO DLLs with my .NET application. There's now an official nuget package with accompaying license terms. These contain the clause:

ii. Distribution Requirements. For any Distributable Code you distribute, you must

[...]

  • for any Distributable Code having a filename extension of .dll, distribute only the results of running such Distributable Code through a linker with your program;

Apparently, I need to "run the dll through a linker with my program". So far, I was under the impression that, in Windows, DLLs are the output, not the input of the linking process.

So, how would I do that? Did the MS lawyers mess up or is this actually doable?

Heinzi
  • 167,459
  • 57
  • 363
  • 519
  • Hum. Well, you can rename DLL into something else, I guess. – arrowd Sep 04 '17 at 14:32
  • Wouldn't it means that you have to **NOT** include the source code or any intermediate file with any assembly dll ? That or they just don't want the developer to include any other resource included in the nuget package except for the SMO DLLs – Irwene Sep 04 '17 at 14:39

1 Answers1

0

This is really a legal question and I am not a lawyer but I think the clue is here:

•You may copy and distribute the object code form of the software (“Distributable Code”) in programs you develop; and

I think the assumption is that the licence will cover source code, which is not distributable, and you are permitted to compile this, link it to your program including as part of a DLL file, and distribute the executable code. However if you are using a DLL, the DLL must only include object code from compilation units that are required to run your program, i.e. those which are included by running the OBJ files through the linker.

However, this is far from clear, and doesn't really seem to apply to SMO, which is distributed in DLL form anyway.

For SMO the same principle would seem to be: Don't distribute DLLs your application doesn't use.

However I suspect the real solution is to require the end user to install the NuGet package themselves.

Ben
  • 34,935
  • 6
  • 74
  • 113