如何用 C# 编写 NEO 智能合约
chespher
发表于 2022-12-2 02:20:05
199
0
0
; K" p Z7 l2 @$ F1 ?& n9 C% x
VisualStudio2017/ R- e/ B3 ?4 [2 a: P9 {
, a5 k( K5 K: D6 b6 h3 P) o$ Y n
VisualStudio下载地址,安装或者更新到最新版
安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:
VisualStudio2017安装(勾选.NETCore跨平台开发)
% q8 X3 b/ g/ |: u/ o& c! w% _
VisualStudio安装成功" e+ Y5 Q3 ]5 i, n. i7 ?
安装NeoContractPlugin插件
打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):# L% V2 M2 K {5 d+ F: m0 F1 R
工具->扩展和更新, p$ P! o$ M, I: T6 ~. K
+ ?; L; M1 D! S% J2 _& S
联机->搜索“Neo”->下载“NeoContractPlugin”7 S8 y) v/ U" d3 r
& s2 A* I5 n5 ~
下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:
关闭VisualStudio->选择“修改”% f8 ^3 E! S4 o4 G+ i" y8 v) A9 B. |
关闭窗口9 @5 u& L7 s( I# _3 W8 I
5 a1 l) f" t1 b% w: K; _8 C# L
neo-compiler& x$ a% S& [- O) C1 Y5 o, a) \
在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:
5 T. s6 h1 w& d9 l/ Y
文件->打开->项目/解决方案; q! ^! |0 t( @; t8 m
选择刚刚下载的neo-compiler项目
打开后的界面(右侧)+ j5 ]1 i1 Z: g& k
选中neon
$ X- N9 g) w' a, [
右键->发布3 K( U: @ q2 h( o! v+ m
Configuration和TargetRuntime两个参数根据自己的需要修改并保存
neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog1 o2 ~1 m* }! i* L$ U
% y# }, J3 A2 o) @1 o/ b/ D
点击发布
! I1 M" l& s& _6 r- }1 F
发布成功 C% w/ G% |5 r0 x/ h
& v5 a7 y2 I. }' f- }
【注】在发布过程中遇到的问题:
发布失败. I4 T0 \: X& H3 g0 |+ ^' V6 a
tmp966A.tmp
# s8 q0 ]) D8 @9 A" Y% t# _
咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:
进入neon目录
/ g, T1 r3 ^7 @
运行命令:dotnetpublish-rwin10-x64-cdebug0 O9 D6 q( o; G4 ]$ \
, K: B: L& J1 W
r参数c参数可以根据你的喜好填写0 T' r, Q( {8 e. v" E8 ~3 D: b
. P9 c$ D9 U4 l$ a2 ^7 E3 R
运行命令dotnetpublish-rwin10-x64-cdebug5 b4 A* [) ]) S! J; |
验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:3 [! A1 c( ?; k* b1 s- ], X
7 E, b# p1 I) @
C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\2 {3 `1 T+ Y9 j" \( W
$ z" A' W7 Z: Z, f* E
存在neon应用程序文件
命令运行成功后,重新点击一下“发布”按钮即可。
( A9 o5 x3 G' a
修改环境变量& r. |4 x& d8 P0 n, S% Q
8 e0 _/ U2 I; o# E
发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:1 Q% j9 N4 O2 x3 k$ q( t
bin\Release\PublishOutput" f- u, k: ]8 N( g
然后需要添加path,让任何位置都能访问这个exe程序:% C) T7 L) Z# _6 h& @+ Q! {2 }
打开文件资源管理器->此电脑->属性:- f* `( J" }+ w' e
$ W. A, {1 H/ |9 g2 j, t
计算机->属性
/ y6 A7 i9 Y4 A3 P
点击“高级系统设置”,选择“环境变量”:5 Y3 U8 ^& B% E E' W% d
+ {: i/ I' F% U9 E4 S& |4 J$ x
高级系统设置->环境变量
环境变量界面
2 P# j( |7 V% | C2 B6 c
选中系统变量中的Path,点击“编辑”:
Path->编辑, S( `' R) u8 F2 E; i5 v8 c- J
3 m. A% A# N8 e6 V- o3 n$ O4 \
新建
拷贝该路径
粘贴并确定( r" N1 ^' |& L, V/ i, d2 `$ L
再次确定
添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功: _* ], a$ j! n* K: \5 ^4 x
验证环境变量是否配置成功
创建项目: G: o: ?( w( i
) A$ Y0 P; W& t1 Y; ~; ^
以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):
. O/ @" t$ v6 f+ m. P) W9 E ^
新建->项目
5 M9 W; b' S/ }2 Z
创建NEO智能合约项目. h1 ]3 l3 Y. P5 C
创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:" a" Y: I/ }: E
智能合约c#文件
出现错误:新建的NeoContract项目找不到Neo命名空间
解决方法:% C) a) {2 N% T
1 u. Y4 v) {. s7 o5 W
在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:" b8 q0 a6 O2 J
/ L/ j3 v& N* `/ h3 t& g
还原NuGet程序包
双击“引用”中的感叹号9 `& c4 W" ]+ O, {6 I
错误解决
8 i4 J2 _$ u' ` t$ E
编译项目
点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:
生成解决方案4 R" `! Y& X. |; _- s
编译成功* _1 O' M! i) \; U
编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:
) y' A$ K$ A/ V8 q1 r1 U/ k' |
智能合约文件(项目名.avm)
成为第一个吐槽的人