如何用 C# 编写 NEO 智能合约
chespher
发表于 2022-12-2 02:20:05
69
0
0
4 k! h% U% Z' U' t1 _
VisualStudio2017
0 v5 I7 B6 N3 g/ A* x e" D1 \
VisualStudio下载地址,安装或者更新到最新版
安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:; ?8 v1 w# ]$ \0 j/ k/ g: C
VisualStudio2017安装(勾选.NETCore跨平台开发)
6 Q7 a. O0 j' r" K
VisualStudio安装成功
+ g! @, w7 F8 }( R; r L' U
安装NeoContractPlugin插件+ |7 }' B8 E. d* z
打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):
+ U- o8 g1 h' V) r, ?" {
工具->扩展和更新4 I1 x' w* ~7 J' _9 @: a
联机->搜索“Neo”->下载“NeoContractPlugin”
下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:
关闭VisualStudio->选择“修改”1 u* |' g% a' C: O
8 V9 v: `1 J1 V3 u5 l5 o& x9 P
关闭窗口+ u! a1 s1 T6 B4 @+ M0 `
neo-compiler) o- y0 T) m) z3 W
在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:
" O4 T3 G; E+ i. S7 B( P3 e
文件->打开->项目/解决方案
4 c, b2 U* F& B; N/ a) ~
选择刚刚下载的neo-compiler项目4 U r' C: d! y
3 g& s( U4 B+ J# @8 ~
打开后的界面(右侧)
选中neon
/ A3 e7 d* K! Y7 R
右键->发布1 P+ _2 j2 {: b0 y
1 [4 h1 S, Y* |$ o/ e& @ M* y! l
Configuration和TargetRuntime两个参数根据自己的需要修改并保存; e" y3 \, W m* u! r
; [( G p) c7 b% n* ?3 l- S1 ?2 P
neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog, ^' M' k$ o E) ^$ _
点击发布) {! r7 o$ k4 t; P
4 Q8 i; {% [5 G% [* {/ J$ C
发布成功" v" N& q6 Z4 H" \7 r/ I
, @& p0 V- F; f2 d3 g. E
【注】在发布过程中遇到的问题:1 D% p0 c. K" G' }) m8 h1 y2 O0 x
发布失败8 ?) F" f- Z# _7 H: B$ l
. g9 g% i7 H6 }) q8 H$ g$ R2 d
tmp966A.tmp+ A3 p' ]9 c% D S. x' l1 L% e1 N
咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:9 F; @0 N! O/ ^5 z4 D' C" c s
进入neon目录+ N: L5 f5 n7 V" g4 W( R0 d
运行命令:dotnetpublish-rwin10-x64-cdebug4 L) z7 a3 q# f/ o; h9 Z! n
r参数c参数可以根据你的喜好填写# c& V* t7 A' k1 K
1 n& q5 I( H, d+ F; W4 T
运行命令dotnetpublish-rwin10-x64-cdebug9 e5 a7 X- i& k( h
验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:
2 d5 O {/ [; V( v6 y
C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\
存在neon应用程序文件- w' [6 k7 |4 }
命令运行成功后,重新点击一下“发布”按钮即可。6 t/ d$ }0 ]7 q- V Z2 }
3 [. R* R: Q& k
修改环境变量
发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:* `" j$ f: m( S, X- s9 ?: D
bin\Release\PublishOutput
然后需要添加path,让任何位置都能访问这个exe程序:( V; d6 z" @7 e' V% V: k s ?9 G, _- \
+ O5 p4 \/ e$ K u; J
打开文件资源管理器->此电脑->属性:9 c* O' F6 c$ T* f* h
$ k# |3 D: p# l0 C2 {
计算机->属性
4 g9 m5 @8 z% ]/ `9 M
点击“高级系统设置”,选择“环境变量”:8 s$ w1 B. |( g+ y4 }0 b
高级系统设置->环境变量6 ?/ Y- k0 p3 f v! ~; \$ Y; k% |1 J
环境变量界面- S, F w( b i
选中系统变量中的Path,点击“编辑”:* ~5 M1 D7 D: V0 u1 q9 F
Path->编辑
' ]) O$ f" Z+ Q5 h2 G: i
新建0 W! g: y0 S% T; h1 w2 w
拷贝该路径
( }7 x/ l3 `! E+ l! H
粘贴并确定; P& S# C, m2 J2 c$ M' L
再次确定5 j$ g( x5 _0 I
/ l1 ]/ b! f1 `" p: S; z S
添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:+ A$ C$ S1 F( x4 }
# ~% F* k7 d9 H
验证环境变量是否配置成功! z4 C6 K: G3 B. A1 j- _
创建项目
* P& P7 S8 e0 z' T/ m# f
以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):
# R& a$ w: }' s2 C& q' x1 ~ p' x7 Q
新建->项目$ u+ M8 x" e- J* @* d7 c4 i+ e: N
+ @- p5 S% }* K& L+ U# e/ R
创建NEO智能合约项目2 `& G. b0 v6 { \- L* }, [1 H* D) l
创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:
5 d. L: p/ I7 ]
智能合约c#文件
g8 a0 |& k5 l: S) a
出现错误:新建的NeoContract项目找不到Neo命名空间
解决方法:
在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:
还原NuGet程序包
+ j* k, E/ C% ~$ Q4 h/ x
双击“引用”中的感叹号
7 [# y8 H, H6 B' C$ w X& q5 @
错误解决4 p* e$ Q* O1 G) S2 H+ s) [6 s! p
编译项目6 z2 o1 |& ]$ W- P6 R
点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:
生成解决方案- w, e3 l9 [% n/ o; ^- [% J/ V
编译成功
编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:
智能合约文件(项目名.avm)
成为第一个吐槽的人