Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

chespher
62 0 0
开发工具
- I9 z0 ?/ {+ D- F  k) v$ v  H/ s$ ~% h% v1 O, ?5 K
    VisualStudio20171 w' L3 o( V, u$ e; l

3 D) a2 S$ H9 M+ l% l, g* r    VisualStudio下载地址,安装或者更新到最新版
. {  P6 V2 i8 f  e4 j' t5 s  ?" C+ {+ z0 z# Q  A: M
    安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:; }$ K5 P6 E9 Z- K- |  p
, x2 w! \0 ^: i
    VisualStudio2017安装(勾选.NETCore跨平台开发)2 N1 V# E3 I& E3 l# m/ T5 _2 {

: C6 U7 M+ _  O- n& a- d2 D0 V: S    VisualStudio安装成功
1 A" ^" A# Y7 W5 A( K' ?# y/ c9 \/ Y! @) w2 F) n
    安装NeoContractPlugin插件+ ^# \- @. }  ?- ^$ z' g$ j

6 E  G# K& t# H  m    打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):! \9 P" z2 f: g2 F, B: g

6 ~! g+ G) M* n2 T8 N9 r    工具->扩展和更新
% P: _, {. s2 I5 C% ?* P" Q8 c8 z, `+ N6 j: _* o
    联机->搜索“Neo”->下载“NeoContractPlugin”6 G3 q  F3 D# o
8 B( }" J/ i% j8 K. [
    下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:% }% K0 }3 L6 P, v! P
, \3 t/ E/ b7 n1 Y1 t
    关闭VisualStudio->选择“修改”/ G5 L' D( H8 M, o$ M9 @0 I
2 j5 G( Q, J+ @! F2 O6 ?
    关闭窗口+ L, c0 H5 v& A# j% m9 q
. {: G/ [# Z1 J* ]% i9 ~
    neo-compiler" U" r; P5 o, B- V' Q
/ e3 y- a4 V0 u- }$ i
    在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:
+ `4 b/ j' Q. ~9 [3 I' {
6 l& h/ `/ {+ |) d* S2 ^3 J    文件->打开->项目/解决方案
5 j) n2 Q; {# U( F! ?
9 m- S) z! o# A: b: m    选择刚刚下载的neo-compiler项目
/ {$ o3 ]/ K9 u! O
- R5 d+ H! A$ s8 d) h9 {. F: R* R    打开后的界面(右侧)
, e, ]$ y( k0 G9 L. U3 ?1 I
0 [0 f# P, j# w% u/ M/ q0 y    选中neon
, Z' l6 h5 r3 i  f  Q. _8 Q# `# q0 ^6 k* r; ?
    右键->发布
4 D6 _2 a. k2 F- k0 x: i  F, M0 h) d5 C  _% V) O. N
    Configuration和TargetRuntime两个参数根据自己的需要修改并保存
3 `! P2 y# A- d) P
; T1 ^2 `; @/ }1 d7 r# t    neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog6 B( ^- |/ \  }2 j

  h0 ?4 W4 w/ N5 G; _9 A: v( H    点击发布. f+ E; L1 N2 V0 I7 g; C# y

) n, G  L4 D3 d& q( r    发布成功* e" r/ [1 e* c& u& W# K) K

; @. t6 }! l; U! x. @" q8 h% D    【注】在发布过程中遇到的问题:. }8 ?& v* U* C

; M% E# _! i; [! Q3 t1 @' J* |    发布失败3 Q% U, s, f& @1 `; g: P4 Q

$ _2 b; b, O: E1 r9 m    tmp966A.tmp
  b/ f& p4 Z( j
/ T. \) ^, |- c3 }/ V    咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:
% \. J/ Y& ?& Q) s2 H6 E
! Y$ I! Z! J6 i) N    进入neon目录# S# s7 S" u6 ?5 O8 L

5 R7 a+ u2 F; E2 h5 u    运行命令:dotnetpublish-rwin10-x64-cdebug1 }& A: j% J6 P( i! y# w; |6 y

  J3 Y: z% T2 w/ D! g" ?( I6 z    r参数c参数可以根据你的喜好填写
. `, k; L1 ]! S- q5 K* _8 v! q# Q" m6 k) q" H  a1 L, e( U+ O
    运行命令dotnetpublish-rwin10-x64-cdebug
  Q, B/ U8 w' c( q7 [$ `* C* P7 M: D
    验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:  ]  }- c  o& y$ n

