如何用 C# 编写 NEO 智能合约
chespher
发表于 2022-12-2 02:20:05
108
0
0
/ z6 x$ |3 `) j- Q
VisualStudio2017
4 A/ y6 ^. ~" S, z: \
VisualStudio下载地址,安装或者更新到最新版
安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:+ a2 G5 g1 B, i8 q! i7 Y' `
# u3 k$ f r1 h* i) n
VisualStudio2017安装(勾选.NETCore跨平台开发)
VisualStudio安装成功
6 {- w7 |7 @5 e9 {& H5 w
安装NeoContractPlugin插件# c# |6 u- [* F4 k/ R* g
( c- D% s5 S& b0 F
打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):1 T6 c, T& S# c. y2 }
3 b- c+ G7 O4 H" t! N5 Y. ^8 M2 k
工具->扩展和更新
联机->搜索“Neo”->下载“NeoContractPlugin”
下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:4 k" X6 t$ T! U' v* ?6 A$ O, i" V& l1 Q
关闭VisualStudio->选择“修改”8 s5 |2 @/ }6 l3 X
! n/ b$ m) f$ E
关闭窗口% y% O- h3 c* i$ K7 C# D( Z7 F
neo-compiler' k8 ?' r7 V$ h) |3 G3 s' w
在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:4 i- v0 S- b) ?: B; E, b
文件->打开->项目/解决方案
选择刚刚下载的neo-compiler项目
打开后的界面(右侧)9 n* m: D* ]. o/ \8 u
' q1 K6 g% \, S
选中neon
右键->发布8 N- v% i. C( d- C
Configuration和TargetRuntime两个参数根据自己的需要修改并保存
neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog
9 h5 P4 D5 i3 \3 H. w5 Q) R
点击发布- d8 w3 v$ s5 S' _: e' j9 T2 w
发布成功
【注】在发布过程中遇到的问题:/ ~9 G, l* O) a3 B: Z8 F6 F
% q7 x; A: d7 z; u" ?; F
发布失败3 n" f O2 Y0 r* l
tmp966A.tmp. ^0 a/ M% }. I- E
. R6 b$ K& B {
咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:
z& J! w9 }0 Q
进入neon目录
运行命令:dotnetpublish-rwin10-x64-cdebug8 ]/ Y$ i4 t) _& p$ }' C
r参数c参数可以根据你的喜好填写7 }8 w" D9 [. x( c* o: v" u6 j
运行命令dotnetpublish-rwin10-x64-cdebug
验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:) n) |3 g$ L6 f- U2 u5 a4 _
6 d4 _; q0 B% u& e
C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\: C/ _- l- N6 f8 ~8 ^2 B
存在neon应用程序文件
命令运行成功后,重新点击一下“发布”按钮即可。4 @# R8 @2 U; I5 P. J E. y" l- @
+ v2 }# |2 l S
修改环境变量
发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:$ ]) Z3 H" Y& y& ]* \
bin\Release\PublishOutput
然后需要添加path,让任何位置都能访问这个exe程序:
打开文件资源管理器->此电脑->属性:* }# B9 n" G9 U7 p
计算机->属性
+ d _# b5 @! G! [2 |
点击“高级系统设置”,选择“环境变量”:
高级系统设置->环境变量
环境变量界面
8 x1 t4 z% ]" b' J+ ]) c. B
选中系统变量中的Path,点击“编辑”:
8 J. c! F; s" r
Path->编辑
新建7 w0 G6 O: d: `6 `0 J/ ^
- }/ s7 `7 d+ n2 W- M; b% @
拷贝该路径
粘贴并确定; l" ]9 {) C; D) |7 M" M; S
再次确定: f3 j2 B+ c: |- m3 `
1 F1 Q6 i5 G) o$ q6 }: ]- y
添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:. h7 Y7 Z# e6 A7 f. Y2 r
验证环境变量是否配置成功
创建项目, N# n7 e6 V) g- _
以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):+ X) ?. E# K+ {. U9 p. o% h4 p
新建->项目: l. Z2 p' W8 P, ~7 ?5 j2 }
4 T+ H" ]. n( W% @# d2 H
创建NEO智能合约项目
; c' X' X6 Y- E& ?- }- S3 U) Q
创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:( P, [: a* @# C' x# }
; y* [5 }& u0 z8 _1 n! _9 i
智能合约c#文件
出现错误:新建的NeoContract项目找不到Neo命名空间% J$ z+ ]1 O; [( I& E
解决方法:
; [& r2 D9 b. W
在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:' H# }" W% Y) g
还原NuGet程序包
, i; `) @. \) ]/ R
双击“引用”中的感叹号8 ]) Y2 l7 w5 N3 u
错误解决0 m) l8 h6 Y( W) z
编译项目
) Q& r' C: [2 X- {$ h
点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:
+ K, A7 C1 p$ [) {2 L/ k" n. b
生成解决方案0 D1 X7 M, S7 w
编译成功
& z& j: t( d% P* i; t$ t( s# H
编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:
' G0 N8 ]5 O, v
智能合约文件(项目名.avm)
成为第一个吐槽的人