Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

chespher
49 0 0
开发工具
( c. Y) i! q3 `% H! _4 b+ @
' d. B9 [* ~0 E& P2 b" o. {5 T    VisualStudio20173 }. \( M& p5 i  A

8 _  [4 ?- l" z, K6 y: S/ `; h" J    VisualStudio下载地址,安装或者更新到最新版" m: e: `0 B! Y3 p' Q+ m3 ^; d! [1 K

. S' T4 V/ b( x8 U' z    安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:, `. g+ B8 u4 W5 }7 b' N+ P. a
; G0 H6 z" R' i) L
    VisualStudio2017安装(勾选.NETCore跨平台开发)$ Z* O9 p* ~, ?$ _* E6 q( y
& M0 E& X! J% B* N
    VisualStudio安装成功$ t4 W. I8 ]' ?  j! Y( Q

8 p, p5 _# {' I6 w    安装NeoContractPlugin插件
9 o" i8 g; c& S" B5 E8 f: m* r& c& j3 t1 Q# x
    打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):
/ D& |$ h" _8 J9 X2 p* n8 m
5 I1 A& ^  Q0 H8 ~    工具->扩展和更新
, c) z. D' \, N& v9 X/ w7 W, C7 z1 M
    联机->搜索“Neo”->下载“NeoContractPlugin”- y' i. s! Z. ]- Q% P
/ |7 z2 x/ K. c; p6 L) e' M6 i; u
    下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:
, y2 ?9 s7 f2 p" G4 v
% x. q: I2 z1 L  a% p    关闭VisualStudio->选择“修改”  ~* E: B7 l2 g/ g# @. ?+ \7 l3 w

3 k9 T9 ~& D* H# [    关闭窗口9 Y/ y. ^# l4 `, T& g3 D
, n+ V" u/ s; n- Q1 D
    neo-compiler; A% V; N' h/ @2 \5 _$ [
! P7 z& P( M' X/ s+ ?1 W
    在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:/ O* M' i* d' R' P, i+ H( `
, V6 B5 [: P; s! _: A
    文件->打开->项目/解决方案2 ~$ \4 O  |2 m+ ^9 a: G
5 e4 b8 m4 H2 I1 o3 L
    选择刚刚下载的neo-compiler项目
+ E. @" b" L6 ^) U/ c: w! ^2 U4 i; \
    打开后的界面(右侧)
& X+ k" f4 A. ], x. O* P- j3 k7 I( h. w( w5 f" c5 ]3 X& T
    选中neon+ \/ O; Z& X. V* a; {& h

2 p+ V9 l7 z$ l8 w( ?5 u: R& M    右键->发布
. H' r$ z4 x: z  N! Q! l
: y4 I) D) y" ]' I# L    Configuration和TargetRuntime两个参数根据自己的需要修改并保存! ^( t7 [' _1 T

$ a7 w) C" ]* J  z( z1 @- j1 J    neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog! l, k( \3 N" o8 w4 i& t+ ]% x" w8 ?" y8 {
- I: A" L( k$ i: i) C+ `' I2 g  J$ M/ R% h
    点击发布
% N, a$ z* H4 F/ {4 v1 N* b3 Q6 n/ X! ~8 C& g* \" V! t, E0 p+ b' G
    发布成功. W" h/ F/ C- ~6 `9 H: P: f
! P3 M# U) b5 K3 f3 R
    【注】在发布过程中遇到的问题:
- p! ~9 y" u6 F) g# W
- N* O4 S% A/ |  a2 A    发布失败; z5 R9 F0 c2 z, g- ^

4 k+ ^3 i! Y% ^    tmp966A.tmp
% u% K2 ]' ~) c* V% ~/ C' {& L% x
% B( x2 _8 ]% ^2 o( A    咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:
0 k/ u* b' k3 v. [2 I7 V+ I% e' `" o! P0 J9 w# y" H
    进入neon目录3 X0 C% D+ g" c( p* K6 [) V

9 [) j; K) c' X3 @9 m    运行命令:dotnetpublish-rwin10-x64-cdebug
3 |, i: t. h. j; S+ A: @1 U
; d% ]3 V4 {$ S& T0 |. Y    r参数c参数可以根据你的喜好填写# q7 G7 |5 i7 q5 f
, e5 ?" ^3 ^% t" k
    运行命令dotnetpublish-rwin10-x64-cdebug
* Q& C3 z$ M* R3 H5 o* F0 l" Q8 Y  D/ @0 D2 H6 h- b' k
    验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:
4 @& ^2 t2 L$ h! n+ j; u2 `
. y. u: q0 }0 o1 g) I    C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\
$ ^& v! x& N$ T; @, A8 z- ~8 C
1 Q; ]" ?. z8 `( g9 G    存在neon应用程序文件
! p# j& y' `* W  X: H! b) O/ f: M0 [6 j4 E+ M- A" G0 _
    命令运行成功后,重新点击一下“发布”按钮即可。
