如何用 C# 编写 NEO 智能合约
chespher
发表于 2022-12-2 02:20:05
165
0
0
VisualStudio2017
; i' n# k" e1 y. |0 n
VisualStudio下载地址,安装或者更新到最新版( M$ F% \( F6 j1 `! `
安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:: C1 W6 a' O! a
$ Z% Z7 Q& j h0 i: ~, f) i
VisualStudio2017安装(勾选.NETCore跨平台开发)+ ?/ F' q( K" o8 V) ]
VisualStudio安装成功
安装NeoContractPlugin插件
打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):; i% M2 m( s- G
工具->扩展和更新
联机->搜索“Neo”->下载“NeoContractPlugin”9 a; o1 g1 \2 E g7 G
- ?4 t3 v3 j0 {% o% F
下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:4 C* N: Y, Q( |: y' V
9 x+ G5 z& n( O' k8 X( ]
关闭VisualStudio->选择“修改”
' E3 y: |3 G1 k8 q' K# Q6 q
关闭窗口
neo-compiler( H& ~: x. [( ?7 e! \% P" F$ X% c
4 H+ V* H/ h! S# z- x" B3 d
在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:
文件->打开->项目/解决方案
+ Z9 \. K' T6 J
选择刚刚下载的neo-compiler项目
打开后的界面(右侧); E' [( g) ]3 Z0 M# l
6 k& B3 K1 k3 i; @+ `5 w" B1 c+ F! h
选中neon) o+ x( G: J7 R1 [; D3 {6 `
, S* }3 h' r/ p3 {
右键->发布9 l' c+ E$ w$ p+ V! K8 g. l
Configuration和TargetRuntime两个参数根据自己的需要修改并保存2 ]: A9 m9 S+ V
neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog+ P y- e; |* H: _( `* u/ l
点击发布
发布成功
$ F0 a$ e7 a8 i8 y$ o ^' e2 l
【注】在发布过程中遇到的问题:
发布失败
; | a7 e0 v+ \% U
tmp966A.tmp/ Q. ]2 i0 {( J/ m" c! Z8 Z
咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:
5 o/ } s0 F2 Z. i* [
进入neon目录
运行命令:dotnetpublish-rwin10-x64-cdebug
r参数c参数可以根据你的喜好填写
运行命令dotnetpublish-rwin10-x64-cdebug! S, `' V7 q& ^! Q" P
验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了: S7 }7 N7 J3 u v) A
1 q) u3 k; J! Z, V: Q
C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\2 T b! t5 s# O
9 u# I* w. ?# v
存在neon应用程序文件
9 Q( @0 n$ H+ M, A$ \6 P, G
命令运行成功后,重新点击一下“发布”按钮即可。
修改环境变量8 f0 U; L$ ?) J- `2 }( o- {- A
# s8 D, U6 z& v8 O$ a
发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:, _* s l7 B0 R5 j9 x# g
bin\Release\PublishOutput$ W! t+ }5 X M6 y% G- G
然后需要添加path,让任何位置都能访问这个exe程序:1 }+ ~0 w& H) w* [# l' j+ N
打开文件资源管理器->此电脑->属性:* i: X- }# E2 d/ ?1 g
7 N1 x# m# f' I8 G# ]4 A; ?, A& d1 t
计算机->属性
点击“高级系统设置”,选择“环境变量”:
' Y( d/ |' T+ M( K+ G+ z
高级系统设置->环境变量5 g' }& D) p) V1 n/ N# V
& g* y% K9 }) Q" S
环境变量界面% z7 d) S! M0 z; o& J& m
选中系统变量中的Path,点击“编辑”:
Path->编辑
7 j6 \/ ~" X; c! b6 T5 P
新建9 F# N8 D5 U4 |8 B* y
" y" f0 X0 M @ n. S E+ R
拷贝该路径
粘贴并确定9 M1 g0 T$ U, ]( A" ?* z: u
" ~1 j( T, U/ C( Z
再次确定
添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:1 r/ v! {' Z7 `) [4 z
6 u% [8 g" U$ C0 U! |
验证环境变量是否配置成功
2 z" D7 z) U% T7 ]- G
创建项目7 w$ z% B a# l3 f
以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):: u0 Z9 X& n; Q8 l2 n! b
/ G& _/ y, k9 ~
新建->项目% l( p9 ]! L/ F3 T7 l8 k' X
6 T6 e( A K \8 R+ e
创建NEO智能合约项目6 _5 p4 p( O' Q! D4 H
创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:& s1 f6 |2 _2 W, l# V0 L3 G
智能合约c#文件
+ a7 z$ Z: x, F8 j p
出现错误:新建的NeoContract项目找不到Neo命名空间& E3 k# D* w9 j9 Q+ l! c) e' T
解决方法:% r1 b% Z, P$ g' v* s
- @( J5 M: ]0 n" M# ~" h6 ?7 H
在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:- W( ], I6 B# p U& ?4 Z
还原NuGet程序包
s) o/ \- X s% _1 h% L
双击“引用”中的感叹号$ f% G7 J$ E. V( t3 Y; Z
错误解决( ?, F: C1 F( Q$ t
编译项目
点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:0 O( ~" u9 z: {; V7 N( q& P8 |) S
' b6 i! L: L; K- Y) B- D
生成解决方案! W* o8 r/ J. a! G
编译成功
编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:
智能合约文件(项目名.avm)
成为第一个吐槽的人