Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

chespher
193 0 0
开发工具/ x4 i" i6 k6 J

7 G4 h7 a# _0 d- {1 D% @    VisualStudio2017  R1 V9 U* b' `& c
, G- y6 N( q. i% k5 S$ @
    VisualStudio下载地址,安装或者更新到最新版
0 i3 h& b$ Q: l3 Q1 q
+ e; d" |8 U9 D$ ^    安装过程很简单,直接按照提示一步一步操作即可,需要注意的是在安装时需要勾选.NETCore跨平台开发,安装大概需要十几分钟或几十分钟:
- Q, Y) O. |0 h, L/ U
& p' B8 l/ O  h' Z: f/ f    VisualStudio2017安装(勾选.NETCore跨平台开发)  Y4 l. |2 |8 c0 x. {

5 A, X- n* X" L% v) u    VisualStudio安装成功6 @) q1 W/ B; p8 y

$ R6 a% U" A& a3 G: m( j0 G    安装NeoContractPlugin插件
* I! m: ?6 m# g- @; k- S7 y
3 V! I7 w4 [2 S: e/ ?$ z    打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):& l* s2 I2 j% D6 g. ^% X: e+ \
# u. o9 S/ ]5 z" @/ S; \. M* s
    工具->扩展和更新
/ T( O0 z3 v9 N' r' s" ~- j0 D2 n6 t& ?0 R
    联机->搜索“Neo”->下载“NeoContractPlugin”( ^) w; d  B8 F4 O6 d  V  {
8 v+ c# R1 R8 r: t- G
    下载好后,关闭窗口,并关闭VisualStudio,在弹出的窗口上选择“修改”:
) j: k. h, ~( n* Q5 e
+ L" w8 @" t" t" a    关闭VisualStudio->选择“修改”
# ]( L' K: B) ^/ m/ X" u; H$ ]( y  q$ I0 s# I- u0 p
    关闭窗口
8 p2 J# Y" v, C# o1 `6 w$ f0 j0 x9 {
6 M* ]* I2 @$ i& E" Q    neo-compiler
  t2 y5 L2 ^0 X0 ^
( X1 m" o/ _) ^/ t6 ^  u- W  g    在Github上下载neo-compiler项目,用VisualStudio2017打开该解决方案,发布其中的neon项目:. d# v; D2 O; o" O5 }

7 m. m) p. e2 ^) F0 z3 T. F3 y    文件->打开->项目/解决方案& B& T4 ?1 m  T5 x

' L/ U# u4 G6 N    选择刚刚下载的neo-compiler项目
* V3 ~9 i7 W2 b( }2 a8 K  s
" ?& i: b1 a0 X, F* b# u    打开后的界面(右侧)
* o8 ]/ t( \& ~2 b0 s0 M  ~$ t5 ?! O2 X5 q& q& _) Q+ ?5 h
    选中neon
