我正在开发一个通用的Windows应用程序。我看到在参考部分我有带有蓝色NuGet图标的Microsoft.NETCore.UniversalWindowsPlatform。当我双击它时,对象资源管理器不会出现在正常的库引用中。
当我阅读文档时,我知道NuGet确实下载了该库的副本,但是我无法在任何地方找到DLL,我查看了所有文件夹。
我在哪里可以找到NuGet Reference的DLL,这个新实现带来了什么优势?因为我无法获得任何收益,特别是如果您处于离线状态并且无法使用对象资源管理器。
答案 0 :(得分:4)
它不是DLL。文档很难得到,而且很可能会迅速改变。但是你可以通过使用文本编辑器来查看C:\ Users \ yourname \ .nuget \ packages \ Microsoft.NETCore.UniversalWindowsPlatform \ 5.0.0
中的Microsoft.NETCore.UniversalWindowsPlatform.nuspec文件。您会发现它实际上是一个包含清单的XML文件:
<dependencies>
<dependency id="Microsoft.NETCore.Runtime" version="1.0.0" />
<dependency id="Microsoft.NETCore" version="5.0.0" />
... etc
反过来,这些是构建项目所需的Nuget包。列表中的第一个是located here。
首次构建项目时会检索这些包。它们也存储在C:\ Users \ yourname \ .nuget \ packages中。列表中的第一个,Microsoft.NETCore.Runtime在其runtime.json文件中有另一个重定向:
"runtimes": {
"win7-x86": {
"Microsoft.NETCore.Runtime": {
"Microsoft.NETCore.Runtime.CoreCLR-x86": "1.0.0",
"Microsoft.NETCore.Windows.ApiSets-x86": "1.0.0"
}
},
...etc
注意&#34; win7&#34;绰号,那里应该有一个故事:) Microsoft.NETCore.Runtime.CoreCLR-x86和Microsoft.NETCore.Windows.ApiSets-x86是更多的nuget包。请注意,每个可能的目标都有条目,它不是非常普遍的&#34;当你了解细节时。
Microsoft.NETCore.Runtime.CoreCLR-x86.nuspec包含另一个清单:
<dependencies>
<dependency id="System.Collections" version="[4.0.10]" />
<dependency id="System.Diagnostics.Debug" version="[4.0.10]" />
...etc
我们终于找到了真正的DLL。 System.Collections是编译器实际使用/ reference选项看到的Nuget包。它的ref \ dotnet子目录有引用程序集,它的lib \ netcore50子目录有运行时程序集。
请注意,如何使用 very 大量的DLL。旧的.NET Framework被拆分为许多子程序集。 .NET Native对于防止冷启动时间非常重要。它仅使用您实际使用的方法编译所有这些程序集,并将它们合并回blob。
非常复杂,必须有一台知道如何将所有这些球保持在空中的机器。相当可怕的是,你不得不怀疑这个装置从现在起10年后是否仍会有效。
更新:自从我第一次写这篇文章以来,它没有发生很多变化。 .NETCore版本5重新编号为刚刚发布的1.0版2.0。该团队承认,拥有如此多的组件只是一种临时解决方案,可以更容易地进行更改。我怀疑这只是真正开始稳定在众所周知的版本3。