1

我试图了解 corefx 项目的文件夹结构,这里是System.IO。这是 System.IO 文件夹在 OS X 中的显示方式

System.IO BLACKSTAR$ pwd
/Users/BLACKSTAR/dotnet/corefx/src/System.IO
sameer:System.IO BLACKSTAR$ tree
.
├── System.IO.sln
├── ref
│   ├── System.IO.Manual.cs
│   ├── System.IO.cs
│   ├── System.IO.csproj
│   ├── bin
│   │   └── Debug
│   │       └── dotnet
│   │           ├── ref.dll
│   │           └── ref.xml
│   ├── project.json
│   └── project.lock.json
├── src
│   ├── Resources
│   │   └── Strings.resx
│   ├── System
│   │   └── IO
│   │       └── InvalidDataException.cs
│   ├── System.IO.csproj
│   ├── project.json
│   └── project.lock.json

这是我想弄清楚的

  1. ref 文件夹中有什么?
  2. src 文件夹里有什么?
  3. ref 和 src 之间有什么联系?
  4. Ref 面向 dotnet,但 Src 面向 dnxcore50 框架。这意味着什么?
  5. 我能够在 ref 文件夹中构建项目,但我无法使用dnu build在 src 中构建项目,尽管dnu restore成功运行。我究竟做错了什么?
sameer:System.IO BLACKSTAR$ dnvm list

Active Version              Runtime Architecture OperatingSystem Alias
------ -------              ------- ------------ --------------- -----
       1.0.0-beta7          coreclr x64          darwin          
  *    1.0.0-beta7          mono                 linux/osx       default

sameer:System.IO BLACKSTAR$
4

1 回答 1

1

你在这里看到的是一个命名空间的 NuGet 包,它实际上是 CLR 的一部分。有些类型很早就需要了……像文件 io 和基本数据类型,所以它们是 CLR 发行版的一部分。您可以在核心 CLR github 项目中找到这些内容。

所以 ...

  1. Ref 是设计时的空实现。他们在那里定义类型。
  2. SRC 是基于 dnxcore5 的实现......基本上是空的。
  3. Ref vs SRC .... Ref 用于查找类型 ... 绑定到实现(在 coreclr 或 mscorlib 中)是由一些 PCL 类型转发完成的。
  4. SRC 是 coreclr 的伪实现。也许只是缺少的类型。Ref 以 dotnet 为目标,因为所有现代 SDK 都具有 System.IO 的类型转发。
  5. 我不知道它们是如何建造的。

很抱歉缺少详细信息。MS没有很好地记录它。

于 2015-09-21T18:47:48.783 回答