- _" F; H8 G, i7 V- G# g) Y
& s" w0 P1 s( w    右键->发布
; ]/ H! L2 {; g3 J0 O
, ~. e  T' ~  m- Z4 |2 H+ Y    Configuration和TargetRuntime两个参数根据自己的需要修改并保存3 i+ k6 Y- Q; h  _5 ]+ t1 E9 T

7 D0 ^' E+ L, S3 O) C    neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog' g0 F. y$ ^8 y0 y
3 n. B" U5 z+ N; u
    点击发布8 g1 J, p: G! q

& g+ f8 ~* N& E1 [' Z    发布成功
6 b4 L' e3 p5 w. H% ?2 F- t' H. e1 H
3 R3 i+ X+ ]. [% H( ~1 q    【注】在发布过程中遇到的问题:0 m6 y% o& B& ~: S& A% D' @0 ^3 L

' v" o' d: x- B, ^  H1 K    发布失败' P2 S4 P, `/ ?) p/ w- k
- }3 y5 k" k5 R1 u  s9 v
    tmp966A.tmp$ I. g7 A: E( s- y2 o( _  H. M) P# h6 g( ]

. p* r. Q, X9 Z) b    咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:
1 b2 U( v. s% X; i7 l  T- W/ G  A
    进入neon目录
* q) L: v& X# `0 j) V! Y9 |* |
$ x8 j8 R; F9 U( q4 H7 L: x    运行命令:dotnetpublish-rwin10-x64-cdebug
/ U2 r! Q5 ^7 n! s5 f+ ?" U+ l) B. |3 E$ P" |! c; ^
    r参数c参数可以根据你的喜好填写( ~, o. N3 H6 k% i
0 L0 |8 P, Z4 E+ }* a6 d2 G" }5 x: T
    运行命令dotnetpublish-rwin10-x64-cdebug( E/ l9 E) q  ?  ]7 c/ n
. v8 A" e+ e: [
    验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了:
# i3 I+ P& `0 Z3 u6 N. N' K9 I7 w% t! {, W3 k" N
    C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\4 f9 d: J" p0 h: U

5 U1 d0 E+ x' X) K( Y3 S    存在neon应用程序文件
7 ~" V( Z/ w% y- ]0 x# f! i: K0 i* j1 A+ W
    命令运行成功后,重新点击一下“发布”按钮即可。
. v. U* G$ @7 S# X+ H" {- V8 a( |6 j# k( K' @6 s9 I$ p, Q7 U
    修改环境变量
: g7 A; a& s: I8 R! I. H" v9 l4 Z2 t+ e% {" w
    发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:
/ y9 V" J1 z2 |& g* A7 C% t* p% [5 n* C: g# _, b0 P
    bin\Release\PublishOutput
9 O( P& a5 G6 E* P# I2 p$ J/ G! {$ e; M& q# ^. N
    然后需要添加path,让任何位置都能访问这个exe程序:8 ]' d( @* v7 v# h+ R# m. ?1 T
3 F2 p8 t0 l( F& X( z
    打开文件资源管理器->此电脑->属性:# x" d( v; L; m6 I6 U2 Z
$ i5 s& W8 I2 ~
    计算机->属性
$ k1 t* ]0 y  p4 H7 k
1 Q( B- X/ z+ v8 B    点击“高级系统设置”,选择“环境变量”:
5 E4 F! {9 Z  M! H( h; D" e1 \1 I9 b5 x3 |2 Q3 X3 b
    高级系统设置->环境变量9 `# {- `, y  N4 C# _# q3 N

; Q2 v* Z9 x8 U* V    环境变量界面5 R- [1 T! D( H8 a" V- q. D

3 q) K' Z" I# S, ^: j    选中系统变量中的Path,点击“编辑”:
9 j0 V) Q: R% I7 }& i
) _4 q$ Z- A. e, O, I    Path->编辑
! D2 J/ q! @& Z  m; Q" y8 x
, ^' n2 R, z6 x6 U( x8 z5 ~    新建
) ]" Q  ^6 Z: `7 G+ Y+ {/ l6 h8 \2 ]* E% n; z  K
    拷贝该路径
/ r9 P6 r: N( I" G  N, u
1 g: a0 f0 J& g0 E    粘贴并确定
  Y6 ^" W" W: ?7 d  O% Z9 A; j3 W8 s/ L
    再次确定9 Q* |7 e5 \  k# m2 K" _

3 k. P  d& d) p& l  l& `7 g    添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:2 u6 x9 w8 G& b- G

+ h, i# A* r9 }    验证环境变量是否配置成功
' Q. H& S3 n  w1 j: x( o9 U. i$ H% _# g
9 f# `, T* L( L- N0 S% x    创建项目+ P/ Q& h! [; w: p

  f* l/ P4 n* E+ H' W    以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意):
6 L+ V* C: K" `) {" c5 y6 G- n+ R; y$ r1 a! o, H2 Y
    新建->项目
1 B. K' ~5 N/ q, {8 T2 z' a/ I. t
8 @% ~+ Y0 @( \) a3 J    创建NEO智能合约项目
- }  N# U2 M1 T  K; I% ?( Z5 y  ]! M, W0 e6 p+ [3 e
    创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:% y) ~8 |# I. q, y4 ?1 h) m2 f4 \

- O3 T$ ]0 o% M1 ^4 q4 ]- H) x    智能合约c#文件8 k. X: N+ F2 ^) A1 K
: R. r& p* F1 k9 t
    出现错误:新建的NeoContract项目找不到Neo命名空间5 l* G4 m5 K/ d7 D3 y" I' V% F& W

0 T: d2 m# O5 B/ o) N' z    解决方法:
( v# e# D) F7 [. r# X; R# G' a1 q9 W
    在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:; `/ b9 y- ]6 v( W6 p
& I( E, d& L4 [1 v/ \5 ^
    还原NuGet程序包
) x5 [* E2 \1 k  I; g. t$ O) x2 X
- }: c0 y' t; F( J! @1 ~    双击“引用”中的感叹号
8 I& _* j' w; g8 d# y4 x
6 u3 r- [5 ^, b: E    错误解决4 M1 U  ~+ ^" ^! K+ q2 ^, C# M2 q

+ s# f+ a( ]/ |$ W$ J; L1 V    编译项目# \# ?) p7 C. u7 R& d& n, U% [

' X, Z, a2 y( M6 c2 P    点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:% \6 V$ \: w' p$ u. k& ?
1 w: q$ w% @9 i
    生成解决方案
( j) ?2 a1 B- U7 d- [
& Q* f$ }8 }; U/ r6 u) @8 Z    编译成功! Q* p7 h/ `+ ^% E* `# t; A" k( w
1 L9 J1 w7 }$ {
    编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:
9 i, j# u8 t( ^# t2 d
$ m2 Y5 u$ t" q    智能合约文件(项目名.avm)
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

chespher 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2