Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

chespher
68 0 0
开发工具
$ S# O0 I* v) a  b1 ]3 [, W) d: @" l: f2 ]. Y, [% _
    VisualStudio2017
5 @, ?5 V! h( J5 ^, U' G# r/ g/ f/ n9 q, i, V! I+ V
    VisualStudio下载地址,安装或者更新到最新版
4 J! p: Z, P4 [
1 p' Z9 {3 T4 C    安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:
+ g. i6 T( Z+ Q+ S! }1 N6 d' ?, I
0 Q8 d" {" [: [; e% U9 c) m8 i5 c) P    VisualStudio2017安装(勾选.NETCore跨平台开发)) h* J9 ?6 d0 ]) D; d% i

4 u6 y* F* P2 c! _: B$ t! g/ |    VisualStudio安装成功) ?9 K' g* X+ g" B9 ~/ l; R

! z# N' W4 @& R    安装NeoContractPlugin插件
% R. Q1 q$ a" P' n. G. \( o3 |6 M$ g; f, y) I- h
    打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):( }9 U+ L9 Y0 F) B- F6 E& o7 Q
9 U# I) W# N9 p1 K% a" g
    工具->扩展和更新
- e& q8 C) h# G# F8 X* C* u3 F9 P& y% v6 n3 T- {5 q
    联机->搜索“Neo”->下载“NeoContractPlugin”2 w/ ~$ _3 c" y
5 C; j( N) j$ M! D
    下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:
) s1 E6 n) [0 x2 l$ `% k6 I, w+ D' \' r& {$ p9 J1 }- D/ o6 b1 q" M" y
    关闭VisualStudio->选择“修改”
8 q8 h5 o% r# W" `( n: S9 z5 u7 U) U! k7 D+ W
    关闭窗口
+ _0 P2 ?, ]; o+ F( _8 c- c  G  N& Q5 f+ v' L
    neo-compiler. [" [/ z1 Y' T3 F3 @& |
* u! s8 |4 |. I* `: b( ~$ \6 p$ Q
    在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:$ W2 H* K) K+ f  u9 \9 c4 s
, Z+ C) l+ ~) Z) a4 h/ M
    文件->打开->项目/解决方案
  l5 x& T6 i& ^) G! ~3 f* S/ t5 U3 P; k8 ?
    选择刚刚下载的neo-compiler项目
' `3 L8 U# U# Y5 t0 N% ?) G6 Y$ Z) ~  e& ^0 C# l
    打开后的界面(右侧)  W4 q  S. N# k# b3 R, y
: F, x+ {1 @$ w1 }
    选中neon1 i# P2 `. x8 l* L8 }( T: A
  n% y7 ~( V7 K
    右键->发布
* p" V& {1 p) X- Z1 V% T5 V4 j' O  x! A/ v$ p
    Configuration和TargetRuntime两个参数根据自己的需要修改并保存
. L" t8 x* |4 {) a. W& F% b" f3 F2 j& i
    neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog9 r& ?# ^. N) h9 c& r4 d* K* h0 q
( p6 Y: e- F" I
    点击发布/ F/ g: {7 F$ M' S, g

+ r: t+ J- Y; s, ]- T, s    发布成功& L, P6 _( Z; f- a4 U

4 ~" G1 n1 V2 o0 g% b    【注】在发布过程中遇到的问题:
: n2 I% z5 f2 L3 H( \
* i: ^7 Q; d2 e$ @8 C    发布失败4 [$ _# \# x; J& a( o9 L

. m. a3 x0 `) j9 n- @9 E    tmp966A.tmp
+ P" j& h# r% h# z7 Y+ m( B" H& S: e0 T4 F
    咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:+ w  w$ s/ |6 L5 |+ W3 C
, y+ g( G) D% s# A; _5 o; V
    进入neon目录; w1 w, @- i" I! I" z! Z

6 l0 \9 y/ i5 i    运行命令:dotnetpublish-rwin10-x64-cdebug
1 v, l. u4 d' {  C
0 p3 z  o$ c- p5 ?2 k# L' q    r参数c参数可以根据你的喜好填写
+ c; a& l: F! z+ v
7 ]4 u5 J. u6 A/ C6 o    运行命令dotnetpublish-rwin10-x64-cdebug1 E! A+ @! p! z  g% E

9 P' h# K) l0 T2 |% h    验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:
: N5 O- Q# j5 G$ S
* }' v& v1 ~9 D: o6 Z    C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\
- @/ R# y; i; ^$ o# e
, R. o* S- b  u$ R2 K- L    存在neon应用程序文件$ o7 J( Z9 }% U- z6 a+ Q' R/ u! e4 ~, `

1 x* y" N) y2 p9 J' y4 c    命令运行成功后,重新点击一下“发布”按钮即可。6 j8 g' X7 r4 ~- j4 D

: i! Y4 b0 ^- ?% V) T+ c* H    修改环境变量4 R3 d, G& M, f9 P: m9 K- y) ^. n
" C9 Z' M9 |- Y+ P3 C3 b9 \3 }
    发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:
3 H5 F$ K/ M5 X) Y1 O) U
6 q) ]# S) }; n. Y    bin\Release\PublishOutput
. B; g2 ^, c& t$ M* C& x& `2 q, n. B: j0 z, h% ]
    然后需要添加path,让任何位置都能访问这个exe程序:$ C! X' D. p: v( [" g2 D

$ k; X0 A) C, M3 z9 S    打开文件资源管理器->此电脑->属性:
  u+ q& I7 m  `, I: F  [# ?3 |, ?6 m7 @' v3 o- h" L& i& O) t* Q
    计算机->属性2 x# o2 F) u- Y  h7 B( f
( h4 N/ R) ]' A; P2 w# v: D/ T
    点击“高级系统设置”,选择“环境变量”:
( K  L/ D9 {. X! L5 I# O( {- i! ?- `( }8 j
    高级系统设置->环境变量
, ^1 c6 c) y! p9 V2 w8 u$ B' S3 O
    环境变量界面% S+ x' O( }- X: y  F# M0 V

1 p, A- i0 |8 R! ?% [) K5 ]+ w/ k    选中系统变量中的Path,点击“编辑”:0 O) u: i4 ^' u3 {