' U  w/ J' X4 |
$ u2 d1 r, ^' k* y( Y    修改环境变量
, T4 R4 ~3 Y" W& w' j& F6 X9 J) Q, \& @- d
    发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:
6 D# n2 m% t" g: @$ {8 v% y( |
5 N! f/ ]% Y0 v; ]- G' q/ V0 f5 [    bin\Release\PublishOutput
3 `  i- [% J6 \' j% A5 p
/ I7 F, D, R7 I9 ~8 v$ t    然后需要添加path,让任何位置都能访问这个exe程序:
2 B) Y2 a7 h7 F! Z; \4 O7 }4 A, i( `5 G4 f! {6 I- y
    打开文件资源管理器->此电脑->属性:
  S1 `' s  a7 B# Y
, i, z: K5 o% U( v+ P3 S0 j    计算机->属性
- U6 g2 [: [6 U
: j& Z, S' q% @, k8 i+ ~/ L    点击“高级系统设置”,选择“环境变量”:5 f! o+ W" c, K7 @7 a/ }$ u

$ @( O0 h+ S! x9 ?# D1 f! j2 W    高级系统设置->环境变量  `6 q$ p  y7 w& z. v- A% `9 I
2 z4 ^; Q1 f% v3 F
    环境变量界面5 L# |3 R; M4 f! C/ [

2 b1 G( c  {$ K6 `$ f    选中系统变量中的Path,点击“编辑”:
. [$ g" R7 n: _* @* I1 w& B9 b  P/ }2 ~/ w- {- E7 \
    Path->编辑# d- ]/ U6 t2 q3 C% `6 r) F
3 A( }) s* W$ q/ ~
    新建* s  g" Q% N; ^% Y- h5 x: i: j! i* I

3 b1 P5 I2 Y8 z: a+ \8 V2 o& x: s    拷贝该路径4 e% ]( K2 t, K' B

6 t) ~) r  R$ g, G" c6 V1 o/ o& L    粘贴并确定
  Q/ M! T. ]' }3 J! g4 O" ]& ]* s! Y$ l3 _, J; R# X* p. V0 @& _& H
    再次确定
7 P- ^- e, l1 }! i! F) V1 K. p- C& x; W7 i+ ~8 e
    添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:& ~8 K& p, m2 r! |- o
9 i4 L% I$ G4 W* [! K. m  Q# S  v& h
    验证环境变量是否配置成功" J+ @: y( Q! g4 e! \0 U6 n
3 B" y& p! C) e, O, A# R- s
    创建项目
- g) |2 U: O+ G2 ~$ `% p: t# u1 {4 M4 [2 X& _1 B4 M5 S5 ^: \! V
    以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):- N4 l+ t7 c# a
! L1 Y2 A& A/ r! G8 T5 [
    新建->项目5 [( a' W0 x: F) B( s8 T2 W
! v' l% U4 @# j% r; Q
    创建NEO智能合约项目
$ J! [: q9 q: M) c. m2 P" k7 f2 c% Z" |) S
    创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:# \$ O8 h1 Q) M. d% O
( e/ p0 r4 C- v1 K% X
    智能合约c#文件
: ?( P+ F5 s6 |6 p7 m! [0 m$ t
0 x6 P6 g- P: D+ A: R$ g    出现错误:新建的NeoContract项目找不到Neo命名空间
7 }' x2 ~. P8 ^# o& g/ ~
7 B( `% t( g, ~' l2 L    解决方法:
0 {0 `0 c9 d1 K8 P9 Q8 j/ c
" u8 Q% P% G5 V( R- T0 ^4 N    在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:
' a( h' r1 L+ {: }, }2 k4 I+ _* H; u% V
    还原NuGet程序包6 K& c: Q& b6 a& C+ q

+ ]# A( d  M* B- h  Q    双击“引用”中的感叹号
; E2 V0 P% Y7 ]# Y/ \3 Y
# [- G/ i+ w0 E2 S8 o    错误解决- d! I9 A1 E7 [  Z

/ S/ \, a! F/ D. b/ ^# t* {    编译项目
8 R  O' V2 Q" p, z% G0 I- k2 e
" E: T1 e7 [9 G+ G5 r3 a) a    点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:
9 ^7 j, x* M$ v9 z/ d+ G+ l1 x  n' W7 W; w, a; |
    生成解决方案
2 S: m4 n2 o5 e# Y5 Y6 r9 Q
' O7 b# Z( @1 M! S  {9 }7 |3 k" O- Q    编译成功$ N1 Q% [9 N8 R" o

: ~& `' x, Z+ Y7 \& R; l    编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:% m- q) l  G7 u! h5 z
4 R. r0 K& Z+ o8 a  ], V
    智能合约文件(项目名.avm)
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

chespher 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2