跳到主要内容

Creating a new Library/Package/Nuget / 创建一个新的节点库/包/NuGet

源文档地址

给 vvvv 贡献一组节点,最规整的方式是做一个节点库,以 NuGet 包的形式发布。

Source and binary nugets / 源码 NuGet 与二进制 NuGet​

NuGet 包通常以二进制形式安装。vvvv 在此之上加了「源码 NuGet」:你可以直接引用一个包的源码,就当它已经是二进制 NuGet。要让 vvvv 把一个目录认作源码 NuGet,这个目录得位于某个包仓库路径下,并遵守下面这些约定:

Innards of a nuget / 一个 NuGet 的内部构造​

对 vvvv 来说,一个目录里的源码 NuGet 由两个文件定义:

  • <包名>\<包名>.nuspec
  • <包名>\<包名>.vl

比如:

\VL.Devices.Leap\VL.Devices.Leap.nuspec
\VL.Devices.Leap\VL.Devices.Leap.vl

.nuspec 文件用一种简单的文本格式描述一个 NuGet,格式定义见 Nuspec 参考(英文)。

.vl 文件是这个 NuGet 的中心入口,定义了「用了它之后你能得到哪些节点」:所有东西要么打在这个文件里,要么标记为「转发依赖」。

备注

确保这个包里没有任何 .vl 文件引用 .csproj!那会强制整个包、以及所有依赖它的包变成可编辑的,于是你就失去了只读包的好处。

要让 NuGet 在 vvvv 里正常工作,你得提供下面这样的结构 —— 当然所有目录都是可选的,只有某个 NuGet 真的用到时才需要:

\lib // 放托管的 .dll
\runtimes // 放原生/非托管的 .dll *
\src // 放 C# 源码
<包名>.nuspec
<包名>.vl

* 见按架构区分的目录(英文)

Creating and Publishing a NuGet / 创建并发布一个 NuGet​

当你准备好把节点库打成一个 .nupkg 时,有几种做法可选: