Skip to content

Commit 765f724

Browse files
committed
Backend: update Nethereum to latest version
This commit updates Nethereum to latest version to support extracting token transfer amount from the raw tx created when sending (hot-storage) or signing (cold-storage). It's noteworthy to say that Web3 no longer accepts a timeout as an argument. Nethereum now supports different types of transactions like those that support EIP-1559, at this moment there's no clear benefit for migrating especially given the fact that it will causes incompatiblity with ETC so we will continue to use Legacy types for now.
1 parent 2d51a4d commit 765f724

File tree

9 files changed

+91
-39
lines changed

9 files changed

+91
-39
lines changed

src/GWallet.Backend.Tests/GWallet.Backend.Tests-legacy.fsproj

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@
130130
<HintPath>..\..\packages\NBitcoin.Altcoins.3.0.8\lib\net452\NBitcoin.Altcoins.dll</HintPath>
131131
</Reference>
132132
<Reference Include="Microsoft.Extensions.Logging.Abstractions">
133-
<HintPath>..\..\packages\Microsoft.Extensions.Logging.Abstractions.1.0.2\lib\netstandard1.1\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
133+
<HintPath>..\..\packages\Microsoft.Extensions.Logging.Abstractions.6.0.0\lib\net461\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
134134
</Reference>
135135
<Reference Include="NBitcoin">
136136
<HintPath>..\..\packages\NBitcoin.6.0.17\lib\net461\NBitcoin.dll</HintPath>
@@ -152,10 +152,20 @@
152152
<Reference Include="System.Runtime.Extensions">
153153
<HintPath>..\..\packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll</HintPath>
154154
</Reference>
155+
<Reference Include="System.Numerics.Vectors">
156+
<HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
157+
</Reference>
158+
<Reference Include="System.Runtime.CompilerServices.Unsafe">
159+
<HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
160+
</Reference>
161+
<Reference Include="System.Memory">
162+
<HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
163+
</Reference>
155164
</ItemGroup>
156165
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
157166
Other similar extension points exist, see Microsoft.Common.targets.
158167
<Target Name="AfterBuild">
159168
</Target>
160169
-->
170+
<Import Project="..\..\packages\Microsoft.Extensions.Logging.Abstractions.6.0.0\build\Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('..\..\packages\Microsoft.Extensions.Logging.Abstractions.6.0.0\build\Microsoft.Extensions.Logging.Abstractions.targets')" />
161171
</Project>

src/GWallet.Backend.Tests/packages.config

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<packages>
33
<package id="FSharp.Core" version="4.7.0" targetFramework="net461" />
44
<package id="Fsdk" version="0.6.0--date20230530-1155.git-3bb8d08" targetFramework="net46" />
5-
<package id="Microsoft.Extensions.Logging.Abstractions" version="1.0.2" targetFramework="net46" />
5+
<package id="Microsoft.Extensions.Logging.Abstractions" version="6.0.0" targetFramework="net471" />
66
<package id="NBitcoin" version="6.0.17" targetFramework="net471" />
77
<package id="NBitcoin.Altcoins" version="3.0.8" targetFramework="net452" />
88
<package id="Newtonsoft.Json" version="13.0.2" targetFramework="net46" />
@@ -15,10 +15,13 @@
1515
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="net471" />
1616
<package id="System.Globalization" version="4.3.0" targetFramework="net471" />
1717
<package id="System.Linq" version="4.3.0" targetFramework="net471" />
18+
<package id="System.Memory" version="4.5.4" targetFramework="net471" />
1819
<package id="System.Net.Requests" version="4.3.0" targetFramework="net46" />
20+
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net471" />
1921
<package id="System.Reflection" version="4.3.0" targetFramework="net471" />
2022
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="net471" />
2123
<package id="System.Runtime" version="4.3.0" targetFramework="net471" />
24+
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net471" />
2225
<package id="System.Runtime.Extensions" version="4.3.0" targetFramework="net471" />
2326
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net471" />
2427
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net46" />

