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日 |
#380 在 Cargo 插件
67KB
2K SLoC
cargo-nuget

将本地 Rust 库打包为 .NET Nuget 包。
构建状态
平台 | Rust 版本 | DotNet SDK 版本 | 状态 |
---|---|---|---|
Linux (Debian x64) / OSX (10.12 x64) | 稳定版 (1.18.0) | 2.0.0 | |
Windows (MSVC x64) | 稳定版 (1.18.0) | 2.0.0 |
进度
- 为本地目标构建包
- 作为 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
过程
这是我们想要支持的基本工作流程
- 编写基于 Cargo 的 Rust 库
- 填充你的
Cargo.toml
crate 元数据 - 运行
cargo-nuget
来运行cargo build
并获取一个包含当前平台开发构建的nupkg
- 将 crate 名称作为 .NET 项目文件中的依赖项引用
- 将 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