如何“通过链接器运行 SQL Server 管理对象 DLL 文件”?
Posted
技术标签:
【中文标题】如何“通过链接器运行 SQL Server 管理对象 DLL 文件”?【英文标题】:How do I "run the SQL Server Management Object DLL files through a linker"? 【发布时间】:2018-02-12 19:37:11 【问题描述】:这个看似荒谬的问题对于这样一个高代表的用户来说可能看起来很奇怪,所以请多多包涵。
我希望将 SQL Server SMO DLL 与我的 .NET 应用程序一起分发。现在有一个official nuget package 和license terms。这些包含子句:
二。分发要求。对于您分发的任何可分发代码,您必须
[...]
对于任何具有 .dll 文件扩展名的可分发代码,仅分发通过程序链接器运行此类可分发代码的结果;
显然,我需要“通过我的程序的链接器运行 dll”。到目前为止,我的印象是,在 Windows 中,DLLs are the output, not the input of the linking process。
那么,我该怎么做呢?是 MS 的律师搞砸了还是真的可行?
【问题讨论】:
哼。好吧,我猜你可以将 DLL 重命名为其他名称。 这不是意味着您必须不在任何程序集 dll 中包含源代码或任何中间文件吗?或者他们只是不希望开发人员包含 nuget 包中包含的任何其他资源,除了 SMO DLL 【参考方案1】:这确实是一个法律问题,我不是律师,但我认为线索就在这里:
•您可以在您开发的程序中复制和分发软件的目标代码形式(“可分发代码”);和
我认为假设是许可证将涵盖不可分发的源代码,并且您可以编译它,将其链接到您的程序,包括作为 DLL 文件的一部分,并分发可执行代码。但是,如果您使用的是 DLL,则 DLL 必须仅包含运行程序所需的编译单元中的目标代码,即通过链接器运行 OBJ 文件所包含的目标代码。
然而,这还不是很清楚,而且似乎并不真正适用于 SMO,它无论如何都是以 DLL 形式分发的。
对于 SMO,同样的原则似乎是:不要分发您的应用程序不使用的 DLL。
但我怀疑真正的解决方案是要求最终用户自己安装 NuGet 包。
【讨论】:
以上是关于如何“通过链接器运行 SQL Server 管理对象 DLL 文件”?的主要内容,如果未能解决你的问题,请参考以下文章