如何用 C# 编写 NEO 智能合约
chespher
发表于 2022-12-2 02:20:05
194
0
0
VisualStudio20176 T) e# d0 H, @8 ^1 s! Q- b7 o
VisualStudio下载地址,安装或者更新到最新版
9 ]1 q2 Y9 A" z$ ~, U; J5 L
安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:
- q! v. p( Y- N2 J; [
VisualStudio2017安装(勾选.NETCore跨平台开发)
VisualStudio安装成功: ]) R5 a7 e9 ~) j
安装NeoContractPlugin插件* U. a1 t7 t8 p! i) e" J
打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):+ y b A8 _; y2 O! z7 y: T
9 t$ a4 H2 e! T! D
工具->扩展和更新
联机->搜索“Neo”->下载“NeoContractPlugin”& h, b6 ]" R$ O. W. W6 c
y; w& v7 K1 N, C
下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:
; J. j9 E4 M% x `# _5 z; f
关闭VisualStudio->选择“修改”! u3 i, ^8 E- N& g
7 S3 f2 t7 Z S! e6 C2 V8 j
关闭窗口) H/ s, i1 F/ e0 K: D/ }' J
neo-compiler& A, X( Y8 e4 o1 Z: v( I
在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:; S( b5 w' q. r. \8 P5 d4 ~ Y
0 ~4 s+ ?- {! i) r
文件->打开->项目/解决方案
/ q2 w% b$ k, @+ `1 |" ?" @& G
选择刚刚下载的neo-compiler项目' r d% g' F+ v
打开后的界面(右侧)$ E8 ]8 o0 }, d/ a3 e
) E& Q5 M! C6 O; T8 T: B/ F7 u
选中neon
8 U/ S i) J1 ? N& @2 o
右键->发布) ?# g |$ _3 s6 D8 l) @% y
Configuration和TargetRuntime两个参数根据自己的需要修改并保存3 K: }0 {! |% ] u7 w% h8 J
& _, _! s& Y7 q6 q1 \" L
neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog" P' c% a K( T1 D
点击发布6 i/ g: V- u! \- P m
" r" D# T. b( q5 H n
发布成功6 k5 T8 ~8 X3 P
! s: H' V8 i t* J) k# f$ V" _
【注】在发布过程中遇到的问题:$ ^" r% I6 E# Y- ?& S
1 {# J5 W0 ~$ n8 f0 C0 ]
发布失败
tmp966A.tmp& s) ^1 u1 j1 ` U- p- V7 e
) t* _; z# \; k
咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:
进入neon目录: j6 o5 M7 m& l% F1 c
# }: j$ r2 z1 u! W4 y2 h
运行命令:dotnetpublish-rwin10-x64-cdebug% o6 x- _9 m w
r参数c参数可以根据你的喜好填写$ R5 b% ?8 s l9 ~9 |
1 ~; }0 [3 p* V m. Q
运行命令dotnetpublish-rwin10-x64-cdebug
1 t) H9 z/ ?! ~) G6 m
验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:0 r2 A; k S5 R/ R+ s! E, V
C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\
- |0 g) A5 _+ K3 s
存在neon应用程序文件
( b# Q8 F, J7 u: g. P
命令运行成功后,重新点击一下“发布”按钮即可。
$ ?& @, d7 q' s" E
修改环境变量
发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:
4 ^, y) H5 z) l, ^6 x/ ]7 o
bin\Release\PublishOutput
- [+ R1 u( ^5 n x3 U& |. o* {3 h
然后需要添加path,让任何位置都能访问这个exe程序:; Q0 B8 \2 ^- Q1 l0 I
; |$ h3 m9 J% J0 E
打开文件资源管理器->此电脑->属性:
/ Q0 E" i7 Q+ b6 j* K
计算机->属性
2 N. `( O) q; r
点击“高级系统设置”,选择“环境变量”:
高级系统设置->环境变量
Z( u$ `, C6 ]- U# }
环境变量界面) c$ `* M6 {' I9 G- v5 W
选中系统变量中的Path,点击“编辑”:
j* Z1 k2 M( M# i
Path->编辑# U- f; c' o2 g
新建6 O' j$ t$ T7 [) }6 {* o* _
, i% ~8 d* q8 x; ~9 J
拷贝该路径$ x% F4 g+ {! B- U- Q' D
5 o6 h/ `' {$ |
粘贴并确定
再次确定
添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:
验证环境变量是否配置成功, l2 G4 W) c% K
" N q. e t9 ~3 o/ w- {
创建项目9 S" T; _; I5 M' c" T. W& l ], O
以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):5 z$ V4 ?. L. d# D$ c, G
新建->项目
创建NEO智能合约项目4 ]& t# L& N" A1 O1 r
创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract: Q* N0 I5 b! g; L) q$ v
( G; d+ j' R6 [& t' r( G1 l
智能合约c#文件6 J" G- h$ v% f: L
出现错误:新建的NeoContract项目找不到Neo命名空间
解决方法:. v d& M0 u) E& B: ~( s1 E1 y
& c0 k" A8 F- P. ^
在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:
8 l: N! I/ \8 z
还原NuGet程序包3 T& q8 y/ b$ A/ p* C. L4 [
+ V% @* f$ N& p7 ]
双击“引用”中的感叹号
* s- ^9 T; K. c% m2 Y. @
错误解决9 Y3 R% z/ _# }6 Q% A+ u, T3 O
编译项目
+ F* P' L _# I1 v# D F' _% C
点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:
生成解决方案
# @1 K- R5 m3 X4 D
编译成功
! p1 u0 Z% F$ r: B o
编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:: ?" {4 p+ a( {: z
j5 P& c1 o! B. s' f$ r
智能合约文件(项目名.avm)
成为第一个吐槽的人