Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

chespher
69 0 0
开发工具
. Z0 N3 T3 `8 q4 k! h% U% Z' U' t1 _
    VisualStudio2017
1 _7 t, O8 b  P2 z$ {: d& |0 v5 I7 B6 N3 g/ A* x  e" D1 \
    VisualStudio下载地址,安装或者更新到最新版
3 h' ~  P+ T0 e+ q
$ k8 C, \* S! g7 u    安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:; ?8 v1 w# ]$ \0 j/ k/ g: C

: C" b, B* H. V  h& ?" D9 H    VisualStudio2017安装(勾选.NETCore跨平台开发)
" K: H9 p  M3 W4 J9 @# n7 b6 Q7 a. O0 j' r" K
    VisualStudio安装成功
) Z7 U% S- s: ~& X4 ?3 [+ g! @, w7 F8 }( R; r  L' U
    安装NeoContractPlugin插件+ |7 }' B8 E. d* z

4 d- y+ j* N! {3 t    打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):
0 n& ^. F+ j: t/ T: z+ U- o8 g1 h' V) r, ?" {
    工具->扩展和更新4 I1 x' w* ~7 J' _9 @: a

/ |, l1 ~8 x+ z6 {4 c: F0 P1 L4 U    联机->搜索“Neo”->下载“NeoContractPlugin”
6 ~4 {6 I4 M' Q6 T; a, `: h- N) U# u
/ ]& p. J: K  m    下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:
7 a5 t0 Z8 |) ^
- N" `+ S* k0 v  N    关闭VisualStudio->选择“修改”1 u* |' g% a' C: O
8 V9 v: `1 J1 V3 u5 l5 o& x9 P
    关闭窗口+ u! a1 s1 T6 B4 @+ M0 `

