Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

chespher
199 0 0
开发工具
8 t' ^* }" V4 w  n3 f& R; ^; 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下载地址,安装或者更新到最新版
8 E$ x* V3 U& K8 k
+ L2 P: j3 z* m, U1 \4 H2 x9 z" B    安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:
* K4 y% d; B' b4 ?. A4 x; m
- A# ^* ?$ n; o$ R7 f    VisualStudio2017安装(勾选.NETCore跨平台开发)
/ M3 S- C. D  T: a% q8 X3 b/ g/ |: u/ o& c! w% _
    VisualStudio安装成功" e+ Y5 Q3 ]5 i, n. i7 ?

* E6 f* b% @7 [) I5 c! N    安装NeoContractPlugin插件
+ A, R* l0 c6 @. d3 B# l) w
, A- E) E, k7 o' x. v2 `6 h    打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):# L% V2 M2 K  {5 d+ F: m0 F1 R

  q2 M) ~+ D% t/ 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,在弹出的窗口上选择“修改”:
" d  o1 n; X+ O( P4 Z# P
3 p2 t4 t. q9 I6 Q    关闭VisualStudio->选择“修改”% f8 ^3 E! S4 o4 G+ i" y8 v) A9 B. |

9 h- o+ e% t3 Y. s% H. j6 c) y  ]$ _    关闭窗口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) \

2 |1 \. Y& U, Y8 }% q& Y. M" N+ \  e    在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:
( O2 }/ U2 v# I# }# s' I* G% F" W5 T. s6 h1 w& d9 l/ Y
    文件->打开->项目/解决方案; q! ^! |0 t( @; t8 m

& C' O5 s* _7 X3 a$ ?, i    选择刚刚下载的neo-compiler项目
. u0 Y% @- W" K4 z
& S. C: p; ~* O    打开后的界面(右侧)+ j5 ]1 i1 Z: g& k

, i+ c! _( ]  t; {; y    选中neon
3 Q2 E/ X3 S7 W' L( R9 Y: p) l2 \$ X- N9 g) w' a, [
    右键->发布3 K( U: @  q2 h( o! v+ m

1 J& q; j2 h, a( m3 S    Configuration和TargetRuntime两个参数根据自己的需要修改并保存
. e1 i9 |/ e% S+ N
: g8 y. ]& F% j% O7 J    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
    点击发布
: o' ^2 I% c& I. L! I1 M" l& s& _6 r- }1 F
    发布成功  C% w/ G% |5 r0 x/ h
& v5 a7 y2 I. }' f- }
    【注】在发布过程中遇到的问题:
8 e% W+ H" `! l
- ~, X, B* b/ I; p: x; R: H    发布失败. I4 T0 \: X& H3 g0 |+ ^' V6 a

* x$ ^* B3 A" y; @; r    tmp966A.tmp
* G# E* h5 q+ s: t& V6 U% P7 e! l# s8 q0 ]) D8 @9 A" Y% t# _
    咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:
$ Z- z+ O/ D5 C+ E3 @# c! w% E( `
$ w( V" d, s3 x2 ]' P    进入neon目录
9 X$ u  F8 ^/ g& R3 X/ 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; |

5 w0 A+ I$ b; T9 S  Y  Y0 [    验证是否成功,到该目录下查看是否有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应用程序文件
+ t' n/ c4 m4 U- }  [2 z: \
" r0 |* t- }0 I    命令运行成功后,重新点击一下“发布”按钮即可。
" h" Y: B: H& c! P' w/ D  M( 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

  c0 X( l; L$ p+ \    bin\Release\PublishOutput" f- u, k: ]8 N( g

# D$ _" I: L0 S    然后需要添加path,让任何位置都能访问这个exe程序:% C) T7 L) Z# _6 h& @+ Q! {2 }

/ R. A& m) |  F. N3 P    打开文件资源管理器->此电脑->属性:- f* `( J" }+ w' e
$ W. A, {1 H/ |9 g2 j, t
    计算机->属性
2 S/ e; _0 O9 O! S# f/ y6 A7 i9 Y4 A3 P
    点击“高级系统设置”,选择“环境变量”:5 Y3 U8 ^& B% E  E' W% d
+ {: i/ I' F% U9 E4 S& |4 J$ x
    高级系统设置->环境变量
& p6 C6 f* ~1 @* I
5 X9 O+ ]: l4 j1 ?0 `/ Q' w    环境变量界面
& P2 w9 ~& x- J* t" l% P5 x  Y2 P# j( |7 V% |  C2 B6 c
    选中系统变量中的Path,点击“编辑”:
" t* S/ o3 P$ ~
1 H$ @2 m# G5 {, F, z4 f1 `( q    Path->编辑, S( `' R) u8 F2 E; i5 v8 c- J
3 m. A% A# N8 e6 V- o3 n$ O4 \
    新建
6 K5 `2 }( n6 p/ }$ n
# a& c. D+ B7 M& k+ V: m    拷贝该路径
! \) F0 ~8 ]- O. \  X$ d) n. I1 V
3 u! O9 y9 T# l    粘贴并确定( r" N1 ^' |& L, V/ i, d2 `$ L

$ Y6 F3 E7 h% {2 Q4 Q    再次确定
- }! i' M& T: }3 q
' m% J. M  d6 H1 d  ^5 ~    添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:  _* ], a$ j! n* K: \5 ^4 x

. g+ ~: j7 ^2 i, s$ s$ l    验证环境变量是否配置成功
: C3 w5 Y2 w/ A
  Q4 G; A9 r, X# W% z  k    创建项目: G: o: ?( w( i
) A$ Y0 P; W& t1 Y; ~; ^
    以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):
' W' O, |8 M! Q4 v* Q7 R' L. O/ @" t$ v6 f+ m. P) W9 E  ^
    新建->项目
( @4 B, p0 W1 E5 M9 W; b' S/ }2 Z
    创建NEO智能合约项目. h1 ]3 l3 Y. P5 C

* z0 ~  W- L& S, F7 l& D    创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:" a" Y: I/ }: E

; h; G- O2 ?9 r    智能合约c#文件
5 k, F: K- k- v8 r8 i
# a1 |! m5 b% A! L    出现错误:新建的NeoContract项目找不到Neo命名空间
- _' Z9 k- Y$ n  B5 U3 V
: u7 S" O, m& R9 f6 }7 t6 \9 b    解决方法:% 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程序包
1 v4 J/ y/ N9 _3 N5 I
8 v5 m1 ]: ?  T# O# Y; v' a1 S  ^    双击“引用”中的感叹号9 `& c4 W" ]+ O, {6 I

3 U; [& ~' r$ f3 O3 Q2 B    错误解决
1 l$ c' ~- Y% a4 p( w+ B1 S* l7 f8 i4 J2 _$ u' `  t$ E
    编译项目
9 |# t5 P* v) T! y
7 L. B) e) k8 T# T" S$ @    点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:
; i$ C4 E4 y- {( ?. P8 l) _# m4 m. {
* ~# M, ~% o7 U& f% y: C    生成解决方案4 R" `! Y& X. |; _- s

5 k/ B0 D  G  _9 G/ Y' Q    编译成功* _1 O' M! i) \; U

( y2 S5 {0 @; Q9 q- t    编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:
9 p  ?0 ?# l& M! k3 c$ ~( N) y' A$ K$ A/ V8 q1 r1 U/ k' |
    智能合约文件(项目名.avm)
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

chespher 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2