如何用 C# 编写 NEO 智能合约
chespher
发表于 2022-12-2 02:20:05
122
0
0
, ^0 p! V4 I0 W# ]) c$ |2 d
VisualStudio2017: @" |/ f$ x Y
( V3 m7 D- Q1 e) V4 q
VisualStudio下载地址,安装或者更新到最新版) z8 ^4 y; P# Z' q6 B
* h: c5 r! a/ f: v7 ~4 E# w* P
安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:
& H' Y( }3 u: N7 g0 N
VisualStudio2017安装(勾选.NETCore跨平台开发)
X! `& B3 b$ b7 H/ p# }
VisualStudio安装成功
安装NeoContractPlugin插件. I, I1 X- Z9 a. u. s. C
打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):
, ~3 t" Y$ Y J, m2 L
工具->扩展和更新3 f% s) D* b) L+ G
联机->搜索“Neo”->下载“NeoContractPlugin”" p; B; S& Q# l
下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:
关闭VisualStudio->选择“修改”
4 D; N9 r& M% ^; c& i
关闭窗口
' R: @0 a# p+ K% ?" S& w
neo-compiler* M4 X! g+ }# L# r3 @( F1 g$ ]: y
在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:- n3 ]) U* F: w8 o2 B! i/ M N( _
文件->打开->项目/解决方案! D& S/ ?: l/ b' z3 @5 u) F
选择刚刚下载的neo-compiler项目. P) {, G9 @$ Z5 q$ {9 W" h3 ~
打开后的界面(右侧)
/ t5 J- ?6 a# { ^
选中neon
# T4 n: f1 ~) D9 A) I" |7 S
右键->发布4 v: U" X1 I) ?5 ?; z
$ |( S3 K9 a+ R% G1 i, v
Configuration和TargetRuntime两个参数根据自己的需要修改并保存
& a% O% R3 C1 X9 k5 j
neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog5 y9 i5 z, L6 } W7 n) w R. o2 ]
点击发布4 h5 g7 D5 G4 F' _; H
发布成功
0 D% C. r; H0 h) Y' F
【注】在发布过程中遇到的问题:
% d1 z: \9 a# o& f
发布失败9 ~' r# F( i5 l% m! G
, a* Z M) x- `; p- Z3 e
tmp966A.tmp
0 g* K# p8 F5 K1 C/ n
咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:
进入neon目录
运行命令:dotnetpublish-rwin10-x64-cdebug) _8 }. K5 f2 U2 D5 H
r参数c参数可以根据你的喜好填写
4 [0 V9 Y5 J# L) O
运行命令dotnetpublish-rwin10-x64-cdebug
验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:
1 {: n b( [- \, }$ A7 L6 j% O7 Y
C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\
存在neon应用程序文件
9 i, h8 B, U+ m
命令运行成功后,重新点击一下“发布”按钮即可。
修改环境变量
) w8 i! q, p$ O; i
发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:6 z- W( H# _0 r! F
, ^( S2 j |2 _: r- K
bin\Release\PublishOutput
然后需要添加path,让任何位置都能访问这个exe程序:
2 H$ \" U. o% h' c7 u% U2 v) r
打开文件资源管理器->此电脑->属性:
计算机->属性8 y$ E* j1 M$ t- F+ q2 {
* W# k1 O6 G( U# r2 c4 @) [ n3 b
点击“高级系统设置”,选择“环境变量”:
高级系统设置->环境变量
! Q& H4 w# v" r/ ^0 w
环境变量界面" L _( a5 g+ e9 |4 F2 g2 ~
选中系统变量中的Path,点击“编辑”:
Path->编辑
" |0 g' \( w) E3 M4 r. x6 z
新建5 q* k7 C) F& Z# d" Z! t" X! i
拷贝该路径
4 y* L5 e! J% r2 ^ w
粘贴并确定$ S1 `/ P& j: a. K
' E. \7 }# n4 @ M J3 ~
再次确定
, L+ [$ u. G! l/ B& A/ t
添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:& H9 v- x- ^% V0 ^; O8 {
验证环境变量是否配置成功( `: O( x! v: j k3 b- h: ]
$ {& ]" Y8 s! i' F/ c+ ?4 X. K
创建项目
" I. i F% i' F$ E6 b* W+ d
以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):
' _7 n9 e, h( l' @6 A0 W: M
新建->项目
/ b1 O6 l5 u5 X! I/ X" b
创建NEO智能合约项目
创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:
. R# |* w; A& I( U
智能合约c#文件
R! R* Y+ \* W8 ]' A
出现错误:新建的NeoContract项目找不到Neo命名空间. F# t' N; d7 Z" N) g3 D
解决方法:- n, C: C$ q# b4 b. j H# p
在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:
还原NuGet程序包
双击“引用”中的感叹号- U5 K1 M; G/ k6 {7 j9 b6 c
0 w# C4 ^7 A6 A# O" m( G6 m2 t: v! q
错误解决6 K7 ]0 t6 Y4 Y# z! `
编译项目
W2 ]! N( a. G/ n0 y$ M5 I2 j
点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:7 W3 ]& M6 a5 {( M7 A: o0 k: H- \
生成解决方案
编译成功
编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:4 G5 ] I; {! `7 a" \! K5 G) P
" H5 m, P- C5 Q7 |7 I D( q/ X
智能合约文件(项目名.avm)
成为第一个吐槽的人