5 r! `/ b' ^/ z. m  N    neo-compiler) o- y0 T) m) z3 W

1 H. p6 B7 G/ i9 l/ K; m3 R    在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:
8 k3 v$ C- c* A* O# E) |" O4 T3 G; E+ i. S7 B( P3 e
    文件->打开->项目/解决方案
7 e  a0 O- i( v% C. w: X/ Q4 c, b2 U* F& B; N/ a) ~
    选择刚刚下载的neo-compiler项目4 U  r' C: d! y
3 g& s( U4 B+ J# @8 ~
    打开后的界面(右侧)
" m$ D5 N8 t/ `1 k3 T
0 J1 b2 N3 e$ J1 B    选中neon
9 \4 s  P' e9 I/ A3 e7 d* K! Y7 R
    右键->发布1 P+ _2 j2 {: b0 y
1 [4 h1 S, Y* |$ o/ e& @  M* y! l
    Configuration和TargetRuntime两个参数根据自己的需要修改并保存; e" y3 \, W  m* u! r
; [( G  p) c7 b% n* ?3 l- S1 ?2 P
    neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog, ^' M' k$ o  E) ^$ _

5 y7 D7 Z+ X% x  B    点击发布) {! r7 o$ k4 t; P
4 Q8 i; {% [5 G% [* {/ J$ C
    发布成功" v" N& q6 Z4 H" \7 r/ I
, @& p0 V- F; f2 d3 g. E
    【注】在发布过程中遇到的问题:1 D% p0 c. K" G' }) m8 h1 y2 O0 x

5 X7 b1 ~$ N& o& ]; c' J    发布失败8 ?) F" f- Z# _7 H: B$ l
. g9 g% i7 H6 }) q8 H$ g$ R2 d
    tmp966A.tmp+ A3 p' ]9 c% D  S. x' l1 L% e1 N

2 q- o: T) P/ m. k$ ^/ A* j    咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:9 F; @0 N! O/ ^5 z4 D' C" c  s

; g8 w6 R0 n( p: v    进入neon目录+ N: L5 f5 n7 V" g4 W( R0 d

5 X7 F8 K# T" b( s3 q/ P* _    运行命令:dotnetpublish-rwin10-x64-cdebug4 L) z7 a3 q# f/ o; h9 Z! n

: m8 v2 V. }. B$ ~" C" p9 z: `    r参数c参数可以根据你的喜好填写# c& V* t7 A' k1 K
1 n& q5 I( H, d+ F; W4 T
    运行命令dotnetpublish-rwin10-x64-cdebug9 e5 a7 X- i& k( h

  g' M: d1 l- g# L; {    验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:
) U% Z9 `& j* [/ ~% u0 K2 d5 O  {/ [; V( v6 y
    C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\
: O! q8 K5 I) i! ^7 X4 o2 u
/ G1 n0 W( a, C2 N4 S7 J5 |2 |    存在neon应用程序文件- w' [6 k7 |4 }

1 o4 c, O$ |. x" E7 w5 }5 u) `    命令运行成功后,重新点击一下“发布”按钮即可。6 t/ d$ }0 ]7 q- V  Z2 }
3 [. R* R: Q& k
    修改环境变量
' \; U+ R9 t! k3 g  d4 h
: M5 V+ L( j0 [/ m3 z    发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:* `" j$ f: m( S, X- s9 ?: D

$ `- ~9 W  @; }1 t5 @    bin\Release\PublishOutput
! u2 E% y4 [4 n% {2 I$ O6 \
, [& x- Z+ Z- s9 r1 ?: Y    然后需要添加path,让任何位置都能访问这个exe程序:( V; d6 z" @7 e' V% V: k  s  ?9 G, _- \
+ O5 p4 \/ e$ K  u; J
    打开文件资源管理器->此电脑->属性:9 c* O' F6 c$ T* f* h
$ k# |3 D: p# l0 C2 {
    计算机->属性
) ~3 s2 a1 K% x- {4 g9 m5 @8 z% ]/ `9 M
    点击“高级系统设置”,选择“环境变量”:8 s$ w1 B. |( g+ y4 }0 b

  ~4 z+ z4 l/ X6 V  v* Q' u; k    高级系统设置->环境变量6 ?/ Y- k0 p3 f  v! ~; \$ Y; k% |1 J

) d* h$ I* x4 s+ b( l    环境变量界面- S, F  w( b  i

2 d4 f* k# ~4 m* b    选中系统变量中的Path,点击“编辑”:* ~5 M1 D7 D: V0 u1 q9 F

  o  H7 A# N- l: j4 F4 ~$ M# \    Path->编辑
# B( G# m( Z" o3 s) m& B' ]) O$ f" Z+ Q5 h2 G: i
    新建0 W! g: y0 S% T; h1 w2 w

7 F( C; ?5 F! D$ N# V    拷贝该路径
- g( d( \& B  i( n( }7 x/ l3 `! E+ l! H
    粘贴并确定; P& S# C, m2 J2 c$ M' L

! \6 L* N: O: Q, S1 ?. q% o    再次确定5 j$ g( x5 _0 I
/ l1 ]/ b! f1 `" p: S; z  S
    添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:+ A$ C$ S1 F( x4 }
# ~% F* k7 d9 H
    验证环境变量是否配置成功! z4 C6 K: G3 B. A1 j- _

" N% f; j( h" q    创建项目
( e- k$ O1 F* p5 R1 p7 p1 b* P& P7 S8 e0 z' T/ m# f
    以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):
) [' o8 c, ?6 y, g) p2 ?: |1 T$ F# R& a$ w: }' s2 C& q' x1 ~  p' x7 Q
    新建->项目$ u+ M8 x" e- J* @* d7 c4 i+ e: N
+ @- p5 S% }* K& L+ U# e/ R
    创建NEO智能合约项目2 `& G. b0 v6 {  \- L* }, [1 H* D) l

# K, C! F7 K# F7 p* T7 s" q& ~    创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:
5 N4 o$ l9 R) H' R- N5 d. L: p/ I7 ]
    智能合约c#文件
8 v# i4 G% c8 i3 }( y% m& m/ _  g8 a0 |& k5 l: S) a
    出现错误:新建的NeoContract项目找不到Neo命名空间
6 f; r, Y2 L4 F- {
8 u# e/ x7 V: B    解决方法:
' B+ m. p2 v/ x3 t1 k  p* W. v; z; e. l
- [0 }; B' L. Z% m2 ]6 u+ E; T; h    在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:
4 d* {7 K$ N; J1 T
) f1 t( G  w/ ~, z  J    还原NuGet程序包
& _: i/ ]& H# `+ T0 z  _+ j* k, E/ C% ~$ Q4 h/ x
    双击“引用”中的感叹号
6 \) e' ~4 D: g/ a" f7 [# y8 H, H6 B' C$ w  X& q5 @
    错误解决4 p* e$ Q* O1 G) S2 H+ s) [6 s! p

$ y* c- v1 v1 d/ q: @! r    编译项目6 z2 o1 |& ]$ W- P6 R

. Y% |# K( S! d    点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:
0 {7 n; Q& H$ z3 Y
/ B+ k6 c* D& Y1 _# t    生成解决方案- w, e3 l9 [% n/ o; ^- [% J/ V

1 Z& i: w: _+ `5 l% f/ h7 K8 {    编译成功
* q3 t  p. Q; Z, ^
! }' K+ d& D6 @# G& q& D5 @+ m    编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:
- E$ c2 E* a6 i4 g
* x& p0 @. `- p    智能合约文件(项目名.avm)
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

chespher 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2