跳到主要内容

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

源文档地址

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

源码 NuGet 与二进制 NuGet

NuGet 包通常以二进制形式安装。vvvv 在此之上加了「源码 NuGet」这个想法:它允许你直接引用一个包的源码,就好像那已经是一个二进制 NuGet 一样。要让 vvvv 把一个目录认作源码 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 时的中心入口。它定义了「用了这个 NuGet 之后你能得到哪些节点」:所有东西要么打在这个文件里,要么被标记为「转发依赖」。

备注

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

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

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

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

创建并发布一个 NuGet

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