如何用 C# 编写 NEO 智能合约
chespher
发表于 2022-12-2 02:20:05
63
0
0
4 _+ y' q. R# \+ ^# c2 \ g' C
VisualStudio2017
VisualStudio下载地址,安装或者更新到最新版
安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:
* N# P4 Q: G. V3 d
VisualStudio2017安装(勾选.NETCore跨平台开发): G. h3 A( @# a5 X; J; z2 H4 u' t
VisualStudio安装成功5 p( M0 I' w2 l
% M3 a. `3 V+ ~8 Q
安装NeoContractPlugin插件; [ f7 |; {8 w& m- z
打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):8 ^& x; ] e4 u
工具->扩展和更新 D3 p4 Q( @! r) O8 C2 G
联机->搜索“Neo”->下载“NeoContractPlugin”
4 ~% K0 U; @0 ?) {: A/ J
下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:
+ f* L# E8 ]3 V: q7 B9 A5 v+ Q. J0 g% \
关闭VisualStudio->选择“修改”8 G3 b7 ^' n1 L; t4 i# O
6 J8 }. {2 Q: ]2 _& l; T
关闭窗口
3 g& q0 T1 o% B! M5 C- l+ c/ h
neo-compiler9 p" V% a# z: c& i, }$ Q7 x( h
在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:
' w) i; s" t0 U- w# @' v! n
文件->打开->项目/解决方案6 c5 G' ~1 Z4 r8 J+ a
选择刚刚下载的neo-compiler项目
: s5 u& A7 n" Z& z1 |
打开后的界面(右侧)' v0 v$ t+ J+ ~' ]9 Y
选中neon
右键->发布
, ]4 `. K7 ]) F/ Y
Configuration和TargetRuntime两个参数根据自己的需要修改并保存* [, S- g% V8 r6 z0 e/ u
: E# \, e$ o) R, R7 m0 s+ N s
neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog) g9 Y/ C( n. J1 J9 H
" ]5 S! G5 s; _ v o
点击发布3 i* H3 h/ a1 u1 J1 p1 E+ U h
# f; S9 G/ j% O% W% ?/ i
发布成功8 p7 Z! o/ D- X0 p6 [" G, n3 R) H
+ E% v; t/ ]* U# X$ N* l Z: a0 A
【注】在发布过程中遇到的问题:
发布失败# M6 S |4 M' R+ T! A0 j4 M8 b' @
tmp966A.tmp
9 s1 T, B3 n& M$ r. L, c7 I
咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:
$ `5 s. V( c" Z) ^
进入neon目录
运行命令:dotnetpublish-rwin10-x64-cdebug
r参数c参数可以根据你的喜好填写
$ d# `" R& n j) f9 R. R$ D
运行命令dotnetpublish-rwin10-x64-cdebug
验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:6 _8 W6 ^6 Z# c* n
. u5 y2 Y/ Z9 P
C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\/ O- R7 V$ I: O4 ~2 \
存在neon应用程序文件/ e8 j* J# s8 t- d
命令运行成功后,重新点击一下“发布”按钮即可。
+ J$ a* a: i7 I7 [0 ]
修改环境变量
) f# b! x6 e* Z! }" ^) {# O
发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:
bin\Release\PublishOutput
$ e8 }" p/ _; I& U
然后需要添加path,让任何位置都能访问这个exe程序:- M& K2 h! T3 [$ e( |4 U6 ^( i
打开文件资源管理器->此电脑->属性:
计算机->属性- k. Z v0 q8 D
点击“高级系统设置”,选择“环境变量”:7 _. t0 m4 L9 h" g2 G* g9 N
高级系统设置->环境变量 e. Z) k7 z0 R
环境变量界面3 T7 J2 |* _. c- O, R" q( j
7 Y9 O% N7 F% R7 R9 i
选中系统变量中的Path,点击“编辑”:- G) v' L# h/ T9 L* j9 A
Path->编辑
新建
9 O6 E6 P) Z( s, s5 b
拷贝该路径
, c2 z, L }# E: L( S; U
粘贴并确定
再次确定0 r) Y3 { }9 G- h' c- C
: J. j% l, `: e! G$ }5 T
添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:
验证环境变量是否配置成功
创建项目
" W$ x$ o4 r- H. S( w8 r( P
以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):
( B6 |6 ?! ]9 w
新建->项目* \. V+ t* R& F+ ~: H
& o# ?% W' M H# Q6 C5 x' _
创建NEO智能合约项目
创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:: y: {3 r7 I B. m
智能合约c#文件
7 W7 c6 e& q8 z9 O$ C" N1 G; `2 ~/ X
出现错误:新建的NeoContract项目找不到Neo命名空间
解决方法:
G1 T7 j9 R; o2 t" ]* u* E6 F- H
在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:5 b! Y. R1 C+ q" ~/ N
还原NuGet程序包
$ [. W7 \6 [: @
双击“引用”中的感叹号7 x2 ~: Q3 r4 h) N
错误解决
! z3 G- ]" q* r1 u, z' a' f
编译项目
8 C& Q* |6 K) F& S* T
点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:5 j6 p$ ?* Z A0 E) M- a, w* q
生成解决方案' `4 R/ L; l% `* h
编译成功
: B/ m) l& i/ r8 \2 K
编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:
4 H+ Y: @' D# d1 V* I* s
智能合约文件(项目名.avm)
成为第一个吐槽的人