Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

chespher
63 0 0
开发工具7 Z" v7 w; J% x
4 _+ y' q. R# \+ ^# c2 \  g' C
    VisualStudio2017
( a& ?# J0 l7 Z/ _  b
  Y, G  G% \  G( i3 g- M' c    VisualStudio下载地址,安装或者更新到最新版
  z8 j5 t. {, W
" \1 R" E. \& q1 o    安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:
- O6 m$ c- d. V0 L# U$ i* N# P4 Q: G. V3 d
    VisualStudio2017安装(勾选.NETCore跨平台开发): G. h3 A( @# a5 X; J; z2 H4 u' t

, s6 P, K9 d! P0 F    VisualStudio安装成功5 p( M0 I' w2 l
% M3 a. `3 V+ ~8 Q
    安装NeoContractPlugin插件; [  f7 |; {8 w& m- z

+ k/ Y8 f, `( \    打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):8 ^& x; ]  e4 u

* H$ h8 \3 V9 h* x    工具->扩展和更新  D3 p4 Q( @! r) O8 C2 G

1 Y- ]5 F( L9 [$ k6 f    联机->搜索“Neo”->下载“NeoContractPlugin”
# m( I4 F4 ^1 S4 ~% K0 U; @0 ?) {: A/ J
    下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:
) {' H  q" `1 N* Y( H+ f* L# E8 ]3 V: q7 B9 A5 v+ Q. J0 g% \
    关闭VisualStudio->选择“修改”8 G3 b7 ^' n1 L; t4 i# O
6 J8 }. {2 Q: ]2 _& l; T
    关闭窗口
  g# Z" g3 U2 z3 g& q0 T1 o% B! M5 C- l+ c/ h
    neo-compiler9 p" V% a# z: c& i, }$ Q7 x( h

3 w  _& ?3 E, s    在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:
5 Z+ E! R* m5 I* Z! |' w) i; s" t0 U- w# @' v! n
    文件->打开->项目/解决方案6 c5 G' ~1 Z4 r8 J+ a

1 l  x# s0 D- K* |. F6 M    选择刚刚下载的neo-compiler项目
  b- V! _; p4 H6 z5 u: s5 u& A7 n" Z& z1 |
    打开后的界面(右侧)' v0 v$ t+ J+ ~' ]9 Y

5 \- F7 q$ W- ?- f    选中neon
8 ^- }& B/ Y9 {
  D$ A8 x5 M; h. Y    右键->发布
7 X+ x$ [8 `2 ^0 g& d) C' U, ]4 `. K7 ]) F/ Y
    Configuration和TargetRuntime两个参数根据自己的需要修改并保存* [, S- g% V8 r6 z0 e/ u
: E# \, e$ o) R, R7 m0 s+ N  s
    neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog) g9 Y/ C( n. J1 J9 H
" ]5 S! G5 s; _  v  o
    点击发布3 i* H3 h/ a1 u1 J1 p1 E+ U  h
# f; S9 G/ j% O% W% ?/ i
    发布成功8 p7 Z! o/ D- X0 p6 [" G, n3 R) H
+ E% v; t/ ]* U# X$ N* l  Z: a0 A
    【注】在发布过程中遇到的问题:
. q0 Y0 a% O- \, B! @# |
( ?7 f& P% v) _* ?7 P    发布失败# M6 S  |4 M' R+ T! A0 j4 M8 b' @

' z6 F& A# ?' k5 f3 c+ i! C    tmp966A.tmp
2 t" n8 f* _+ j9 b9 s1 T, B3 n& M$ r. L, c7 I
    咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:
( p* L6 {+ |, @  u" O7 I9 t$ `5 s. V( c" Z) ^
    进入neon目录
) g7 C; M0 t' U$ I0 E% q
, f, p7 r& k5 @4 M- \/ a2 \! p    运行命令:dotnetpublish-rwin10-x64-cdebug
) o8 n1 W2 Z- G9 a
+ Y' Q# f) P) ^1 Z, j    r参数c参数可以根据你的喜好填写
& g  B4 f* V1 @0 Q: T  X$ d# `" R& n  j) f9 R. R$ D
    运行命令dotnetpublish-rwin10-x64-cdebug
8 {7 `' Y2 ], {  [; Y
3 U, [+ A7 e7 \9 k3 r    验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:6 _8 W6 ^6 Z# c* n
. u5 y2 Y/ Z9 P
    C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\/ O- R7 V$ I: O4 ~2 \

2 C; q. I7 }4 {# {$ W    存在neon应用程序文件/ e8 j* J# s8 t- d

: u7 b& g, Q# O- g! ?- ?0 R0 }# u    命令运行成功后,重新点击一下“发布”按钮即可。
" d8 X  l& f% a/ [+ J$ a* a: i7 I7 [0 ]
    修改环境变量
' M0 q- a% T" o, }+ A) f# b! x6 e* Z! }" ^) {# O
    发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:
6 i3 g% X2 s& w7 ~
5 I" y8 x3 P! @7 v4 M    bin\Release\PublishOutput
7 U& `7 O( d5 `4 L4 t$ e8 }" p/ _; I& U
    然后需要添加path,让任何位置都能访问这个exe程序:- M& K2 h! T3 [$ e( |4 U6 ^( i

# S1 U6 }4 ]/ ^) `' L1 m- d& D    打开文件资源管理器->此电脑->属性:
7 R/ `5 P: R' [
7 E: ]$ N& r! N. [- @6 x# [: g% I    计算机->属性- k. Z  v0 q8 D

7 B7 O& G9 G! ~    点击“高级系统设置”,选择“环境变量”:7 _. t0 m4 L9 h" g2 G* g9 N

: U8 G) ?2 T4 M( i    高级系统设置->环境变量  e. Z) k7 z0 R

2 E- r$ Y$ U  L$ Q$ D. o    环境变量界面3 T7 J2 |* _. c- O, R" q( j
7 Y9 O% N7 F% R7 R9 i
    选中系统变量中的Path,点击“编辑”:- G) v' L# h/ T9 L* j9 A

: ]. y3 D+ P+ S0 l5 C    Path->编辑
. y; P, `- Z2 E) k
2 \+ p/ ^* W+ n8 k9 }" i    新建
# b" D* E1 f+ G2 ?9 O6 E6 P) Z( s, s5 b
    拷贝该路径
9 K  A; g3 S/ G7 t8 Q, c2 z, L  }# E: L( S; U
    粘贴并确定
, e* g0 _, l$ ]
( r: d$ J& [5 @: ^. D    再次确定0 r) Y3 {  }9 G- h' c- C
: J. j% l, `: e! G$ }5 T
    添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:
0 ~2 R) n8 x$ j6 ]
% G. b9 @% g. t; Q' ?' M    验证环境变量是否配置成功
0 E# r+ `7 O0 H% Z3 u
" a9 U- Z# j. j5 c* ?    创建项目
; {& \: [4 l" d7 d. a2 |: a6 Q" W$ x$ o4 r- H. S( w8 r( P
    以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):
7 C/ [5 J+ S" A# v  s4 w( B6 |6 ?! ]9 w
    新建->项目* \. V+ t* R& F+ ~: H
& o# ?% W' M  H# Q6 C5 x' _
    创建NEO智能合约项目
6 V* s( m; w6 V1 _
) R% O9 i, V! ?' G9 J* ?, F6 P    创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:: y: {3 r7 I  B. m

; ]9 m! D, E' c9 o7 C    智能合约c#文件
  n+ @0 k- v0 q2 ~5 ?5 x3 W8 I' f7 W7 c6 e& q8 z9 O$ C" N1 G; `2 ~/ X
    出现错误:新建的NeoContract项目找不到Neo命名空间
8 g8 e5 ?7 D$ ~* c7 V  U  p
' c3 K* C2 F, E  _) s4 J# b    解决方法:
+ x, @7 A* L* B3 G+ c; @  G1 T7 j9 R; o2 t" ]* u* E6 F- H
    在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:5 b! Y. R1 C+ q" ~/ N

8 S! c- A- I1 Q3 k  u& [    还原NuGet程序包
1 N0 S# }1 z6 C. Q  X$ Z$ [. W7 \6 [: @
    双击“引用”中的感叹号7 x2 ~: Q3 r4 h) N

  o: f/ V3 Y& \" f2 O1 \9 J    错误解决
1 O2 i. L8 J; G' v& p! D& O! z3 G- ]" q* r1 u, z' a' f
    编译项目
0 |7 s" t, ]0 |2 S' _. e8 C& Q* |6 K) F& S* T
    点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:5 j6 p$ ?* Z  A0 E) M- a, w* q

. \( U6 z6 V" T/ y    生成解决方案' `4 R/ L; l% `* h

) n/ |% `( |4 {' E( a9 \    编译成功
( J" P  b7 d. y+ L/ u: B/ m) l& i/ r8 \2 K
    编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:
+ T0 o$ `$ w& b* s( c5 Q4 H+ Y: @' D# d1 V* I* s
    智能合约文件(项目名.avm)
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

chespher 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2