4 个版本

使用旧的 Rust 2015

0.1.0 2017年11月25日
0.0.3 2017年8月20日
0.0.2 2017年6月1日
0.0.1 2017年3月13日

#380Cargo 插件

MIT 许可证

67KB
2K SLoC

cargo-nuget 最新版本

将本地 Rust 库打包为 .NET Nuget 包。

构建状态

平台 Rust 版本 DotNet SDK 版本 状态
Linux (Debian x64) / OSX (10.12 x64) 稳定版 (1.18.0) 2.0.0 Build Status
Windows (MSVC x64) 稳定版 (1.18.0) 2.0.0 Build status

进度

  • 为本地目标构建包
  • 作为 cargo 工具发布
  • 为跨平台目标构建包 (仅限于预构建的跨平台库)

安装

$ cargo install cargo-nuget

用法

参见 完整示例

运行 cargo-nuget pack 将尝试将当前目录下本地构建的 crate 打包为 nupkg

$ cargo-nuget pack
$ tree
.
├── Cargo.lock
├── Cargo.toml
├── your_crate.0.1.0-dev.1489461345.nupkg
├── src
   └── lib.rs
└── target

运行 cargo-nuget cross 将尝试将当前目录下跨平台构建的 crate 打包为 nupkg

$ cargo-nuget cross --targets win-x64 linux-x64 osx-x64 --win-x64-path ./target/x86_64-pc-windows-gnu/debug/your_crate.dll --linux-x64-path ./target/x86_64-unknown-linux-gnu/debug/libyour_crate.so --osx-x64-path ./target/x86_64-apple-darwin/debug/libyour_crate.dylib
$ tree
.
├── Cargo.lock
├── Cargo.toml
├── your_crate.0.1.0.nupkg
├── src
   └── lib.rs
└── target

cross 命令需要列出相关的目标以及每个平台的预构建库的路径。这种限制将在未来被移除。

关于完整命令集

$ cargo-nuget --help

过程

这是我们想要支持的基本工作流程

  1. 编写基于 Cargo 的 Rust 库
  2. 填充你的 Cargo.toml crate 元数据
  3. 运行 cargo-nuget 来运行 cargo build 并获取一个包含当前平台开发构建的 nupkg
  4. 将 crate 名称作为 .NET 项目文件中的依赖项引用
  5. 将 crate 名称 DllImport

可能提供一些额外的选项

$ cargo-nuget pack --test
$ cargo-nuget pack --cargo-dir=some-crate/path/
$ cargo-nuget pack --nupkg-dir=some-folder/nuget/
$ cargo-nuget pack --release

关于

这是一个用于将 Rust 库打包为 Nuget 包以便在 .NET 中使用的工具。基本思想是使用本机 Rust 目标进行开发构建并将包写入某个本地源

一般来说,该工具应该

  • 支持典型的Rust和.NET构建管道
  • 工作

为什么使用包?

新的.NET Core包工具是一个很大的改进,比我们以前不得不处理的垃圾要好得多。我认为我们可以以我们以前无法做到的方式支持.NET中使用包的开发工作流程。能够使用包引用原生程序集的好处是,它在开发和实际应用中工作方式完全相同。

依赖项

~7MB
~106K SLoC