.NET 5.0 bin 文件夹中的 Ref 文件夹
Ref folder within .NET 5.0 bin folder
编译 .NET 5.0 应用程序时 ref
文件夹是什么?
我是说这个:
[project_path]\bin\Debug\net5.0\ref\
这些被称为 Reference Assemblies(仅包含程序集的 public 接口的程序集),这些有助于加快构建过程,因为依赖于此的项目将能够看到没有理由重新编译,即使程序集的内部发生了变化,因为从表面上看它仍然是一样的。
这些参考组件需要从外部看起来与真实的东西一样。因此,它们具有相同的文件名、程序集名称、程序集标识和所有内容。这允许构建系统将它们用作真实事物的替代品。由于这些程序集没有任何实现细节,因此它们只会在内容的界面发生变化时发生变化。由于这些事实,它们不能与实际构建输出位于同一个文件夹中,这就是额外的 ref
文件夹的原因。 MsBuild 将自动使用这些参考程序集来加速构建过程(每次编译代码产生新项目输出和输出目录中的一些文件时都会生成和比较参考程序集)。
如果您的项目未被其他项目引用,则您不会从这些引用程序集中获得任何好处(如果您不将它们交给第 3 方)。您可以通过将此 属性 添加到项目文件来关闭此功能:
<PropertyGroup>
<!--
Turns off reference assembly generation
See: https://docs.microsoft.com/en-us/dotnet/standard/assembly/reference-assemblies
-->
<ProduceReferenceAssembly>false</ProduceReferenceAssembly>
</PropertyGroup>
更改设置后,确保清理构建输出。
这些参考程序集还可用于允许人们编译项目以与您的系统一起工作,而无需 install/redistribute 您服务器上 运行 的实际编译程序集。这样人们就可以为您的应用程序开发扩展、插件或客户端,而无需让他们访问实际的实现。这有助于保护您的智力 属性,因为 .NET 程序集很容易反编译。
另请参阅:
编译 .NET 5.0 应用程序时 ref
文件夹是什么?
我是说这个:
[project_path]\bin\Debug\net5.0\ref\
这些被称为 Reference Assemblies(仅包含程序集的 public 接口的程序集),这些有助于加快构建过程,因为依赖于此的项目将能够看到没有理由重新编译,即使程序集的内部发生了变化,因为从表面上看它仍然是一样的。
这些参考组件需要从外部看起来与真实的东西一样。因此,它们具有相同的文件名、程序集名称、程序集标识和所有内容。这允许构建系统将它们用作真实事物的替代品。由于这些程序集没有任何实现细节,因此它们只会在内容的界面发生变化时发生变化。由于这些事实,它们不能与实际构建输出位于同一个文件夹中,这就是额外的 ref
文件夹的原因。 MsBuild 将自动使用这些参考程序集来加速构建过程(每次编译代码产生新项目输出和输出目录中的一些文件时都会生成和比较参考程序集)。
如果您的项目未被其他项目引用,则您不会从这些引用程序集中获得任何好处(如果您不将它们交给第 3 方)。您可以通过将此 属性 添加到项目文件来关闭此功能:
<PropertyGroup>
<!--
Turns off reference assembly generation
See: https://docs.microsoft.com/en-us/dotnet/standard/assembly/reference-assemblies
-->
<ProduceReferenceAssembly>false</ProduceReferenceAssembly>
</PropertyGroup>
更改设置后,确保清理构建输出。
这些参考程序集还可用于允许人们编译项目以与您的系统一起工作,而无需 install/redistribute 您服务器上 运行 的实际编译程序集。这样人们就可以为您的应用程序开发扩展、插件或客户端,而无需让他们访问实际的实现。这有助于保护您的智力 属性,因为 .NET 程序集很容易反编译。
另请参阅: