首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

.NETC# 使用 #if Conditional 特性按条件编译代码不同原理适用场景

有小伙伴看到我有时写了 #if 有时写了 [Conditional] 问我两个不是一样吗,何必多此一举。然而实际上两者编译处理是不同,因此也有不同应用场景。 于是我写到这篇文章当中。...---- 条件编译符号预处理符号 我们有时会使用 #if DEBUG 或者 [Conditional("DEBUG")] 让我们代码仅在特定条件下编译。 而这里 DEBUG 是什么呢?...而在将 C# 代码编译到 dll 编译环节,这个叫做 “预处理符号”(Preprocessor symbols) 本文要讨论是 #if Conditional 使用,这是在 C# 代码中使用场景...; #endif 在这段代码中,#if DEBUG #endif 之间代码仅在 DEBUG 下会编译,在其他配置下是不会编译。...场景 因为 #if DEBUG #endif 仅仅影响包含在其内代码块,因此其仅仅影响写这点代码所在项目(或者说程序集)。于是使用 #if 只会影响实现代码。

39630

HardhatEthers引入并测试知名NFT智能合约

Hardhat 开发环境 如何编译合约并为其编写测试功能 本教程不涉及任何前端开发,但如果你有兴趣了解如何开始 Web3 dapp 开发,请随时在 dev.to 上查看教程: 在 React 中构建...Nomic Labs 伙伴们已经低调地创造了以太坊开发环境标准:Hardhat[7]。 它包括测试运行、编译、部署、丰富插件系统运行一切本地网络。...第 3 步:导入编译合约 让我们首先在根目录中创建一个名为 contracts 新文件夹(Hardhat 默认使用“contracts(合约)”文件夹作为源文件夹 - 如果你想更改该名称,你需要在...我们可以使用内置 compile 任务执行此操作 - 我们需要做就是运行: npx hardhat compile 当我们使用 Hardhat 编译合约时,将为每个合约生成两个文件,并放置在 artifacts...: 如何找到特定项目的智能合约代码 如何将该代码添加到本地开发环境 如何安装设置一个简单安全帽开发环境 如何编译合约并为其编写测试 希望这能让你对使用 Hardhat、Ethers、Chai Mocha

1.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

为Optimism Rollup Dapp 准备脚手架

关于Optimism Rollup 是如何工作[7],其他人已经写了更详细。这篇文章重点是我们可以在乐观以太坊上做什么,如何运行开发... 我们开始吧!...从用户开发角度来看,需要考虑主要问题之一是如何处理 L1 L2 网络,哪些要呈现给用户,以及如何确保钱包连接到正确网络。...因此,我们只需要做一些小改动,就可以使我们现有 scaffold-eth 上合约在 L2 上可行--我们只需要在我们 hardhat 配置中导入Optimism 编译器[17](然后编译所有合约...有一些细微差别--我们不能使用内置 Hardhat 网络,必须实例化我们自己提供者签名者。...在 Optimism 桥接:古英语 ERC20 虽然对于很多使用场景来说,使用他人部署 ETH 桥代币桥 可以满足大部分 L1 到 L2 桥接需求,但我们也想了解如何将自己 L1 ERC20

77940

结合 Hardhat 使用 Web3

使用NodeJS[3]版本要高于v16。 注意 我们使用NPM来安装依赖。...要使用此插件扩展Hardhat功能,我们必须在Hardhat配置文件hardhat.config.ts中导入web3-v4插件。请在配置文件顶部导入此内容。...编译、测试部署合约 •编译、部署合约 $ npx hardhat compile 执行上面的命令会创建一个名为artifacts文件夹,其中包含着构建信息编译合约。...现在是时候测试下我们合约是否如我们所期望了。因为我们使用Web3.js来向区块链广播存储数据,所以我们也使用相同协议查询修改数据。...项目 [5] 安装必要依赖项(包括hardhat-web3-v4): #安装必要依赖项包括hardhat-web3-v4 [6] 编写智能合约: #编写智能合约 [7] 编译、测试部署合约: #编译测试部署合约

7110

Foundry教程|如何调试部署Solidity智能合约

Foundry 提供了一套在 Rust 中构建工具,允许区块链开发者在 Solidity 中编写测试,并通过命令行部署与合约交互。 为什么用 Foundry?...forge install jamesbachini/myVault -hh 这里我们使用是 Github 用户名版本库名称,加上-hh 参数,用于迁移 Hardhat 版本库。...forge init myrepo 然后就可以继续编译测试智能合约了 forge build forge test 注意测试是如何通过,还得到了测试交易 Gas 成本 ---- 如何使用 Hardhat...= b"); fail(); } } 然后,我们可以在整个合约中使用这个断言,或者建立一个自定义断言库,并类似于我们先前导入标准库方式导入它们。...如果代码库包含许多不同智能合约,可以使用--match-contract将单个合约和它依赖关系分离出来,甚至可以使用--match-test命令行选项进行特定测试。

1.9K20

使用hardhat开发以太坊智能合约-搭建环境

本文作者:全干攻城尸[1] 本系列课程: 第一节:使用 hardhat 开发以太坊智能合约-搭建环境[2] 第二节:使用 hardhat 开发以太坊智能合约-测试合约[3] 第三节:使用 hardhat...开发以太坊智能合约-发布合约[4] 第四节:使用 hardhat 开发以太坊智能合约-验证合约[5] 在我们实际开发智能合约时候,以往开发一般都是使用 remix 在线编译器,它好处是即开即用,...该文件用于项目的配置使用,如区块链网络配置、合约编译版本配置等等,后续在讲解合约发布时候会具体讲解里面的区块链网络配置 通过本章学习,我们使用 hardhat 搭建起了一个基本工程项目,在下一章节里...,我会带领大家使用 hardhat 一起开发、部署合约,感兴趣小伙伴关注一下吧~ 参考资料 [1] 全干攻城尸: https://learnblockchain.cn/people/5344 [2]...使用hardhat开发以太坊智能合约-搭建环境: https://learnblockchain.cn/article/4885 [3] 使用hardhat开发以太坊智能合约-测试合约: https:/

82620

Solidity 智能合约开发 - 玩转 ethers.js

然而经过了一番调研,业界还是使用 HardHat 框架居多,也有更多拓展,且我关注 Solidity 教程也更新了 Javascript 版本,于是还是打算学习一下。...我们可以通过 yarn 安装 solc 命令行工具进行编辑,并且可以选择对应版本,命令如下: yarn add [email protected] 安装完成后,,我们可以通过 solcjs 命令进行编译...获取编译结果 编译完成后会生成 abi bytecode 文件,分别以 .bin .abi 为后缀。...Rinkeby 测试网络进行交互步骤,在真正生产项目开发中我们一般不会直接使用 ethers.js 这样库,而是会使用 Brownie、HardHat 这样进一步封装框架,但了解 Web3.py...后续我还会对 HardHat 框架使用作进一步讲解。

1K20

Go 语言开发环境搭建

Go编译器生成代码所针对平台CPU架构 本机CPU架构(例如,AMD64、Arm等) GOOS 用于指示Go编译器生成代码所针对操作系统 本机操作系统(例如,Linux、Darwin、Windows...用于指示存储构建结果缓存路径,这些缓存可能会被后续构建所使用 不同操作系统上有不同默认值。...每个Go项目都应该有自己目录,通常按照导入路径结构组织。...它告诉Go编译器在哪里找到标准库以及其他与Go相关工具资源。GOROOT默认值由Go安装程序设置,通常位于系统特定目录中,例如/usr/local/go或C:\Go。...goreturns - 添加快捷键运行goreturns格式化组织导入语句。 3.2 Goland 特点:Goland是JetBrains公司开发商业IDE,专门用于Go语言开发

55960

Solidity 智能合约开发 - Hardhat 框架使用

Solidity 智能合约开发 - 玩转 Web3.py Solidity 智能合约开发 - 玩转 ethers.js 但是在真正复杂业务场景中,我们往往会使用一些进一步封装框架,如 HardHat...Hardhat 介绍 Hardhat 是一个基于 JavaScript 智能合约开发环境,可以用于灵活地编译、部署、测试调试基于 EVM 智能合约,并且提供了一系列工具链整合代码与外部工具,还提供了丰富插件生态...优化代码格式化 VS Code 配置 我本地是通过 VS Code 进行代码开发,可以通过安装 Solidity + Hardhat 与 Prettier 两个插件进行代码格式化,可以使用打开 VS...yarn hardhat compile 命令编译合约: 添加 dotenv 支持 在开始编写部署脚本之前,我们先配置一下 dotenv 插件,这样我们就可以使用 dotenv 获取环境变量。...,如本地测试、开发、上线环境等等,Hardhat 也提供了便捷方式配置网络环境。

1.4K20

NFT新手教程: 如何编写部署NFT(第1部分)

译文出自:登链翻译计划[1] 译者:翻译小组[2] 校对:Tiny 熊[3] 本教程是 NFT 系列第一部分,将带你逐步了解如何使用以太坊 Inter Planetary File System(IPFS...在本教程第二部分,将讨论如何使用我们智能合约铸造一个 NFT,在第三部分,我们将解释如何在 MetaMask 上查看你 NFT。...第 1 步:连接到以太坊网络 有一堆方法可以向以太坊区块链提出请求,但为了方便起见,我们将使用Alchemy[12]上免费账户,这是一个区块链开发者平台 API,允许我们与以太坊链进行通信,而无需运行我们自己节点...Hardhat[20]是一个开发环境,用于编译、部署、测试调试你以太坊软件。...为了确保到目前为止一切正常,让我们编译合约。

3.9K32

深入理解Solidity之二---Solidity源代码文件结构

Solidity源代码文件结构 源文件可以包含任意数量合约定义,包括指令编译指示。...版本Pragma 源文件可以(也应该)用所谓版本注释注释,以拒绝被编译为未来可能引入不兼容更改编译器版本。...版本附注使用如下: pragma solidity ^0.4.0; 这样源代码文件不会使用早于版本0.4.0编译器进行编译,并且它也不适用于从版本0.5.0开始编译器(第二个条件是使用^添加)。...可以为编译器版本指定更复杂规则,表达式遵循npm使用规则。...在实际编译器使用 调用编译器时,不仅可以指定如何发现路径第一个元素,但可以指定路径前缀重新映射,以便例如 github.com/ethereum/dapp-bin/library被重新映射到/usr

56120

使用hardhat 开发以太坊智能合约-发布合约

开发以太坊智能合约-发布合约[4] 第四节:使用 hardhat 开发以太坊智能合约-验证合约[5] 通过我们前面两节课程学习,我们掌握了 hardhat 开发环境基本搭建流程以及合约测试方法,...下面我们学习一下如何使用 hardhat 发布一个合约到区块链网络上 一、部署脚本 1、脚本文件说明 在工程项目 scripts 中,我们可以找到一个名为 deploy.js,这个文件就是我们部署合约使用脚本文件...配置文件,这个配置文件主要用来配置 solidity 编译配置以及 hardhat 需要使用一些配置信息 solidity: "0.8.17", 上面代码配置了 solidity 编译版本,我们可以根据需要自行修改...通过本节课程学习,我们掌握了合约部署方法,已经如何配置区块链网络,并在真实区块链网络上进行合约部署,下一节我们将会讲解如何使用 hardhat 进行合约验证操作 作者说: 文章是否能够顺畅阅读以及理解...有任何意见建议欢迎评论区给我留言 参考资料 [1] 全干攻城尸: https://learnblockchain.cn/people/5344 [2] 使用hardhat开发以太坊智能合约-搭建环境

1.4K20

【Rust日报】2021-12-19 Foundry:以太坊应用程序开发工具包

foundry:以太坊应用程序开发工具包 一个用 Rust 编写用于以太坊应用程序开发快速、便携模块化工具包。...包括: Forge:以太坊测试框架(如 Truffle、Hardhat Dapptools)。 Cast:瑞士军刀,用于与 EVM 智能合约交互、发送交易获取链数据。...特点: 快速、灵活编译管道 Solidity 编译器版本自动检测安装 增量编译和缓存:仅重新编译更改文件 并行编译 非标准目录结构支持 测试是用 Solidity 编写 使用收缩输入打印反例快速模糊测试...快速远程 RPC forking 模式利用 Rust 异步基础架构 灵活 Debug 日志 Dapptools 风格,使用 DsTest 发出日志 Hardhat 风格,使用流行 console.sol.../gakonst/foundry chirperjax:简单2D游戏平台 一个简单 Rust 2D 平台游戏,使用了 Gate Collider 库。

54530

使用hardhat 开发以太坊智能合约-测试合约

本文作者:全干攻城尸[1] 本系列课程: 第一节:使用 hardhat 开发以太坊智能合约-搭建环境[2] 第二节:使用 hardhat 开发以太坊智能合约-测试合约[3] 第三节:使用 hardhat...开发以太坊智能合约-发布合约[4] 第四节:使用 hardhat 开发以太坊智能合约-验证合约[5] 上一章我们讲解了如何搭建基本 hardhat 开发环境,这一章我们来讲一下如何测试、部署合约 特别提醒...在 hardhat 里,我们使用 chaijs Chaijs 官网[6] 进行断言测试, 感兴趣朋友,可以浏览 chai 官网获取更多信息,通过使用 expect 方法,进行断言测试 describe...2.4 测试演示 接下来,让我们运行测试,来看一下测试结果 使用如下命令进行合约测试: npx hardhat test 从图中打印信息我们可以清晰看出测试结果,值得注意点是,打印也是具有层级...,这个是因为我们循环嵌套使用 describe 产生效果,通过嵌套使用,可以让我们测试结果变得更为清晰,推荐大家使用 通过本章学习,我们了解了合约是如何进行测试,以及测试需要注意一些事项,接下来我们会讲解如何进行合约部署

98520

【Web3 开发系列教程—创建你第一个智能合约(2)】部署第一个智能合约

如果你是区块链开发新手并且不知道从哪里开始,或者你只是想了解如何部署智能合约并与之交互,那么本指南适合你。...为简单起见,我们将在 Alchemy 上使用免费帐户(如果你还没有 Alchemy 帐户,请点击在此处免费注册),这是一个区块链开发平台 API,允许我们与以太坊链进行通信,而无需运行我们自己节点。...Hardhat 是一个用于编译、部署、测试调试以太坊软件开发环境。...智能合约是用一种称为 Solidity 语言编写,我们将使用编写我们 HelloWorld.sol 智能合约。‌...将以下内容复制并粘贴到你 HelloWorld.sol 文件中,并确保阅读注释以了解此合约作用: // 使用语义版本控制指定 Solidity 版本

78920

本体技术视点 | 关于本体EVM合约开发,你必须知道事(三)

上一期,我们介绍了在本体上开发部署 EVM 合约工具,以及如何使用 MetaMask 插件数据客户端来管理以太坊数据客户端。这一期,我们将为您带来本体 EVM 合约开发流程演示。...第四部分 EVM 合约开发流程演示 下面我们将使用 Hardhat 工具演示在本体网络中开发部署测试 EVM 合约完整流程。...例如,红包总金额是100个通证,红包数量是10,即有10个不同地址领取红包。为了简单起见,我们设置每个红包金额相等, 也就是每个地址可以领10个通证。...4.3 使用 Hardhat 编译测试合约 4.3.1 创建 Hardhat 项目 mkdir hardhatdemo cd hardhatdemo npm init npm install --save-dev...下期,我们将为您提供 Web3 API 参考,并教您如何使用 Ontology Bridge 本体跨链桥实现本体数字资产与以太坊数字资产一键互跨,敬请期待。

46530

Solidity 智能合约开发 - 玩转 Web3.py

前言 在前文《Solidity 智能合约开发 - 基础》中,我们学习了 Solidity 基本语法,并且了解了可以通过 Brownie 与 HardHat 等框架进行调试。...,通过一个 People 结构体对象存储人名和他喜欢数字,通过一个数组存储多个人信息,并提供了添加、查找方法。...Solidity 编译程序,使用 solcx 库中compile_standard 方法对上文读取合约源文件进行编译,并将编译结果存入变量 compiled_sol 中。...安装完成后选择 Quick Start 即可快速启动一条本地运行区块链网络,并初始化了十个拥有 100 ETH 账户,开发调试过程中可使用。...,在真正生产项目开发中我们一般不会直接使用 Web3.py 这样库,而是会使用 Brownie、HardHat 等进一步封装库,但了解 Web3.py 或 Web3.js 等库使用方法也非常重要

1.2K20

Hardhat 中文文档请查收

Hardhat 是一个编译、部署、测试调试以太坊应用开发环境。它可以帮助开发人员管理自动化构建智能合约 dApps 过程中固有的重复性任务,并围绕这一工作流程轻松引入更多功能。...这意味着 hardhat 在最核心地方是编译、运行测试智能合约。 Hardhat 内置了 Hardhat 网络,这是一个专为开发设计本地以太坊网络。...Hardhat Runner 是与 Hardhat 交互 CLI 命令,是一个可扩展任务运行器。它是围绕任务插件概念设计。每次你从 CLI 运行 Hardhat 时,你都在运行一个任务。...例如,npx hardhat compile运行是内置compile任务。任务可以调用其他任务,允许定义复杂工作流程。用户插件可以覆盖现有的任务,从而定制扩展工作流程。...Hardhat 很多功能都来自于插件,而作为开发者,你可以自由选择想使用插件。Hardhat 不限制使用什么工具,但它确实有一些内置默认值。所有这些都可以覆盖。 文档目录摘选 ?

2.6K40

【C 语言】编译过程 分析 ( 预处理 | 编译 | 汇编 | 链接 | 宏定义 | 条件编译 | 编译器指示字 )

解决方案 2 include 间接包含 示例 正确处理方法 条件编译控制示例 编译不同产品 控制开发版本发布版本编译编译指示字 error line error 编译指示字 1 error..., 控制软件分支编译; 2.区分版本 : 区分软件调试版本 正式上线版本, 开发版本肯定有很多调试信息, 正式版没有冗余信息; 条件编译 注意点 : 1.命令行定义宏 : 可以使用 gcc...: 开发中, 可以条件编译维护一套代码, 编译不同产品 ; 4.开发正式版区分 : 使用条件编译可以区分产品开发调试版本 正式发布版本 ; ---- (2) 条件编译 示例 (简单条件编译...条件编译控制示例 ( 编译不同产品 | 控制开发版本发布版本编译) ---- 条件编译控制代码示例 : 1.代码 : #include //控制开发版本与发布版本 : //...#pragma 作用 : 该 编译器指示指示编译器完成一些特定操作 ; 2.编译器特有, 不可移植 : #pragma 很多指示字 参数, 这些参数 都是编译器 特有的, 编译器指示字 在 编译器之间不通用

1.1K10
领券