% ?! T( T6 y. V& x! J5 f    Path->编辑
1 @2 @9 J0 r( d$ t+ S" U1 w! ~  y, P9 j2 [
    新建0 A" _* n1 Q. r2 F" C, I

2 R, U" W8 K4 h" ~! Y; |4 `; \# d! Q% t    拷贝该路径. m( v$ {- F# U  d& m, ]
: O6 D9 B- ]; `" a* ]. \
    粘贴并确定
, [& t0 j3 \. n7 C: Z+ }3 K. Q* ^8 C) r0 M" k
    再次确定9 Z; ?- c7 T, z9 O- s

$ ]( F4 b6 V8 k8 M, [3 R& \# @3 l8 v    添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:! H3 P9 p3 l4 s
2 F0 L* y. _3 W2 `8 ^$ c0 n
    验证环境变量是否配置成功3 ]) A' n0 S) v

6 F  b0 e7 g: s  ]9 p2 ^9 s    创建项目8 g  X9 U& `3 {

/ q, Y" I% ^6 `7 F" i1 k$ Z9 b    以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):
7 o: k% g" ~2 ^: G
$ c9 H1 _- d. H( Y" W8 t    新建->项目- @! P/ `7 I% O: d7 W* g
% L! y/ X7 j  D8 p
    创建NEO智能合约项目
6 x& f& I8 N( T9 B- S+ P, x1 p2 E) [' j5 k* f1 b8 ~* v8 [
    创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:
' |" J2 ]5 e1 Q# m" s  _/ X  V3 ?5 [% N/ M! w; l! _4 d( n
    智能合约c#文件8 }* b/ i: ]6 \7 N

( S" w. j3 b4 R3 }3 b2 I    出现错误:新建的NeoContract项目找不到Neo命名空间( [5 A4 o; y3 M1 o& {* H& i

3 p" p% W% O: l- t    解决方法:% P! }; m, E3 e: ]  a& }( q- m1 J

+ w0 }+ j) S& ^    在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:3 ]5 Y  d0 ~: u. b5 k/ |
* I" {- c# i: M/ o% f2 G
    还原NuGet程序包) y. C  g+ ?! \

( X: @/ C* {1 d    双击“引用”中的感叹号
2 J- w6 ~7 ]+ W
. q% F1 ?9 c0 u7 x% x; O3 l    错误解决
  B- _5 W  g; ]* Z# `3 ?4 l6 n" L, o- b
    编译项目- i, {9 F6 ]; A6 G3 h% P

7 `$ d0 z$ L/ U* v    点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:
) }2 R' m7 l- }% `6 p
1 O, g$ a8 {' s- F    生成解决方案( E5 f/ g8 }' z# J- ?
  C" }, q! }* A/ n  u
    编译成功
: j  q: A, a1 ^  l
9 Z3 w& M% d, Q8 J    编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:
6 |. @' M+ E, d5 V" h
( H* Z; Q: h; }: H: |" S/ a, j/ Y    智能合约文件(项目名.avm)
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

chespher 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2