src/GWallet.Backend/Ether/EtherAccount.fs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ open System.Numerics
88
open System.Threading.Tasks
99

1010
open Nethereum.ABI.Decoders
11+
open Nethereum.Model
1112
open Nethereum.Signer
1213
open Nethereum.KeyStore
1314
open Nethereum.Util
@@ -20,7 +21,7 @@ open GWallet.Backend.FSharpUtil.UwpHacks
2021
module internal Account =
2122

2223
let private addressUtil = AddressUtil()
23-
let private signer = TransactionSigner()
24+
let private signer = LegacyTransactionSigner()
2425

2526
let private KeyStoreService = KeyStoreService()
2627

@@ -229,7 +230,7 @@ module internal Account =
229230
let private ValidateMinerFee (trans: string) =
230231
let intDecoder = IntTypeDecoder()
231232

232-
let tx = TransactionFactory.CreateTransaction trans
233+
let tx = TransactionFactory.CreateTransaction trans :?> SignedLegacyTransaction
233234

234235
let amountInWei = intDecoder.DecodeBigInteger tx.Value
235236

@@ -358,8 +359,7 @@ module internal Account =
358359
else
359360
failwith <| SPrintF1 "Assertion failed: Ether currency %A not supported?" account.Currency
360361

361-
let chain = GetNetwork account.Currency
362-
if not (signer.VerifyTransaction(trans, chain)) then
362+
if not (TransactionVerificationAndRecovery.VerifyTransaction trans) then
363363
failwith "Transaction could not be verified?"
364364
trans
365365

@@ -454,7 +454,7 @@ module internal Account =
454454
signedTransaction.TransactionInfo.Proposal :> ITransactionDetails
455455

456456
| _ ->
457-
let getTransactionChainId (tx: TransactionBase) =
457+
let getTransactionChainId (tx: SignedLegacyTransactionBase) =
458458
// the chain id can be deconstructed like so -
459459
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md
460460
// into one of the following -
@@ -465,22 +465,22 @@ module internal Account =
465465
let chainId = (v - BigInteger 35) / BigInteger 2
466466
chainId
467467

468-
let getTransactionCurrency (tx: TransactionBase) =
468+
let getTransactionCurrency (tx: SignedLegacyTransactionBase) =
469469
match int (getTransactionChainId tx) with
470470
| chainId when chainId = int Config.EthNet -> ETH
471471
| chainId when chainId = int Config.EtcNet -> ETC
472472
| other -> failwith <| SPrintF1 "Could not infer currency from transaction where chainId = %i." other
473473

474-
let tx = TransactionFactory.CreateTransaction signedTransaction.RawTransaction
474+
let tx = TransactionFactory.CreateTransaction signedTransaction.RawTransaction :?> SignedLegacyTransaction
475475

476476
// HACK: I prefix 12 elements to the address due to AddressTypeDecoder expecting some sort of header...
477477
let address = AddressTypeDecoder().Decode (Array.append (Array.zeroCreate 12) tx.ReceiveAddress)
478478

479-
let destAddress = addressUtil.ConvertToChecksumAddress address
479+
let destAddress = address.ConvertToEthereumChecksumAddress()
480480

