Add .NET 8.0 C# port of OpenV2G EXI codec

- Port core EXI encoding/decoding functionality to C#
- Implement V2G protocol parsing and analysis
- Add simplified decoder/encoder for roundtrip testing
- Create comprehensive error handling with EXI exceptions
- Support both byte array and file stream operations
- Include packet structure analysis for V2GTP data
- Successfully builds and runs basic functionality tests

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
ChiKyun Kim
2025-09-10 09:37:27 +09:00
parent d4af6cfc14
commit a3ef00a687
66 changed files with 2889 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]

View File

@@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("V2GDecoderNet")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyCopyrightAttribute("Copyright © 2024")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d4af6cfc14c30bb82cc3612032a11c0bbc381065")]
[assembly: System.Reflection.AssemblyProductAttribute("V2GDecoderNet")]
[assembly: System.Reflection.AssemblyTitleAttribute("V2GDecoderNet")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// MSBuild WriteCodeFragment 클래스에서 생성되었습니다.

View File

@@ -0,0 +1 @@
eea75ee4751abbccfa0d2ecaec6383e7473776268dd2dda9354294caab1ee867

View File

@@ -0,0 +1,15 @@
is_global = true
build_property.TargetFramework = net6.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = V2GDecoderNet
build_property.ProjectDir = C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 6.0
build_property.EnableCodeStyleSeverity =

View File

@@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

View File

@@ -0,0 +1 @@
f62eb3d785f59c108daad95b5ed368cfad5f5b31dc00d7745a84d6d30d9e489e

View File

@@ -0,0 +1,14 @@
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\bin\Debug\net6.0\V2GDecoderNet.exe
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\bin\Debug\net6.0\V2GDecoderNet.deps.json
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\bin\Debug\net6.0\V2GDecoderNet.runtimeconfig.json
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\bin\Debug\net6.0\V2GDecoderNet.dll
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\bin\Debug\net6.0\V2GDecoderNet.pdb
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net6.0\V2GDecoderNet.GeneratedMSBuildEditorConfig.editorconfig
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net6.0\V2GDecoderNet.AssemblyInfoInputs.cache
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net6.0\V2GDecoderNet.AssemblyInfo.cs
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net6.0\V2GDecoderNet.csproj.CoreCompileInputs.cache
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net6.0\V2GDecoderNet.dll
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net6.0\refint\V2GDecoderNet.dll
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net6.0\V2GDecoderNet.pdb
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net6.0\V2GDecoderNet.genruntimeconfig.cache
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net6.0\ref\V2GDecoderNet.dll

Binary file not shown.

View File

@@ -0,0 +1 @@
73810ee1c6a0a650d2f788cf3e40cef8778b4cadbc6fd8cf871dac505c082c3e

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]

View File

@@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("V2GDecoderNet")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyCopyrightAttribute("Copyright © 2024")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d4af6cfc14c30bb82cc3612032a11c0bbc381065")]
[assembly: System.Reflection.AssemblyProductAttribute("V2GDecoderNet")]
[assembly: System.Reflection.AssemblyTitleAttribute("V2GDecoderNet")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// MSBuild WriteCodeFragment 클래스에서 생성되었습니다.

View File

@@ -0,0 +1 @@
eea75ee4751abbccfa0d2ecaec6383e7473776268dd2dda9354294caab1ee867

View File

@@ -0,0 +1,15 @@
is_global = true
build_property.TargetFramework = net8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = V2GDecoderNet
build_property.ProjectDir = C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 8.0
build_property.EnableCodeStyleSeverity =

View File

@@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

View File

@@ -0,0 +1 @@
3125bb5a2ac753c4b781363769aa7b8d737a01232c31ca9ffb28c2fdf05baddc

View File

@@ -0,0 +1,14 @@
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\bin\Debug\net8.0\V2GDecoderNet.exe
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\bin\Debug\net8.0\V2GDecoderNet.deps.json
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\bin\Debug\net8.0\V2GDecoderNet.runtimeconfig.json
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\bin\Debug\net8.0\V2GDecoderNet.dll
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\bin\Debug\net8.0\V2GDecoderNet.pdb
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net8.0\V2GDecoderNet.GeneratedMSBuildEditorConfig.editorconfig
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net8.0\V2GDecoderNet.AssemblyInfoInputs.cache
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net8.0\V2GDecoderNet.AssemblyInfo.cs
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net8.0\V2GDecoderNet.csproj.CoreCompileInputs.cache
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net8.0\V2GDecoderNet.dll
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net8.0\refint\V2GDecoderNet.dll
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net8.0\V2GDecoderNet.pdb
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net8.0\V2GDecoderNet.genruntimeconfig.cache
C:\Data\Source\SIMP\V2GDecoderC\csharp\dotnet\obj\Debug\net8.0\ref\V2GDecoderNet.dll

Binary file not shown.

View File

@@ -0,0 +1 @@
739061bebe31786ddff2459e94ad099ee4c566fc53c2d5fa5aa657d8f3deb49a

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,73 @@
{
"format": 1,
"restore": {
"C:\\Data\\Source\\SIMP\\V2GDecoderC\\csharp\\dotnet\\V2GDecoderNet.csproj": {}
},
"projects": {
"C:\\Data\\Source\\SIMP\\V2GDecoderC\\csharp\\dotnet\\V2GDecoderNet.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Data\\Source\\SIMP\\V2GDecoderC\\csharp\\dotnet\\V2GDecoderNet.csproj",
"projectName": "V2GDecoderNet",
"projectPath": "C:\\Data\\Source\\SIMP\\V2GDecoderC\\csharp\\dotnet\\V2GDecoderNet.csproj",
"packagesPath": "C:\\Users\\kimchk\\.nuget\\packages\\",
"outputPath": "C:\\Data\\Source\\SIMP\\V2GDecoderC\\csharp\\dotnet\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\kimchk\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.302/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\kimchk\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.14.0</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\kimchk\.nuget\packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />

View File

@@ -0,0 +1,79 @@
{
"version": 3,
"targets": {
"net8.0": {}
},
"libraries": {},
"projectFileDependencyGroups": {
"net8.0": []
},
"packageFolders": {
"C:\\Users\\kimchk\\.nuget\\packages\\": {},
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Data\\Source\\SIMP\\V2GDecoderC\\csharp\\dotnet\\V2GDecoderNet.csproj",
"projectName": "V2GDecoderNet",
"projectPath": "C:\\Data\\Source\\SIMP\\V2GDecoderC\\csharp\\dotnet\\V2GDecoderNet.csproj",
"packagesPath": "C:\\Users\\kimchk\\.nuget\\packages\\",
"outputPath": "C:\\Data\\Source\\SIMP\\V2GDecoderC\\csharp\\dotnet\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\kimchk\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.302/PortableRuntimeIdentifierGraph.json"
}
}
}
}

View File

@@ -0,0 +1,8 @@
{
"version": 2,
"dgSpecHash": "YcIrz6PQqRE=",
"success": true,
"projectFilePath": "C:\\Data\\Source\\SIMP\\V2GDecoderC\\csharp\\dotnet\\V2GDecoderNet.csproj",
"expectedPackageFiles": [],
"logs": []
}