Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

如何用 C# 编写 NEO 智能合约

chespher
108 0 0
开发工具# e& i9 X* m; E9 `5 L4 z2 B) m
/ z6 x$ |3 `) j- Q
    VisualStudio2017
( W( t4 z1 j3 j. A1 A4 A/ y6 ^. ~" S, z: \
    VisualStudio下载地址,安装或者更新到最新版
  i& J- |1 W0 a9 S2 p
) {( c# c, G0 D+ Q9 ]+ a    安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:+ a2 G5 g1 B, i8 q! i7 Y' `
# u3 k$ f  r1 h* i) n
    VisualStudio2017安装(勾选.NETCore跨平台开发)
/ {) \+ b& I& q; s/ _% V
/ A; ~- I1 u9 a    VisualStudio安装成功
6 B" o3 ?+ S+ U5 M* `( ^, T6 {- w7 |7 @5 e9 {& H5 w
    安装NeoContractPlugin插件# c# |6 u- [* F4 k/ R* g
( c- D% s5 S& b0 F
    打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):1 T6 c, T& S# c. y2 }
3 b- c+ G7 O4 H" t! N5 Y. ^8 M2 k
    工具->扩展和更新
! ^/ b4 h/ b0 c: E1 w, ^
$ |" y6 F, Q/ d7 \    联机->搜索“Neo”->下载“NeoContractPlugin”
+ C& K+ p2 \) t: i9 X
& }  _6 m! q( \2 q- k% a$ E    下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:4 k" X6 t$ T! U' v* ?6 A$ O, i" V& l1 Q

/ S' X6 [. n* E2 O" ?    关闭VisualStudio->选择“修改”8 s5 |2 @/ }6 l3 X
! n/ b$ m) f$ E
    关闭窗口% y% O- h3 c* i$ K7 C# D( Z7 F

* d6 X( c- L" f8 b    neo-compiler' k8 ?' r7 V$ h) |3 G3 s' w

8 \3 q$ c* K5 n3 x8 s6 j    在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:4 i- v0 S- b) ?: B; E, b

0 S; ~- x+ \: S1 m" x; V    文件->打开->项目/解决方案
, W6 @2 y0 {1 C
; g% W! d: K& I' @& y, @    选择刚刚下载的neo-compiler项目
7 Q8 `/ W$ C4 o+ W  I! \; b+ q
7 i9 a* F! Y4 V+ X, K    打开后的界面(右侧)9 n* m: D* ]. o/ \8 u
' q1 K6 g% \, S
    选中neon
' y! A6 H6 i* x: |) O# b/ J* N
- D8 Y5 P0 l2 p/ d" [2 f3 h    右键->发布8 N- v% i. C( d- C

9 V. Q3 b0 E$ c" W$ \8 `    Configuration和TargetRuntime两个参数根据自己的需要修改并保存
& G  R$ p& @7 F: Y5 v: s2 t9 Y
0 u- i# U- F' ^1 p    neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog
& h( M" ]# X1 Y0 ^2 ]6 Y  c9 h5 P4 D5 i3 \3 H. w5 Q) R
    点击发布- d8 w3 v$ s5 S' _: e' j9 T2 w

' j8 G$ P1 @4 z! R. V    发布成功
& p1 X1 J6 l- q  w9 i2 K1 L
2 v1 e6 T& h+ A; S    【注】在发布过程中遇到的问题:/ ~9 G, l* O) a3 B: Z8 F6 F
% q7 x; A: d7 z; u" ?; F
    发布失败3 n" f  O2 Y0 r* l

9 B1 N4 t4 S0 d( S8 h& C& P    tmp966A.tmp. ^0 a/ M% }. I- E
. R6 b$ K& B  {
    咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:
' v% j3 O' W2 @6 @: u/ }  z& J! w9 }0 Q
    进入neon目录
* p* N  [' E; [/ j3 b9 Z* ~
/ q: m" _+ S4 O7 E  v    运行命令:dotnetpublish-rwin10-x64-cdebug8 ]/ Y$ i4 t) _& p$ }' C

9 n9 p5 }6 o. h: N9 h. {    r参数c参数可以根据你的喜好填写7 }8 w" D9 [. x( c* o: v" u6 j

) _( I1 z& j0 s3 J- M. e; C    运行命令dotnetpublish-rwin10-x64-cdebug
3 i# U9 ?4 R/ [/ ~
0 x2 l4 I& ]# C% N- Q" U* U    验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:) n) |3 g$ L6 f- U2 u5 a4 _
6 d4 _; q0 B% u& e
    C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\: C/ _- l- N6 f8 ~8 ^2 B