481481
let txDetails =
482482
{
483-
OriginAddress = signer.GetSenderAddress signedTransaction.RawTransaction
483+
OriginAddress = TransactionVerificationAndRecovery.GetSenderAddress signedTransaction.RawTransaction
484484
Amount = UnitConversion.Convert.FromWei (IntTypeDecoder().DecodeBigInteger tx.Value)
485485
Currency = getTransactionCurrency tx
486486
DestinationAddress = destAddress

src/GWallet.Backend/Ether/EtherServer.fs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ open System.Linq
88

99
open Nethereum.Util
1010
open Nethereum.Hex.HexTypes
11+
open Nethereum.JsonRpc.Client
1112
open Nethereum.Web3
1213
open Nethereum.RPC.Eth.DTOs
1314
open Nethereum.StandardTokenEIP20.ContractDefinition
@@ -20,8 +21,8 @@ type BalanceType =
2021
| Unconfirmed
2122
| Confirmed
2223

23-
type SomeWeb3 (connectionTimeOut, url: string) =
24-
inherit Web3 (connectionTimeOut, url)
24+
type SomeWeb3 (url: string) =
25+
inherit Web3 (url)
2526

2627
member val Url = url with get
2728

@@ -67,7 +68,7 @@ module Web3ServerSeedList =
6768

6869
module Server =
6970

70-
let private Web3Server (connectionTimeOut, serverDetails: ServerDetails) =
71+
let private Web3Server (serverDetails: ServerDetails) =
7172
match serverDetails.ServerInfo.ConnectionType with
7273
| { Protocol = Tcp _ ; Encrypted = _ } ->
7374
failwith <| SPrintF1 "Ether server of TCP connection type?: %s" serverDetails.ServerInfo.NetworkPath
@@ -78,7 +79,7 @@ module Server =
7879
else
7980
"http"
8081
let uri = SPrintF2 "%s://%s" protocol serverDetails.ServerInfo.NetworkPath
81-
SomeWeb3 (connectionTimeOut, uri)
82+
SomeWeb3 uri
8283

8384
let HttpRequestExceptionMatchesErrorCode (ex: Http.HttpRequestException) (errorCode: int): bool =
8485
ex.Message.StartsWith(SPrintF1 "%i " errorCode) || ex.Message.Contains(SPrintF1 " %i " errorCode)
@@ -192,7 +193,7 @@ module Server =
192193
]
193194

194195
let MaybeRethrowRpcResponseException (ex: Exception): unit =
195-
let maybeRpcResponseEx = FSharpUtil.FindException<JsonRpcSharp.Client.RpcResponseException> ex
196+
let maybeRpcResponseEx = FSharpUtil.FindException<RpcResponseException> ex
196197
match maybeRpcResponseEx with
197198
| Some rpcResponseEx ->
198199
if not (isNull rpcResponseEx.RpcError) then
@@ -235,7 +236,7 @@ module Server =
235236

236237
let MaybeRethrowRpcClientTimeoutException (ex: Exception): unit =
237238
let maybeRpcTimeoutException =
238-
FSharpUtil.FindException<JsonRpcSharp.Client.RpcClientTimeoutException> ex
239+
FSharpUtil.FindException<RpcClientTimeoutException> ex
239240
match maybeRpcTimeoutException with
240241
| Some rpcTimeoutEx ->
241242
raise <| ServerTimedOutException(exMsg, rpcTimeoutEx)
@@ -252,7 +253,7 @@ module Server =
252253

253254
// this could be a Xamarin.Android bug (see https://gitlab.com/nblockchain/geewallet/issues/119)
254255
let MaybeRethrowObjectDisposedException (ex: Exception): unit =
255-
let maybeRpcUnknownEx = FSharpUtil.FindException<JsonRpcSharp.Client.RpcClientUnknownException> ex
256+
let maybeRpcUnknownEx = FSharpUtil.FindException<RpcClientUnknownException> ex
256257
match maybeRpcUnknownEx with
257258
| Some _ ->
258259
let maybeObjectDisposedEx = FSharpUtil.FindException<ObjectDisposedException> ex
@@ -266,12 +267,12 @@ module Server =
266267
()
267268

268269
let MaybeRethrowInnerRpcException (ex: Exception): unit =
269-
let maybeRpcUnknownEx = FSharpUtil.FindException<JsonRpcSharp.Client.RpcClientUnknownException> ex
270+
let maybeRpcUnknownEx = FSharpUtil.FindException<RpcClientUnknownException> ex
270271
match maybeRpcUnknownEx with
271272
| Some rpcUnknownEx ->
272273

