Referencing Libraries / 引用节点库
VL 文档可以引用 3 种不同类型的依赖:
- VL NuGet
- .NET NuGet
- 文件
当一个文档引用了某个依赖,就意味着那个依赖里所有公开的节点都能通过节点浏览器在这个文档里用上。
NuGet
NuGet 是 .NET 的包管理系统。NuGet 是一个个包,里面可以装很多 .dll 和/或 .vl 文件,把节点提供给引用它的文档。
安装 NuGet 的方法见管理 NuGet。
VL NuGet 与 .NET NuGet
VL NuGet 是专为 vl 制作的 NuGet,用在别的 .NET 语言上是不行的。按 NuGet 原本的定义,它仍是一个合法的 NuGet,但因为它里面装着 .vl 文档,所以在 vl 之外用不了。
.NET NuGet 则更笼统地面向任何 .NET 语言。
在菜单里导航到某个 VL 或 .NET NuGet,按鼠标右键即可切换它的选中状态,从而引用它:
右键切换添加/移除一个 NuGet 引用
找不到的 NuGet
如果某个文档引用的 NuGet 找不到,它会在 Dependencies 菜单里以红色列出。这种情况下右键点这条红色条目,你可以:
- Install:尝试从 nuget.org 安装。显然这只在该 NuGet 能在线找到时才管用
- Remove Reference:把这个 NuGet 从本文档的依赖中移除
注意你可以用右键选中多条红色条目,然后一次性对它们全部执行安装或移除。
找不到的 NuGet 的几个选项
非托管/原生依赖
有些 NuGet 自带或依赖非托管/原生 .dll,而 vl 没法自动认出它们 —— 因为 NuGet 规范里并没有规定这类文件该怎么处理。所以,要让一个 NuGet 的这类非托管依赖被认出来,眼下你得通过一个批处理文件给 vl 加一条搜索路径,像这样:
SET PATH=%PATH%;c:\path\to\nugets\nativelibs;
vvvv.exe
文件
一个 vl 文档可以引用别的 .vl 文档和托管的 .dll 文件。
来自磁盘
引用本地文件有 3 种方式:
- 按 CtrlShiftE 通过文件浏览器选择文件
- 通过
Document > Dependencies > Files > Add Existing... - 通过
Document > Dependencies > Files > Add New
把一个已有文件添加为依赖
找不到的文件
显示为红色的文件在磁盘上找不到。你可以右键移除或替换它们的引用。
移除或替换文件
右键点一条文件引用可以移除或替换它。注意你也可以用右键连续选中多个文件,然后一次性对它们全部执行 “Remove”。
移除文件
重复引用警告
引用一个 .dll 时,你可能会遇到类似下面这样的警告:

这个警告之所以弹出,是因为 vvvv 已经加载了一个同名文件。
有两种情况会碰上这个:
- 改变加载 .dll 的位置:你先前设过指向这个 .dll 的引用,但此后把它在磁盘上挪了地方,现在想把引用修正到新位置。
- 引用了一个 vvvv 自己已经加载过的 .dll:你正在设一个指向某处 .dll 的引用,但一个同名的 .dll 已经从别处被加载了 —— 多半是 vvvv 自己加载的。
如果你确定那确实是同一批文件、只是位置不同,那就可以无视这个警告。
否则,情况 1 重启 vvvv 应该能解决;但情况 2 你其实没有机会解决 —— vvvv 加载过的 .dll 完全没法更换。如果出于某些原因你需要用比 vvvv 当前所用更新版本的某个 .dll,请到论坛上开一贴说说,我们看看能做点什么。
来自 GAC(全局程序集缓存)的库
.NET 默认自带大量可供引用的程序集。凡是装了 .NET 的机器上,它们都存放在 GAC 里,可以这样从那儿引用:
- 按 CtrlAltE
- 通过
Document > Dependencies > Files > Add .NET Framework Assembly...
在弹出的对话框里,双击你想添加为引用的条目。
在这个窗口里用 CtrlF 查找 GAC 里的库