如何用 C# 编写 NEO 智能合约
chespher
发表于 2022-12-2 02:20:05
68
0
0
) d: @" l: f2 ]. Y, [% _
VisualStudio2017
/ f/ n9 q, i, V! I+ V
VisualStudio下载地址,安装或者更新到最新版
安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:
VisualStudio2017安装(勾选.NETCore跨平台开发)) h* J9 ?6 d0 ]) D; d% i
VisualStudio安装成功) ?9 K' g* X+ g" B9 ~/ l; R
安装NeoContractPlugin插件
. G. \( o3 |6 M$ g; f, y) I- h
打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):( }9 U+ L9 Y0 F) B- F6 E& o7 Q
9 U# I) W# N9 p1 K% a" g
工具->扩展和更新
& y% v6 n3 T- {5 q
联机->搜索“Neo”->下载“NeoContractPlugin”2 w/ ~$ _3 c" y
5 C; j( N) j$ M! D
下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:
' \' r& {$ p9 J1 }- D/ o6 b1 q" M" y
关闭VisualStudio->选择“修改”
5 u7 U) U! k7 D+ W
关闭窗口
( _8 c- c G N& Q5 f+ v' L
neo-compiler. [" [/ z1 Y' T3 F3 @& |
* u! s8 |4 |. I* `: b( ~$ \6 p$ Q
在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:$ W2 H* K) K+ f u9 \9 c4 s
, Z+ C) l+ ~) Z) a4 h/ M
文件->打开->项目/解决方案
3 f* S/ t5 U3 P; k8 ?
选择刚刚下载的neo-compiler项目
$ Z) ~ e& ^0 C# l
打开后的界面(右侧) W4 q S. N# k# b3 R, y
: F, x+ {1 @$ w1 }
选中neon1 i# P2 `. x8 l* L8 }( T: A
n% y7 ~( V7 K
右键->发布
5 V4 j' O x! A/ v$ p
Configuration和TargetRuntime两个参数根据自己的需要修改并保存
& F% b" f3 F2 j& i
neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog9 r& ?# ^. N) h9 c& r4 d* K* h0 q
( p6 Y: e- F" I
点击发布/ F/ g: {7 F$ M' S, g
发布成功& L, P6 _( Z; f- a4 U
【注】在发布过程中遇到的问题:
发布失败4 [$ _# \# x; J& a( o9 L
tmp966A.tmp
+ m( B" H& S: e0 T4 F
咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:+ w w$ s/ |6 L5 |+ W3 C
, y+ g( G) D% s# A; _5 o; V
进入neon目录; w1 w, @- i" I! I" z! Z
运行命令:dotnetpublish-rwin10-x64-cdebug
r参数c参数可以根据你的喜好填写
运行命令dotnetpublish-rwin10-x64-cdebug1 E! A+ @! p! z g% E
验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:
C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\
存在neon应用程序文件$ o7 J( Z9 }% U- z6 a+ Q' R/ u! e4 ~, `
命令运行成功后,重新点击一下“发布”按钮即可。6 j8 g' X7 r4 ~- j4 D
修改环境变量4 R3 d, G& M, f9 P: m9 K- y) ^. n
" C9 Z' M9 |- Y+ P3 C3 b9 \3 }
发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:
bin\Release\PublishOutput
, n. B: j0 z, h% ]
然后需要添加path,让任何位置都能访问这个exe程序:$ C! X' D. p: v( [" g2 D
打开文件资源管理器->此电脑->属性:
3 |, ?6 m7 @' v3 o- h" L& i& O) t* Q
计算机->属性2 x# o2 F) u- Y h7 B( f
( h4 N/ R) ]' A; P2 w# v: D/ T
点击“高级系统设置”,选择“环境变量”:
- i! ?- `( }8 j
高级系统设置->环境变量
2 w8 u$ B' S3 O
环境变量界面% S+ x' O( }- X: y F# M0 V
选中系统变量中的Path,点击“编辑”:0 O) u: i4 ^' u3 {
Path->编辑
" U1 w! ~ y, P9 j2 [
新建0 A" _* n1 Q. r2 F" C, I
拷贝该路径. m( v$ {- F# U d& m, ]
: O6 D9 B- ]; `" a* ]. \
粘贴并确定
7 C: Z+ }3 K. Q* ^8 C) r0 M" k
再次确定9 Z; ?- c7 T, z9 O- s
添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:! H3 P9 p3 l4 s
2 F0 L* y. _3 W2 `8 ^$ c0 n
验证环境变量是否配置成功3 ]) A' n0 S) v
创建项目8 g X9 U& `3 {
以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):
新建->项目- @! P/ `7 I% O: d7 W* g
% L! y/ X7 j D8 p
创建NEO智能合约项目
1 p2 E) [' j5 k* f1 b8 ~* v8 [
创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:
3 ?5 [% N/ M! w; l! _4 d( n
智能合约c#文件8 }* b/ i: ]6 \7 N
出现错误:新建的NeoContract项目找不到Neo命名空间( [5 A4 o; y3 M1 o& {* H& i
解决方法:% P! }; m, E3 e: ] a& }( q- m1 J
在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:3 ]5 Y d0 ~: u. b5 k/ |
* I" {- c# i: M/ o% f2 G
还原NuGet程序包) y. C g+ ?! \
双击“引用”中的感叹号
错误解决
3 ?4 l6 n" L, o- b
编译项目- i, {9 F6 ]; A6 G3 h% P
点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:
生成解决方案( E5 f/ g8 }' z# J- ?
C" }, q! }* A/ n u
编译成功
编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:
智能合约文件(项目名.avm)
成为第一个吐槽的人