- g: r. {3 R* M3 _# p    C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\
: }* x, f+ b0 k( u8 ?2 a1 Q% u/ N! i
    存在neon应用程序文件
  s4 k9 m/ h( E' V9 H; ?* I
0 T# J2 ~9 m$ L8 a8 c    命令运行成功后,重新点击一下“发布”按钮即可。. `  j0 E% B$ \
% E* M: Z; S  r; r3 x' k: k1 {  H% V  Q
    修改环境变量
/ {/ C9 b6 M' \3 d: U0 L& e/ A- M
$ b% I; C5 e, W* c. B    发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:
9 E) {5 I- a0 ^2 ^8 h. N8 m; o8 i
. _! w7 f( a3 U( j& d) r    bin\Release\PublishOutput8 i/ W  p; f' `+ D$ y
: j# Z5 U' h7 j* ^/ i
    然后需要添加path,让任何位置都能访问这个exe程序:2 S; {+ ]0 o7 F, s
$ |3 e8 x  ^: M0 F4 R" ~
    打开文件资源管理器->此电脑->属性:
4 K  h% A$ t. S: ]; \8 U* Z
8 M! z* D* C4 ]) s( s8 l    计算机->属性
/ ]/ v: z8 I- O! {: l2 K( p' i4 d! B( @' |* q3 G& c+ I
    点击“高级系统设置”,选择“环境变量”:5 U' G+ {6 h- f& W9 u7 }: E

9 k! g' i* b" D4 @' V    高级系统设置->环境变量
$ _) X1 H/ a/ j/ z7 Y% d: F: \7 E, n
    环境变量界面  h0 x+ Z% {. y+ n
  d9 |' D0 c4 w) r( F
    选中系统变量中的Path,点击“编辑”:
( m0 j/ W( `. M2 z6 x# I. d; ?1 B: n* [* |
    Path->编辑
0 [! j3 Y9 l' ]' [- D2 f
3 D* q8 f. I! e: S    新建
! W  c; |2 b' X# F2 y, d" V  g! e* \' d. p8 g% J
    拷贝该路径2 N' q- W* S3 v
! u8 Q& ?2 L6 w* q$ |
    粘贴并确定
  J2 J8 c) m; g" @6 p4 W/ e3 S+ @# U
+ a$ \: G1 P- O) `! J( @( c% \    再次确定
* h& H3 {, C! b& k- ?- {3 n) v- s
1 R' L, X$ |: |; [    添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:
7 N  Q, A! Q# @% w7 ]1 x
! f2 |8 p! ~7 I; G- _! G    验证环境变量是否配置成功
* W6 N& D" S/ F# s: C
4 T0 c. `8 x+ W+ n! H# _    创建项目6 @  C! C) m. ]

- _9 G; l$ l; @1 ]9 V+ `    以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):  H; X1 f% ^& ^6 V# ~- o$ q
! O0 u- }* v( |6 y& [
    新建->项目
. U/ R- P6 j: F" u0 C5 D+ h) x% |
  g0 [3 W8 s) r7 @( P    创建NEO智能合约项目* [/ D, K) p5 o1 N

$ N. R9 W/ Q! m& Q# z; D    创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:
' S- w% c5 \1 y& ]. \" u+ b, V" f
    智能合约c#文件
% g+ N3 S+ t. X8 p/ u  ]) L! _2 u9 L: b/ ^. l$ j! L( b) [
    出现错误:新建的NeoContract项目找不到Neo命名空间
: `0 ^% d+ H" v0 [* t8 `; `
7 ]! ]; t: T5 \    解决方法:
; {5 U+ b% }- L, k% C! {9 M
6 `1 q: F" K9 D/ p8 G    在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:
. b. J' k: N* Z; T  f& T' S
. D2 e. X1 w. t6 F: y8 d' r    还原NuGet程序包3 {& H7 _# n5 ~, |7 x

7 q1 v) T1 A- G6 C# s0 w: F    双击“引用”中的感叹号/ H/ S! q' y9 ?3 h% V8 m
; F5 C! V! M5 [# R, i
    错误解决
) w( d2 h4 v0 O/ N- @
2 e6 F4 V. {" P2 t5 y3 N, Q    编译项目8 G( q& F% ]! _+ c* l
7 w0 t6 X& g6 |# V0 d
    点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:3 B6 x4 }) y: ], z2 d

0 J7 s  ~& z& C6 u/ v. J    生成解决方案
# w. B$ q: z9 B8 S9 z. a+ ^" x5 e  K0 y& T1 r2 \9 G
    编译成功- b# i6 g& l. V  f
: _* H+ ?. z- R  @6 r
    编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:
( [' B9 z4 T$ f3 m& K
9 e: ?# {4 h  k1 b$ {    智能合约文件(项目名.avm)
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

chespher 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2