Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

chespher
165 0 0
开发工具" M8 p$ }: H: e- ~; D1 O' \' e8 @

9 E5 _+ Q% g$ O. e    VisualStudio2017
5 s7 m- t6 E2 W, R' {& C; i' n# k" e1 y. |0 n
    VisualStudio下载地址,安装或者更新到最新版( M$ F% \( F6 j1 `! `

8 k1 `' v- a6 T    安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:: C1 W6 a' O! a
$ Z% Z7 Q& j  h0 i: ~, f) i
    VisualStudio2017安装(勾选.NETCore跨平台开发)+ ?/ F' q( K" o8 V) ]

( T4 d- z% d& n& `    VisualStudio安装成功
( F& z5 K+ B+ {- o. p0 r
9 e- t5 |4 a5 L. {% S' f    安装NeoContractPlugin插件
3 z' C& U0 z& W  j
2 P9 C# }* p& F. f: T. _1 k5 y    打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):; i% M2 m( s- G

6 N+ ]( X, M+ P& r" q7 W    工具->扩展和更新
, }( r) N+ x: _4 {7 p2 o. c6 F
1 G9 A2 s' V  O0 s9 A, d    联机->搜索“Neo”->下载“NeoContractPlugin”9 a; o1 g1 \2 E  g7 G
- ?4 t3 v3 j0 {% o% F
    下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:4 C* N: Y, Q( |: y' V
9 x+ G5 z& n( O' k8 X( ]
    关闭VisualStudio->选择“修改”
. L: Q; T  E7 y& J+ f' E3 y: |3 G1 k8 q' K# Q6 q
    关闭窗口
3 T1 R5 w6 Y% f! c: D5 T( D8 e8 C8 o' H
6 Z* u& O/ T* c! O6 u$ h    neo-compiler( H& ~: x. [( ?7 e! \% P" F$ X% c
4 H+ V* H/ h! S# z- x" B3 d
    在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:
9 F: t& A- c- v# M' j3 o5 j
% V: X" j9 y- D- P    文件->打开->项目/解决方案
, A& Z; b+ c4 }  N8 m3 {+ Y+ Z9 \. K' T6 J
    选择刚刚下载的neo-compiler项目
5 y2 X8 A- H. f7 ^  b- p
7 D1 ?1 V  T3 s$ L- t    打开后的界面(右侧); E' [( g) ]3 Z0 M# l
6 k& B3 K1 k3 i; @+ `5 w" B1 c+ F! h
    选中neon) o+ x( G: J7 R1 [; D3 {6 `
, S* }3 h' r/ p3 {
    右键->发布9 l' c+ E$ w$ p+ V! K8 g. l

; A1 t; W+ p- B' k8 R    Configuration和TargetRuntime两个参数根据自己的需要修改并保存2 ]: A9 m9 S+ V

, B' k. C  z: g* s    neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog+ P  y- e; |* H: _( `* u/ l

/ n& X) \- Z  m    点击发布
8 {- q# M5 b: V: R1 F" B/ u% d. t
4 M, U8 a$ _! |    发布成功
& U4 y/ \! m3 {# K$ F0 a$ e7 a8 i8 y$ o  ^' e2 l
    【注】在发布过程中遇到的问题:
7 Z0 Z0 H1 p! \; h' Z
" f  q' s) a' b( V    发布失败
; {; z0 Q) Z& B" |  b; |  a7 e0 v+ \% U
    tmp966A.tmp/ Q. ]2 i0 {( J/ m" c! Z8 Z

' |6 [0 ], \4 n    咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:
, X8 \# T0 U2 e, O6 {5 o/ }  s0 F2 Z. i* [
    进入neon目录
: Z; F) E- f9 p+ \2 c
5 d* ], ]/ M) G' b6 q0 j, a    运行命令:dotnetpublish-rwin10-x64-cdebug
0 I" }  f& ]1 l! S/ |7 F
2 A) @) Y+ ]! R* e    r参数c参数可以根据你的喜好填写
) `( F: _6 j# ?/ t& J( S
. [! X) \& m6 p# q5 C$ ^) ?2 k    运行命令dotnetpublish-rwin10-x64-cdebug! S, `' V7 q& ^! Q" P

5 `3 k0 x2 J, ?    验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:  S7 }7 N7 J3 u  v) A
1 q) u3 k; J! Z, V: Q
    C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\2 T  b! t5 s# O
9 u# I* w. ?# v
    存在neon应用程序文件
- ~6 x, y0 X/ J( h* f, g: S9 Q( @0 n$ H+ M, A$ \6 P, G
    命令运行成功后,重新点击一下“发布”按钮即可。
3 k1 _9 C3 q) e  E
9 o" d/ G# K9 J" ^' M: m    修改环境变量8 f0 U; L$ ?) J- `2 }( o- {- A
# s8 D, U6 z& v8 O$ a
    发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:, _* s  l7 B0 R5 j9 x# g

; _1 w2 N6 z) I! x! E7 ~* W6 i: h6 K    bin\Release\PublishOutput$ W! t+ }5 X  M6 y% G- G

7 O% l9 U: ]/ s: e3 Q# h    然后需要添加path,让任何位置都能访问这个exe程序:1 }+ ~0 w& H) w* [# l' j+ N

$ {9 }9 v4 ?& s+ N* |' g$ h4 j7 c    打开文件资源管理器->此电脑->属性:* i: X- }# E2 d/ ?1 g
7 N1 x# m# f' I8 G# ]4 A; ?, A& d1 t
    计算机->属性
, F& c% _' k/ z
" S! r% D2 P' K. w$ |1 l( p  x    点击“高级系统设置”,选择“环境变量”:
( _2 g. R0 C" X5 ?" Q' Y( d/ |' T+ M( K+ G+ z
    高级系统设置->环境变量5 g' }& D) p) V1 n/ N# V
& g* y% K9 }) Q" S
    环境变量界面% z7 d) S! M0 z; o& J& m

/ n9 L4 P, E7 p% t    选中系统变量中的Path,点击“编辑”:
! D, G% v& i, ?
# T- w; U+ ]4 X- E    Path->编辑
/ W0 Y! U0 F! ?  m7 j6 \/ ~" X; c! b6 T5 P
    新建9 F# N8 D5 U4 |8 B* y
" y" f0 X0 M  @  n. S  E+ R
    拷贝该路径
& h; r" k' b- N. I
* ?! \; P- N# H% T& ]* s( I    粘贴并确定9 M1 g0 T$ U, ]( A" ?* z: u
" ~1 j( T, U/ C( Z
    再次确定
, x4 k0 ]) q; a" v
, z- n5 d8 ]% j( w' @( {' O, W    添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:1 r/ v! {' Z7 `) [4 z
6 u% [8 g" U$ C0 U! |
    验证环境变量是否配置成功
- N$ w+ `5 B8 r: V% W. X2 z" D7 z) U% T7 ]- G
    创建项目7 w$ z% B  a# l3 f

2 Q/ K/ W0 a9 c7 ?    以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):: u0 Z9 X& n; Q8 l2 n! b
/ G& _/ y, k9 ~
    新建->项目% l( p9 ]! L/ F3 T7 l8 k' X
6 T6 e( A  K  \8 R+ e
    创建NEO智能合约项目6 _5 p4 p( O' Q! D4 H

, L$ R/ q5 {2 t    创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:& s1 f6 |2 _2 W, l# V0 L3 G

2 L0 Y" X4 S6 }1 a: G' P! [    智能合约c#文件
/ m8 K9 E  p; c+ a7 z$ Z: x, F8 j  p
    出现错误:新建的NeoContract项目找不到Neo命名空间& E3 k# D* w9 j9 Q+ l! c) e' T

$ l8 o( t" _" K! V    解决方法:% r1 b% Z, P$ g' v* s
- @( J5 M: ]0 n" M# ~" h6 ?7 H
    在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:- W( ], I6 B# p  U& ?4 Z

3 `. T3 F( L1 S0 p: s9 A4 d1 S    还原NuGet程序包
9 h8 `, o/ _. G7 p  s) o/ \- X  s% _1 h% L
    双击“引用”中的感叹号$ f% G7 J$ E. V( t3 Y; Z

0 R7 }+ |/ w4 x- H    错误解决( ?, F: C1 F( Q$ t

# h. S* N5 W5 f* z% h1 S+ ~3 G    编译项目
1 E' s6 z$ M- S7 ]
" g. n# Q8 l" Y( @- O+ m    点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:0 O( ~" u9 z: {; V7 N( q& P8 |) S
' b6 i! L: L; K- Y) B- D
    生成解决方案! W* o8 r/ J. a! G

" ?' d' W& t! V8 g- N    编译成功
" w. A/ H( z" R
* X! M! w: z/ ]5 j    编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:
- Q; t+ x8 }% M: h  W. s
: |% m& V+ ~/ e- r2 G7 p$ H' {# b    智能合约文件(项目名.avm)
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

chespher 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2