Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

chespher
194 0 0
开发工具5 c1 t! J: T8 t5 Z& Q0 F

1 [- n! o- c& S$ D5 s- R8 ?0 @    VisualStudio20176 T) e# d0 H, @8 ^1 s! Q- b7 o

. z9 P/ E3 K. v2 S    VisualStudio下载地址,安装或者更新到最新版
+ G* m- E8 `1 p# _. a* j5 w, j3 i9 ]1 q2 Y9 A" z$ ~, U; J5 L
    安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:
" `+ W. h5 t% W. L6 m/ I5 i% X- q! v. p( Y- N2 J; [
    VisualStudio2017安装(勾选.NETCore跨平台开发)
0 J. \4 H" f1 e9 v* @$ P
$ ^- X3 _6 J' w4 D! H, `/ V3 v    VisualStudio安装成功: ]) R5 a7 e9 ~) j

' W; i/ d, q% `/ r* x$ D& s    安装NeoContractPlugin插件* U. a1 t7 t8 p! i) e" J

) Y1 G: s$ Y3 x/ |( z/ R* u/ k    打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):+ y  b  A8 _; y2 O! z7 y: T
9 t$ a4 H2 e! T! D
    工具->扩展和更新
$ m0 k$ L! _) m0 G1 t9 o5 I$ P! N
0 \# B1 U' K9 H    联机->搜索“Neo”->下载“NeoContractPlugin”& h, b6 ]" R$ O. W. W6 c
  y; w& v7 K1 N, C
    下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:
$ Q/ f4 p! y( R6 M5 I# A; J. j9 E4 M% x  `# _5 z; f
    关闭VisualStudio->选择“修改”! u3 i, ^8 E- N& g
7 S3 f2 t7 Z  S! e6 C2 V8 j
    关闭窗口) H/ s, i1 F/ e0 K: D/ }' J

( D: z2 a- I- h) v' h4 p% l    neo-compiler& A, X( Y8 e4 o1 Z: v( I

8 r- J" x2 S3 O# G( H0 k: u& ]+ T    在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:; S( b5 w' q. r. \8 P5 d4 ~  Y
0 ~4 s+ ?- {! i) r
    文件->打开->项目/解决方案
5 q6 }" }' }& q$ O/ q2 w% b$ k, @+ `1 |" ?" @& G
    选择刚刚下载的neo-compiler项目' r  d% g' F+ v

, \8 {( R5 P# _2 b    打开后的界面(右侧)$ E8 ]8 o0 }, d/ a3 e
) E& Q5 M! C6 O; T8 T: B/ F7 u
    选中neon
+ h7 e$ J3 ]/ ]/ ~. _! ~( g8 U/ S  i) J1 ?  N& @2 o
    右键->发布) ?# g  |$ _3 s6 D8 l) @% y

* y, [+ E5 W. J. l2 }1 n& x7 f% k    Configuration和TargetRuntime两个参数根据自己的需要修改并保存3 K: }0 {! |% ]  u7 w% h8 J
& _, _! s& Y7 q6 q1 \" L
    neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog" P' c% a  K( T1 D

" w6 L8 r$ H3 Y+ C" F# p4 W    点击发布6 i/ g: V- u! \- P  m
" r" D# T. b( q5 H  n
    发布成功6 k5 T8 ~8 X3 P
! s: H' V8 i  t* J) k# f$ V" _
    【注】在发布过程中遇到的问题:$ ^" r% I6 E# Y- ?& S
1 {# J5 W0 ~$ n8 f0 C0 ]
    发布失败
( V* r% ^0 _$ a9 r) M3 d: b1 c+ g
) h: o1 x: D7 I/ P. u* E5 S    tmp966A.tmp& s) ^1 u1 j1 `  U- p- V7 e
) t* _; z# \; k
    咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:
4 Z0 k# E8 ]6 w0 D' K- v
) \7 F4 K) V0 }- ^' N0 t! H1 [    进入neon目录: j6 o5 M7 m& l% F1 c
# }: j$ r2 z1 u! W4 y2 h
    运行命令:dotnetpublish-rwin10-x64-cdebug% o6 x- _9 m  w

1 B2 W+ ~) ~, ^+ U    r参数c参数可以根据你的喜好填写$ R5 b% ?8 s  l9 ~9 |
1 ~; }0 [3 p* V  m. Q
    运行命令dotnetpublish-rwin10-x64-cdebug
: Q% c+ Z7 W  }7 j  p: `( ^. Q1 t) H9 z/ ?! ~) G6 m
    验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:0 r2 A; k  S5 R/ R+ s! E, V