* I( c! \: z3 N    存在neon应用程序文件
6 j; }* U  i2 Q1 x# q* T. l
" V8 P- {1 p8 X+ B. l) T! X    命令运行成功后,重新点击一下“发布”按钮即可。4 @# R8 @2 U; I5 P. J  E. y" l- @
+ v2 }# |2 l  S
    修改环境变量
9 u+ J8 w2 W7 D$ k7 h' P7 F& h& {
1 |$ {7 O1 n2 Q0 M' S* P1 A& ^    发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:$ ]) Z3 H" Y& y& ]* \

. i6 e0 g, W) Z    bin\Release\PublishOutput
) d& |  ]  x8 e4 J- `: N3 k$ z  C
" C2 Z* K  e, [& i) y4 \$ ^    然后需要添加path,让任何位置都能访问这个exe程序:
+ v( f9 K) J4 A( `
3 r1 H, `7 w, J6 `) G. x    打开文件资源管理器->此电脑->属性:* }# B9 n" G9 U7 p

- K6 P+ k& r2 H% \$ q    计算机->属性
7 E. e& p) I6 g1 \, w( P+ d  _# b5 @! G! [2 |
    点击“高级系统设置”,选择“环境变量”:
7 i0 z2 K- ]0 A6 V
, K! W! L; R* u# p. S5 a( w; S    高级系统设置->环境变量
2 j* d  \% K( I5 t4 v* ]
% c6 q1 j8 ^0 S9 b6 c% p    环境变量界面
$ Y: m2 @' L1 B7 w3 A5 ?8 X" W% r, f/ k8 x1 t4 z% ]" b' J+ ]) c. B
    选中系统变量中的Path,点击“编辑”:
3 w0 }: d7 O, Y" D* R$ \2 I' W5 J& T6 J; q8 J. c! F; s" r
    Path->编辑
/ e: v: Z0 r5 N: _6 W
& x* y; k& n. R    新建7 w0 G6 O: d: `6 `0 J/ ^
- }/ s7 `7 d+ n2 W- M; b% @
    拷贝该路径
5 I$ a2 W; G: M- U
) X: ^( y  r6 o3 S1 k    粘贴并确定; l" ]9 {) C; D) |7 M" M; S

* p2 y2 S( U/ g4 N    再次确定: f3 j2 B+ c: |- m3 `
1 F1 Q6 i5 G) o$ q6 }: ]- y
    添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:. h7 Y7 Z# e6 A7 f. Y2 r

3 i3 m5 t( x7 @    验证环境变量是否配置成功
1 }1 b) c# @7 u3 \1 }
: t$ c0 y" z9 @    创建项目, N# n7 e6 V) g- _

1 S9 V5 ?, T, G0 i    以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):+ X) ?. E# K+ {. U9 p. o% h4 p

4 z( H" B1 K( G1 G& _9 O    新建->项目: l. Z2 p' W8 P, ~7 ?5 j2 }
4 T+ H" ]. n( W% @# d2 H
    创建NEO智能合约项目
. ~0 t, _2 m& y* y; c' X' X6 Y- E& ?- }- S3 U) Q
    创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:( P, [: a* @# C' x# }
; y* [5 }& u0 z8 _1 n! _9 i
    智能合约c#文件
. @( L- k! h4 M1 h3 t
& Y9 Q4 ^3 i! [    出现错误:新建的NeoContract项目找不到Neo命名空间% J$ z+ ]1 O; [( I& E

2 D* m9 t9 h2 ~. N% \) z5 Z3 F    解决方法:
) o  ]$ _* c0 F3 E; [& r2 D9 b. W
    在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:' H# }" W% Y) g

! m& i, I6 V: g: L3 V6 k    还原NuGet程序包
9 U# p0 s7 O7 h( W; ]: H, i; `) @. \) ]/ R
    双击“引用”中的感叹号8 ]) Y2 l7 w5 N3 u

& Z" [% Q6 P& S( O+ D    错误解决0 m) l8 h6 Y( W) z

; p- Q' c5 c7 L2 r' x8 W- `    编译项目
1 ]. ?' q+ c6 D, ^) Q& r' C: [2 X- {$ h
    点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:
, ~& m" j. n- b& y  X! s+ K, A7 C1 p$ [) {2 L/ k" n. b
    生成解决方案0 D1 X7 M, S7 w

6 i/ ]7 ]' F1 |1 w5 I" {2 ~    编译成功
7 K. s% Q! d8 h! t& z& j: t( d% P* i; t$ t( s# H
    编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:
  @- ~* z- |  K3 B8 f) H' G0 N8 ]5 O, v
    智能合约文件(项目名.avm)
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

chespher 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2