如何用 C# 编写 NEO 智能合约
chespher
发表于 2022-12-2 02:20:05
193
0
0
VisualStudio2017 R1 V9 U* b' `& c
, G- y6 N( q. i% k5 S$ @
VisualStudio下载地址,安装或者更新到最新版
安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:
VisualStudio2017安装(勾选.NETCore跨平台开发) Y4 l. |2 |8 c0 x. {
VisualStudio安装成功6 @) q1 W/ B; p8 y
安装NeoContractPlugin插件
打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):& l* s2 I2 j% D6 g. ^% X: e+ \
# u. o9 S/ ]5 z" @/ S; \. M* s
工具->扩展和更新
" ~- j0 D2 n6 t& ?0 R
联机->搜索“Neo”->下载“NeoContractPlugin”( ^) w; d B8 F4 O6 d V {
8 v+ c# R1 R8 r: t- G
下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:
关闭VisualStudio->选择“修改”
; H$ ]( y q$ I0 s# I- u0 p
关闭窗口
neo-compiler
在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:. d# v; D2 O; o" O5 }
文件->打开->项目/解决方案& B& T4 ?1 m T5 x
选择刚刚下载的neo-compiler项目
打开后的界面(右侧)
$ t5 ?! O2 X5 q& q& _) Q+ ?5 h
选中neon
右键->发布
Configuration和TargetRuntime两个参数根据自己的需要修改并保存3 i+ k6 Y- Q; h _5 ]+ t1 E9 T
neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog' g0 F. y$ ^8 y0 y
3 n. B" U5 z+ N; u
点击发布8 g1 J, p: G! q
发布成功
【注】在发布过程中遇到的问题:0 m6 y% o& B& ~: S& A% D' @0 ^3 L
发布失败' P2 S4 P, `/ ?) p/ w- k
- }3 y5 k" k5 R1 u s9 v
tmp966A.tmp$ I. g7 A: E( s- y2 o( _ H. M) P# h6 g( ]
咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:
; i7 l T- W/ G A
进入neon目录
运行命令:dotnetpublish-rwin10-x64-cdebug
+ l) B. |3 E$ P" |! c; ^
r参数c参数可以根据你的喜好填写( ~, o. N3 H6 k% i
0 L0 |8 P, Z4 E+ }* a6 d2 G" }5 x: T
运行命令dotnetpublish-rwin10-x64-cdebug( E/ l9 E) q ? ]7 c/ n
. v8 A" e+ e: [
验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:
6 N. N' K9 I7 w% t! {, W3 k" N
C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\4 f9 d: J" p0 h: U
存在neon应用程序文件
0 x# f! i: K0 i* j1 A+ W
命令运行成功后,重新点击一下“发布”按钮即可。
8 a( |6 j# k( K' @6 s9 I$ p, Q7 U
修改环境变量
! I. H" v9 l4 Z2 t+ e% {" w
发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:
* A7 C% t* p% [5 n* C: g# _, b0 P
bin\Release\PublishOutput
2 p$ J/ G! {$ e; M& q# ^. N
然后需要添加path,让任何位置都能访问这个exe程序:8 ]' d( @* v7 v# h+ R# m. ?1 T
3 F2 p8 t0 l( F& X( z
打开文件资源管理器->此电脑->属性:# x" d( v; L; m6 I6 U2 Z
$ i5 s& W8 I2 ~
计算机->属性
点击“高级系统设置”,选择“环境变量”:
; D" e1 \1 I9 b5 x3 |2 Q3 X3 b
高级系统设置->环境变量9 `# {- `, y N4 C# _# q3 N
环境变量界面5 R- [1 T! D( H8 a" V- q. D
选中系统变量中的Path,点击“编辑”:
Path->编辑
新建
+ {/ l6 h8 \2 ]* E% n; z K
拷贝该路径
粘贴并确定
% Z9 A; j3 W8 s/ L
再次确定9 Q* |7 e5 \ k# m2 K" _
添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:2 u6 x9 w8 G& b- G
验证环境变量是否配置成功
创建项目+ P/ Q& h! [; w: p
以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):
6 G- n+ R; y$ r1 a! o, H2 Y
新建->项目
创建NEO智能合约项目
! M, W0 e6 p+ [3 e
创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:% y) ~8 |# I. q, y4 ?1 h) m2 f4 \
智能合约c#文件8 k. X: N+ F2 ^) A1 K
: R. r& p* F1 k9 t
出现错误:新建的NeoContract项目找不到Neo命名空间5 l* G4 m5 K/ d7 D3 y" I' V% F& W
解决方法:
; R# G' a1 q9 W
在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:; `/ b9 y- ]6 v( W6 p
& I( E, d& L4 [1 v/ \5 ^
还原NuGet程序包
双击“引用”中的感叹号
错误解决4 M1 U ~+ ^" ^! K+ q2 ^, C# M2 q
编译项目# \# ?) p7 C. u7 R& d& n, U% [
点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:% \6 V$ \: w' p$ u. k& ?
1 w: q$ w% @9 i
生成解决方案
编译成功! Q* p7 h/ `+ ^% E* `# t; A" k( w
1 L9 J1 w7 }$ {
编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:
智能合约文件(项目名.avm)
成为第一个吐槽的人