- C+ F' F8 A! J, ]+ d0 `    C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\
; {7 O+ _' L1 R8 _. `- |0 g) A5 _+ K3 s
    存在neon应用程序文件
) f! I8 z3 |8 m2 Y/ g8 G1 S( b# Q8 F, J7 u: g. P
    命令运行成功后,重新点击一下“发布”按钮即可。
" T: s( U2 f( Q& ~. Y, d# p$ ?& @, d7 q' s" E
    修改环境变量
; C1 E. n" d4 }% D( }) a! p, @
+ i& T/ K8 R3 u    发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:
0 N% K; u0 B4 x& c- Z" x* b  M4 ^, y) H5 z) l, ^6 x/ ]7 o
    bin\Release\PublishOutput
( F: u% e/ d1 @% ]! W8 o7 Y- [+ R1 u( ^5 n  x3 U& |. o* {3 h
    然后需要添加path,让任何位置都能访问这个exe程序:; Q0 B8 \2 ^- Q1 l0 I
; |$ h3 m9 J% J0 E
    打开文件资源管理器->此电脑->属性:
) o0 R. V/ O& E" V. ^& g$ m. h; M/ Q0 E" i7 Q+ b6 j* K
    计算机->属性
7 e; \- z, e" g! k6 o* T2 N. `( O) q; r
    点击“高级系统设置”,选择“环境变量”:
: [; ~: L/ u- K( i! F
2 H% M1 k) l- e. G; w; b9 D    高级系统设置->环境变量
! }) a) w: F5 @% B0 o4 M2 g  Z( u$ `, C6 ]- U# }
    环境变量界面) c$ `* M6 {' I9 G- v5 W

" ~1 A& u9 s" R' g# X    选中系统变量中的Path,点击“编辑”:
! @7 L: R0 w# U3 n4 X* j/ K  j* Z1 k2 M( M# i
    Path->编辑# U- f; c' o2 g

3 F% j0 D1 Y3 _# J; W* }" o    新建6 O' j$ t$ T7 [) }6 {* o* _
, i% ~8 d* q8 x; ~9 J
    拷贝该路径$ x% F4 g+ {! B- U- Q' D
5 o6 h/ `' {$ |
    粘贴并确定
+ v4 q/ K1 N% `9 D
( P/ C! x) y* X8 _+ u* k/ T    再次确定
: b# t. ]) R8 L; h$ G( Q0 c6 v4 i
# ?( r  ]9 d; m& ?; H' w4 H- @3 m    添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:
+ s* D+ \  a: ~* H
1 `2 d  p. T" Z. s- ~* b    验证环境变量是否配置成功, l2 G4 W) c% K
" N  q. e  t9 ~3 o/ w- {
    创建项目9 S" T; _; I5 M' c" T. W& l  ], O

1 R' Y& q/ D8 I0 K    以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):5 z$ V4 ?. L. d# D$ c, G

8 @2 \5 b5 ?) i& j    新建->项目
. U  o% Q+ X9 _7 @
! M2 k8 p) m8 X6 ~) b, H    创建NEO智能合约项目4 ]& t# L& N" A1 O1 r

3 G+ S3 K2 R% ]$ v1 c    创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:  Q* N0 I5 b! g; L) q$ v
( G; d+ j' R6 [& t' r( G1 l
    智能合约c#文件6 J" G- h$ v% f: L

* Q) L6 o9 o0 H5 ~    出现错误:新建的NeoContract项目找不到Neo命名空间
' {& V5 A) N1 j6 l
, a4 x: \1 W8 q* a1 `    解决方法:. v  d& M0 u) E& B: ~( s1 E1 y
& c0 k" A8 F- P. ^
    在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:
, q' i, c: v8 s5 M- r6 [6 s9 s8 l: N! I/ \8 z
    还原NuGet程序包3 T& q8 y/ b$ A/ p* C. L4 [
+ V% @* f$ N& p7 ]
    双击“引用”中的感叹号
; I3 b* G& A$ }( A8 \6 V/ z* s- ^9 T; K. c% m2 Y. @
    错误解决9 Y3 R% z/ _# }6 Q% A+ u, T3 O

3 Y: r: |; N. H! A4 V# ]  x: t4 `    编译项目
( ?% t$ I/ z2 s- P8 ^4 t! S  U+ F* P' L  _# I1 v# D  F' _% C
    点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:
/ R, G% V# Y1 Z" [( ?( r
+ m" l" H, @9 }) ?/ [    生成解决方案
# n5 A% V$ M- v% }6 N4 q# @1 K- R5 m3 X4 D
    编译成功
* r, r5 D. P3 r! p1 u0 Z% F$ r: B  o
    编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:: ?" {4 p+ a( {: z
  j5 P& c1 o! B. s' f$ r
    智能合约文件(项目名.avm)
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

chespher 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2