【发布时间】:2018-01-25 16:08:47
【问题描述】:
.NET Core 2.0 SDK 中的每个 DLL 都有两个副本(它们具有不同的内容和文件大小)。例如:
“c:\Program Files\dotnet\sdk\2.0.0\Microsoft\Microsoft.NET.Build.Extensions\net461\ref\System.Threading.Thread.dll”(14432 字节)
“c:\Program Files\dotnet\sdk\2.0.0\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.Thread.dll”(14352 字节)
它们之间有什么区别(以及拥有两个的目的)?
【问题讨论】:
-
这与完整的框架没有根本的不同,参考程序集位于 c:\program files (x86)\reference 程序集中,并在您构建程序时使用。运行时程序集位于 c:\windows\microsoft.net\assembly 中,并在您运行程序时使用。这种区别将实现更改破坏程序的风险降至最低。 .NETCore 只会把你的磁盘弄得更糟,版本太多,程序集太多,标准太多,而且没有 GAC。希望他们很快能齐心协力。
-
Microsoft.NET.Build.Extensions实际上只是一个兼容性垫片,允许 .NET Standard 1.0-2.0 项目在不包含所有必要程序集和类型的 .NET Framework 4.6.1 上运行。所以它比经典的ref/lib拆分其他NuGet包更特别。