273274
let maybeDeSerializationEx =
274-
FSharpUtil.FindException<JsonRpcSharp.Client.DeserializationException> rpcUnknownEx
275+
FSharpUtil.FindException<DeserializationException> rpcUnknownEx
275276
match maybeDeSerializationEx with
276277
| None ->
277278
()
@@ -393,10 +394,10 @@ module Server =
393394
return raise <| FSharpUtil.ReRaise ex
394395
}
395396

396-
let connectionTimeout = Config.DEFAULT_NETWORK_TIMEOUT
397+
ClientBase.ConnectionTimeout <- Config.DEFAULT_NETWORK_TIMEOUT
397398

398399
async {
399-
let web3Server = Web3Server (connectionTimeout, server)
400+
let web3Server = Web3Server (server)
400401
try
401402
return! HandlePossibleEtherFailures (web3ClientFunc web3Server)
402403

@@ -674,7 +675,7 @@ module Server =
674675
web3Funcs
675676
with
676677
| ex ->
677-
match FSharpUtil.FindException<JsonRpcSharp.Client.RpcResponseException> ex with
678+
match FSharpUtil.FindException<RpcResponseException> ex with
678679
| None ->
679680
return raise (FSharpUtil.ReRaise ex)
680681
| Some rpcResponseException ->

src/GWallet.Backend/Ether/TokenManager.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,6 @@ module TokenManager =
4747

4848
// this is a dummy instance we need in order to pass it to base class of StandardTokenService, but not
4949
// really used online; FIXME: propose "Web3-less" overload to Nethereum
50-
let private dummyOfflineWeb3 = Web3 Config.DEFAULT_NETWORK_TIMEOUT
50+
let private dummyOfflineWeb3 = Web3()
5151
type OfflineTokenServiceWrapper(currency: Currency) =
5252
inherit TokenServiceWrapper(dummyOfflineWeb3, currency)

src/GWallet.Backend/GWallet.Backend-legacy.fsproj

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@
198198
<HintPath>..\..\packages\Xamarin.Essentials.1.0.0\lib\netstandard1.0\Xamarin.Essentials.dll</HintPath>
199199
</Reference>
200200
<Reference Include="Microsoft.Extensions.Logging.Abstractions">
201-
<HintPath>..\..\packages\Microsoft.Extensions.Logging.Abstractions.1.0.2\lib\netstandard1.1\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
201+
<HintPath>..\..\packages\Microsoft.Extensions.Logging.Abstractions.6.0.0\lib\net461\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
202202
</Reference>
203203
<Reference Include="JsonRpcSharp.TcpClient">
204204
<HintPath>..\..\packages\JsonRpcSharp.0.98.0--date20230731-1252.git-6788e32\lib\netstandard2.0\JsonRpcSharp.TcpClient.dll</HintPath>
@@ -224,38 +224,59 @@
224224
<Reference Include="JsonRpcSharp.WebSocketClient">
225225
<HintPath>..\..\packages\JsonRpcSharp.0.98.0--date20230731-1252.git-6788e32\lib\netstandard2.0\JsonRpcSharp.WebSocketClient.dll</HintPath>
226226
</Reference>
227+
<Reference Include="ADRaffy.ENSNormalize">
228+
<HintPath>..\..\packages\ADRaffy.ENSNormalize.0.1.5\lib\net461\ADRaffy.ENSNormalize.dll</HintPath>
229+
</Reference>
230+
<Reference Include="Nethereum.BlockchainProcessing">
231+
<HintPath>..\..\packages\Nethereum.3.99.0--date20231003-1147.git-b9a16cf\lib\netstandard2.0\Nethereum.BlockchainProcessing.dll</HintPath>
232+
</Reference>
233+
<Reference Include="Nethereum.JsonRpc.Client">
234+
<HintPath>..\..\packages\Nethereum.3.99.0--date20231003-1147.git-b9a16cf\lib\netstandard2.0\Nethereum.JsonRpc.Client.dll</HintPath>
235+
</Reference>
236+
<Reference Include="Nethereum.JsonRpc.RpcClient">
237+
<HintPath>..\..\packages\Nethereum.3.99.0--date20231003-1147.git-b9a16cf\lib\netstandard2.0\Nethereum.JsonRpc.RpcClient.dll</HintPath>
238+
</Reference>
239+
<Reference Include="Nethereum.Merkle.Patricia">
240+
<HintPath>..\..\packages\Nethereum.3.99.0--date20231003-1147.git-b9a16cf\lib\netstandard2.0\Nethereum.Merkle.Patricia.dll</HintPath>
241+
</Reference>
242+
<Reference Include="Nethereum.Model">
243+
<HintPath>..\..\packages\Nethereum.3.99.0--date20231003-1147.git-b9a16cf\lib\netstandard2.0\Nethereum.Model.dll</HintPath>
244+
</Reference>
245+
<Reference Include="Nethereum.Signer.EIP712">
246+
<HintPath>..\..\packages\Nethereum.3.99.0--date20231003-1147.git-b9a16cf\lib\netstandard2.0\Nethereum.Signer.EIP712.dll</HintPath>
247+
</Reference>
227248
<Reference Include="Nethereum.ABI">
228-
<HintPath>..\..\packages\Nethereum.0.95.0--date20210125-0551.git-05a29e9\lib\netstandard2.0\Nethereum.ABI.dll</HintPath>
249+
<HintPath>..\..\packages\Nethereum.3.99.0--date20231003-1147.git-b9a16cf\lib\netstandard2.0\Nethereum.ABI.dll</HintPath>
229250
</Reference>
230251
<Reference Include="Nethereum.Accounts">
231-
<HintPath>..\..\packages\Nethereum.0.95.0--date20210125-0551.git-05a29e9\lib\netstandard2.0\Nethereum.Accounts.dll</HintPath>
252+
<HintPath>..\..\packages\Nethereum.3.99.0--date20231003-1147.git-b9a16cf\lib\netstandard2.0\Nethereum.Accounts.dll</HintPath>
232253
</Reference>
233254
<Reference Include="Nethereum.Contracts">
234-
<HintPath>..\..\packages\Nethereum.0.95.0--date20210125-0551.git-05a29e9\lib\netstandard2.0\Nethereum.Contracts.dll</HintPath>
255+
<HintPath>..\..\packages\Nethereum.3.99.0--date20231003-1147.git-b9a16cf\lib\netstandard2.0\Nethereum.Contracts.dll</HintPath>
235256
</Reference>
236257
<Reference Include="Nethereum.Hex">
237-
<HintPath>..\..\packages\Nethereum.0.95.0--date20210125-0551.git-05a29e9\lib\netstandard2.0\Nethereum.Hex.dll</HintPath>
258+
<HintPath>..\..\packages\Nethereum.3.99.0--date20231003-1147.git-b9a16cf\lib\netstandard2.0\Nethereum.Hex.dll</HintPath>
238259
</Reference>
239260
<Reference Include="Nethereum.KeyStore">
240-
<HintPath>..\..\packages\Nethereum.0.95.0--date20210125-0551.git-05a29e9\lib\netstandard2.0\Nethereum.KeyStore.dll</HintPath>
261+
<HintPath>..\..\packages\Nethereum.3.99.0--date20231003-1147.git-b9a16cf\lib\netstandard2.0\Nethereum.KeyStore.dll</HintPath>
241262
</Reference>
242263
<Reference Include="Nethereum.RLP">
243-
<HintPath>..\..\packages\Nethereum.0.95.0--date20210125-0551.git-05a29e9\lib\netstandard2.0\Nethereum.RLP.dll</HintPath>
264+
<HintPath>..\..\packages\Nethereum.3.99.0--date20231003-1147.git-b9a16cf\lib\netstandard2.0\Nethereum.RLP.dll</HintPath>
244265
</Reference>
245266
<Reference Include="Nethereum.RPC">
246-
<HintPath>..\..\packages\Nethereum.0.95.0--date20210125-0551.git-05a29e9\lib\netstandard2.0\Nethereum.RPC.dll</HintPath>
267+
<HintPath>..\..\packages\Nethereum.3.99.0--date20231003-1147.git-b9a16cf\lib\netstandard2.0\Nethereum.RPC.dll</HintPath>
247268
</Reference>
248269
<Reference Include="Nethereum.Signer">
249-
<HintPath>..\..\packages\Nethereum.0.95.0--date20210125-0551.git-05a29e9\lib\netstandard2.0\Nethereum.Signer.dll</HintPath>
270+
<HintPath>..\..\packages\Nethereum.3.99.0--date20231003-1147.git-b9a16cf\lib\netstandard2.0\Nethereum.Signer.dll</HintPath>
250271
</Reference>
251272
<Reference Include="Nethereum.StandardTokenEIP20">
252-
<HintPath>..\..\packages\Nethereum.0.95.0--date20210125-0551.git-05a29e9\lib\netstandard2.0\Nethereum.StandardTokenEIP20.dll</HintPath>
273+
<HintPath>..\..\packages\Nethereum.3.99.0--date20231003-1147.git-b9a16cf\lib\netstandard2.0\Nethereum.StandardTokenEIP20.dll</HintPath>
253274
</Reference>
254275
<Reference Include="Nethereum.Util">
255-
<HintPath>..\..\packages\Nethereum.0.95.0--date20210125-0551.git-05a29e9\lib\netstandard2.0\Nethereum.Util.dll</HintPath>
276+
<HintPath>..\..\packages\Nethereum.3.99.0--date20231003-1147.git-b9a16cf\lib\netstandard2.0\Nethereum.Util.dll</HintPath>
256277
</Reference>
257278
<Reference Include="Nethereum.Web3">
258-
<HintPath>..\..\packages\Nethereum.0.95.0--date20210125-0551.git-05a29e9\lib\netstandard2.0\Nethereum.Web3.dll</HintPath>
279+
<HintPath>..\..\packages\Nethereum.3.99.0--date20231003-1147.git-b9a16cf\lib\netstandard2.0\Nethereum.Web3.dll</HintPath>
259280
</Reference>
260281
<Reference Include="HtmlAgilityPack">
261282
<HintPath>..\..\packages\HtmlAgilityPack.1.11.24\lib\Net45\HtmlAgilityPack.dll</HintPath>
@@ -270,4 +291,5 @@
270291
</Target>
271292
-->
272293
<Import Project="..\..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('..\..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" />
294+
<Import Project="..\..\packages\Microsoft.Extensions.Logging.Abstractions.6.0.0\build\Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('..\..\packages\Microsoft.Extensions.Logging.Abstractions.6.0.0\build\Microsoft.Extensions.Logging.Abstractions.targets')" />
273295
</Project>

src/GWallet.Backend/GWallet.Backend.fsproj

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,10 @@
6262
<PackageReference Include="NBitcoin.Altcoins" Version="3.0.8">
6363
<GeneratePathProperty></GeneratePathProperty>
6464
</PackageReference>
65-
<PackageReference Include="Nethereum" Version="0.95.0--date20210125-0551.git-05a29e9">
65+
<PackageReference Include="Nethereum" Version="3.99.0--date20231003-1147.git-b9a16cf">
66+
<GeneratePathProperty></GeneratePathProperty>
67+
</PackageReference>
68+
<PackageReference Include="JsonRpcSharp" Version="0.98.0--date20230731-1252.git-6788e32">
6669
<GeneratePathProperty></GeneratePathProperty>
6770
</PackageReference>
6871
<PackageReference Include="SharpRaven" Version="2.4.0">

0 commit comments

Comments
 (0)