Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 部分引用DLL_C#_Dll - Fatal编程技术网

C# 部分引用DLL

C# 部分引用DLL,c#,dll,C#,Dll,我有一个库DLL,里面有排序算法、解析器、验证器、转换器等。DLL大约有40MB(我知道的不多,但仍然有)。现在我只想引用该DLL的解析器。关键是在不向客户交付40MB的情况下,将这些解析器取出 是否有一种方法,每次我发布版本时,只需从我的库中获取这些最新的解析器,将它们存储到某种.partialdell文件中,然后只将它们交付给客户?结果是我将所有助手类都保存在一个大的库中,这个库不断增长,客户可以得到他们所订购的东西 我想我需要处理大量的反思才能实现这样的目标,对吗?有什么想法吗?让我从一句

我有一个库DLL,里面有排序算法、解析器、验证器、转换器等。DLL大约有40MB(我知道的不多,但仍然有)。现在我只想引用该DLL的解析器。关键是在不向客户交付40MB的情况下,将这些解析器取出

是否有一种方法,每次我发布版本时,只需从我的库中获取这些最新的解析器,将它们存储到某种
.partialdell
文件中,然后只将它们交付给客户?结果是我将所有助手类都保存在一个大的库中,这个库不断增长,客户可以得到他们所订购的东西

我想我需要处理大量的反思才能实现这样的目标,对吗?有什么想法吗?

让我从一句话开始:

“程序集是.NET Framework应用程序的构建块;它们构成基本的部署单元[…]”

请注意,该引用是关于程序集的,而不是关于DLL的。这是不同的

尽管大多数.NET程序集只包含一个DLL文件,但这并不是严格的要求:一个程序集实际上可以包含多个文件;例如,这样的can由几个DLL组成,这些DLL又被称为“网络模块”。(按照惯例,netmodule可能有一个
.netmodule
文件扩展名,但实际上它是一个包含.NET元数据和字节码的DLL。)每个多文件程序集都有一个“主”模块,该模块携带引用所有其他程序集文件的元数据,并将它们连接成一个逻辑整体

虽然程序集必须完全部署(如上所述),但.NET运行时只能加载JIT代码编译和执行实际需要的NetModule

因此,您可以将一个部件拆分为多个部分,让运行时只加载实际需要的内容;但不能对netmodule/DLL文件执行相同的操作只能完整部署和加载DLL文件。

还请注意,Visual Studio对netmodules的支持在所有实际用途中都不存在,因此大多数人不使用它们,这就是为什么在现实世界中看到的多文件程序集如此之少

底线是:在实践中,如果您或您的客户只对程序集的一部分(“DLL”)感兴趣,那么通常更容易将一个大型程序集(即一个大型Visual Studio项目)拆分为几个相互依赖的程序集(几个较小的Visual Studio项目)。

让我先引用一句话:

“程序集是.NET Framework应用程序的构建块;它们构成基本的部署单元[…]”

请注意,该引用是关于程序集的,而不是关于DLL的。这是不同的

尽管大多数.NET程序集只包含一个DLL文件,但这并不是严格的要求:一个程序集实际上可以包含多个文件;例如,这样的can由几个DLL组成,这些DLL又被称为“网络模块”。(按照惯例,netmodule可能有一个
.netmodule
文件扩展名,但实际上它是一个包含.NET元数据和字节码的DLL。)每个多文件程序集都有一个“主”模块,该模块携带引用所有其他程序集文件的元数据,并将它们连接成一个逻辑整体

虽然程序集必须完全部署(如上所述),但.NET运行时只能加载JIT代码编译和执行实际需要的NetModule

因此,您可以将一个部件拆分为多个部分,让运行时只加载实际需要的内容;但不能对netmodule/DLL文件执行相同的操作只能完整部署和加载DLL文件。

还请注意,Visual Studio对netmodules的支持在所有实际用途中都不存在,因此大多数人不使用它们,这就是为什么在现实世界中看到的多文件程序集如此之少

底线是:在实践中,如果您或您的客户只对程序集的一部分(“DLL”)感兴趣,那么通常更容易将一个大型程序集(即一个大型Visual Studio项目)拆分为几个相互依赖的程序集(几个较小的Visual Studio项目)。

让我先引用一句话:

“程序集是.NET Framework应用程序的构建块;它们构成基本的部署单元[…]”

请注意,该引用是关于程序集的,而不是关于DLL的。这是不同的

尽管大多数.NET程序集只包含一个DLL文件,但这并不是严格的要求:一个程序集实际上可以包含多个文件;例如,这样的can由几个DLL组成,这些DLL又被称为“网络模块”。(按照惯例,netmodule可能有一个
.netmodule
文件扩展名,但实际上它是一个包含.NET元数据和字节码的DLL。)每个多文件程序集都有一个“主”模块,该模块携带引用所有其他程序集文件的元数据,并将它们连接成一个逻辑整体

虽然程序集必须完全部署(如上所述),但.NET运行时只能加载JIT代码编译和执行实际需要的NetModule

因此,您可以将一个部件拆分为多个部分,让运行时只加载实际需要的内容;但不能对netmodule/DLL文件执行相同的操作只能完整部署和加载DLL文件。

还请注意,Visual Studio对netmodules的支持在所有实际用途中都不存在,因此大多数人不使用它们,这就是为什么在现实世界中看到的多文件程序集如此之少

底线是:在实践中,如果您或您的客户只对程序集(“DLL”)的一部分感兴趣,则通常更容易拆分大型程序集(即一个大型Visual Studio pr)