如何用 C# 编写 NEO 智能合约
chespher
发表于 2022-12-2 02:20:05
62
0
0
) v$ v H/ s$ ~% h% v1 O, ?5 K
VisualStudio20171 w' L3 o( V, u$ e; l
VisualStudio下载地址,安装或者更新到最新版
' 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 {
VisualStudio安装成功
' ?# y/ c9 \/ Y! @) w2 F) n
安装NeoContractPlugin插件+ ^# \- @. } ?- ^$ z' g$ j
打开VisualStudio2017,打开工具,扩展和更新,在左侧点击联机,搜索Neo,安装NeoContractPlugin插件(该过程需要联网):! \9 P" z2 f: g2 F, B: g
工具->扩展和更新
8 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项目:
文件->打开->项目/解决方案
选择刚刚下载的neo-compiler项目
打开后的界面(右侧)
选中neon
Q. _8 Q# `# q0 ^6 k* r; ?
右键->发布
0 x: i F, M0 h) d5 C _% V) O. N
Configuration和TargetRuntime两个参数根据自己的需要修改并保存
neon项目默认的发布平台为win10-x64,如果你不是Windows10系统,需要修改发布平台,用文本编译器打开neon.csproj文件,将win10-x64更改为目标平台,如win7-64,然后用VS重新发布该项目即可。详细RID可以参考.NETCoreRuntimeIDentifier(RID)catalog6 B( ^- |/ \ }2 j
点击发布. f+ E; L1 N2 V0 I7 g; C# y
发布成功* e" r/ [1 e* c& u& W# K) K
【注】在发布过程中遇到的问题:. }8 ?& v* U* C
发布失败3 Q% U, s, f& @1 `; g: P4 Q
tmp966A.tmp
咨询NEO的开发人员,说是vs2017和dotnetcore这块有点问题,建议我使用命令行发布:
进入neon目录# S# s7 S" u6 ?5 O8 L
运行命令:dotnetpublish-rwin10-x64-cdebug1 }& A: j% J6 P( i! y# w; |6 y
r参数c参数可以根据你的喜好填写
8 v! q# Q" m6 k) q" H a1 L, e( U+ O
运行命令dotnetpublish-rwin10-x64-cdebug
( q7 [$ `* C* P7 M: D
验证是否成功,到该目录下查看是否有exe文件,有的话就说明成功了: ] }- c o& y$ n
C:\Users\Allen\Downloads\neo-compiler-master\neo-compiler-master\neon\bin\Release\netcoreapp1.0\win10-x64\publish\
( u8 ?2 a1 Q% u/ N! i
存在neon应用程序文件
命令运行成功后,重新点击一下“发布”按钮即可。. ` j0 E% B$ \
% E* M: Z; S r; r3 x' k: k1 { H% V Q
修改环境变量
发布成功后,会在bin\Release\PublishOutput目录下生成neon.exe文件:
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 d! B( @' |* q3 G& c+ I
点击“高级系统设置”,选择“环境变量”:5 U' G+ {6 h- f& W9 u7 }: E
高级系统设置->环境变量
% d: F: \7 E, n
环境变量界面 h0 x+ Z% {. y+ n
d9 |' D0 c4 w) r( F
选中系统变量中的Path,点击“编辑”:
2 z6 x# I. d; ?1 B: n* [* |
Path->编辑
新建
, d" V g! e* \' d. p8 g% J
拷贝该路径2 N' q- W* S3 v
! u8 Q& ?2 L6 w* q$ |
粘贴并确定
再次确定
添加完path后,运行CMD或者PowerShell测试一下(如果添加path前就已经启动了CMD则要关掉重启),输入neon后,没有报错,输出如图所示的版本号的提示信息即表示环境变量配置成功:
验证环境变量是否配置成功
创建项目6 @ C! C) m. ]
以上四步安装配置成功后,即可在VisualStudio2017中创建NEO智能合约项目(.NETFramework版本任意): H; X1 f% ^& ^6 V# ~- o$ q
! O0 u- }* v( |6 y& [
新建->项目
创建NEO智能合约项目* [/ D, K) p5 o1 N
创建项目好后,会自动生成一个c#文件,默认的类继承于SmartContract:
. \" u+ b, V" f
智能合约c#文件
! _2 u9 L: b/ ^. l$ j! L( b) [
出现错误:新建的NeoContract项目找不到Neo命名空间
解决方法:
在VS中右键解决方案文件,点击“还原NuGet程序包”,这时在“输出”面板会看到“正在还原NuGet程序包…”。所有程序包已经还原成功后,如果代码仍然报错,并且右侧“引用”中仍有个感叹号,可以尝试双击感叹号:
还原NuGet程序包3 {& H7 _# n5 ~, |7 x
双击“引用”中的感叹号/ H/ S! q' y9 ?3 h% V8 m
; F5 C! V! M5 [# R, i
错误解决
编译项目8 G( q& F% ]! _+ c* l
7 w0 t6 X& g6 |# V0 d
点击菜单栏上的“生成”->“生成解决方案”(快捷键Ctrl+Shift+B)开始编译程序:3 B6 x4 }) y: ], z2 d
生成解决方案
+ ^" x5 e K0 y& T1 r2 \9 G
编译成功- b# i6 g& l. V f
: _* H+ ?. z- R @6 r
编译成功后你会在该项目的bin/Debug目录下看到生成的项目名.avm文件,该文件即是生成的NEO智能合约文件:
智能合约文件(项目名.avm)
成为第一个吐槽的人