如何用 C# 编写 NEO 智能合约
chespher
发表于 2022-12-2 02:20:05
70
0
0
$ P& K+ M1 J9 `$ u, C+ k& N! i
VisualStudio20177 M( A9 f' `" Y8 Y- X+ q: v& S
6 m1 X3 ^& z8 o' [
VisualStudio下载地址,安装或者更新到最新版/ G- z5 _2 y1 [3 Q' X- i1 \
1 b' |# U2 _2 S: z
安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:
( x$ m* K/ s* V6 s. Q6 j" |
VisualStudio2017安装(勾选.NETCore跨平台开发)
VisualStudio安装成功 [8 z J$ V% C) R% [9 S: G
安装NeoContractPlugin插件
" o2 u; J3 k# J! R0 g
打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):
工具->扩展和更新+ X5 i1 f% r- X" }: {. A/ K0 C' V
联机->搜索“Neo”->下载“NeoContractPlugin”) K% Q% `8 `. F! N5 ~5 `' C- z% Y
6 E ?+ T, q5 D
下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:! B) h V# O2 g" u: b2 ~4 J! z0 C. D: M
关闭VisualStudio->选择“修改”
关闭窗口: p3 {7 ^% s* j8 d: ~: U
$ n; ]7 M9 E- M7 I+ N6 s- X
neo-compiler3 H* i5 ^7 w7 Y2 u& q; x# j
! |, I: |5 u/ P+ X, p8 V+ i$ N1 U
在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:5 }# `/ P8 Z$ ]1 Y' Q* S/ `8 n
文件->打开->项目/解决方案1 q8 o, i, L0 u/ B3 ~" R) j
/ u$ J8 e( S. n1 n# Z+ K
选择刚刚下载的neo-compiler项目
打开后的界面(右侧)
& M3 |+ M u u: K! {
选中neon
, j" f% q. z* H3 L0 L2 o
右键->发布
2 A8 L! M1 T* r6 Q6 n
Configuration和TargetRuntime两个参数根据自己的需要修改并保存& N) ]* k' J: Y' ^7 n
neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog
点击发布
! ~1 J! m3 m* I. `8 Z( D
发布成功" u) t/ h# Q1 i9 K* [( y
' N# z6 o; Z2 S+ P+ q, x9 e' u
【注】在发布过程中遇到的问题:
发布失败
: j2 s! P z; H* T. Q
tmp966A.tmp$ E- W A) q$ s `$ T
咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:1 b1 K/ { M0 Z( g0 B6 F
进入neon目录
; s0 r7 p$ P3 e5 m% }! I [/ g
运行命令:dotnetpublish-rwin10-x64-cdebug
( o8 y) r- h( \8 V- \! w6 V
r参数c参数可以根据你的喜好填写
运行命令dotnetpublish-rwin10-x64-cdebug
验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:
% B& o; J! r* Z; H; {$ s% I* C
C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\
; R9 K2 V" p/ s
存在neon应用程序文件
命令运行成功后,重新点击一下“发布”按钮即可。
6 E# _2 u- s/ l6 d% L0 C
修改环境变量
发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:
( ]8 K. F0 h. s- c$ ~9 H( n1 B+ g
bin\Release\PublishOutput
7 F# Q9 r, P5 a1 L# u" Q5 H8 \# B
然后需要添加path,让任何位置都能访问这个exe程序:
4 J) `0 a5 ^- o' Y! T
打开文件资源管理器->此电脑->属性:
计算机->属性
+ \& l. W/ p' \: |6 `7 }
点击“高级系统设置”,选择“环境变量”:
高级系统设置->环境变量
环境变量界面# i: k) z A& g) |
% }7 h6 \# O0 k/ B- b( l& K
选中系统变量中的Path,点击“编辑”:+ C2 E* ^' B9 V4 N
Path->编辑9 T3 V. O9 y: ?# @; b
新建& t) O* I. y: j& P# K
6 N+ D4 x" y8 ^9 t+ F( g
拷贝该路径
7 Y g i5 P/ g3 ` t+ U+ @1 |
粘贴并确定4 W5 v$ h* V4 f* ~
7 o9 V) g) F) ^7 T+ u- H
再次确定& A2 S% Q/ H0 w
添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:2 h# R; l# H/ P! q1 h* J9 V d
! \& J2 |/ b5 ~' T
验证环境变量是否配置成功+ ~/ Y% h9 p. d# i* \
创建项目$ i' o- Y% s, A S/ ]. |
/ e8 S5 U }- z. ^) s' k- V. y
以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):
7 {; a/ `& E5 g7 |( w N: z, J/ k, Q
新建->项目# P7 t0 {' C ~7 k
' j1 O* U# @, l& j) B4 z# ~: Q
创建NEO智能合约项目
! }% _% D! V+ d/ J l& e, z/ ^! F
创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:/ R( @9 Q v' A
3 {: ~" E+ R t
智能合约c#文件/ s- @7 h0 D b/ F- ~ T8 \8 [
出现错误:新建的NeoContract项目找不到Neo命名空间
: a9 A5 R$ h2 t3 Z7 ^: K
解决方法:( a+ g! x' c% k% \* Z
在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:
还原NuGet程序包
双击“引用”中的感叹号
+ W* E3 O- f y: @, h0 a2 m2 g1 W; [ {
错误解决4 T6 ^5 F8 a3 z0 k
编译项目/ _$ l" R m" A
点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:2 ~; _7 ^5 a. [. O. |2 A
生成解决方案' H7 ]4 Q# i5 i+ w7 x) Z5 ?
编译成功) G" i8 p9 _1 m
编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:! O! o4 s& d% R f b" D
智能合约文件(项目名.avm)
成为第一个吐槽的人