first commit
SAP-ERP Portal CI/CD / build (push) Failing after 5m20s

This commit is contained in:
John
2026-09-23 17:31:02 +05:30
commit 69b4e68baf
51657 changed files with 3864077 additions and 0 deletions
Binary file not shown.
+300
View File
@@ -0,0 +1,300 @@
using SAPbobsCOM;
using System;
using System.Collections.Generic;
using System.Web.Script.Serialization;
namespace SapDiConsole
{
class Program
{
static Company oCompany;
// Persistent request loop — one line of JSON in on stdin, one line of
// JSON out on stdout, per request, kept alive across MANY requests
// instead of the old one-shot "connect, do one thing, disconnect,
// exit" model. Company.Connect() alone was measured at ~30s (SAP's
// SLD/License round trip dominates it) — paying that cost on every
// single Purchase Request was the real cause of "creating a PR takes
// long". Node's services/diApiService.js now keeps ONE of these
// processes alive per SAP company and reuses it; EnsureConnected()
// below only reconnects if the session has actually dropped.
static int Main(string[] args)
{
var js = new JavaScriptSerializer();
string line;
while ((line = Console.In.ReadLine()) != null)
{
if (string.IsNullOrWhiteSpace(line)) continue;
Dictionary<string, object> p;
try { p = js.Deserialize<Dictionary<string, object>>(line); }
catch (Exception ex)
{
Console.WriteLine(js.Serialize(new { success = false, error = "Bad request JSON: " + ex.Message }));
continue;
}
string action = Get(p, "Action", "AddPurchaseRequest");
if (action == "Shutdown")
{
try { oCompany?.Disconnect(); } catch { }
return 0;
}
try
{
EnsureConnected(p);
object result;
switch (action)
{
case "Ping":
result = new { success = true, ping = true };
break;
case "RemoveProductionOrderLine":
result = RemoveProductionOrderLine(p);
break;
default:
result = AddPurchaseRequest(p);
break;
}
Console.WriteLine(js.Serialize(result));
}
catch (Exception ex)
{
// Non-fatal per request — stay alive for the next one.
// A connection-level failure will simply cause the next
// EnsureConnected() to notice oCompany.Connected is false
// and reconnect.
Console.WriteLine(js.Serialize(new {
success = false,
error = ex.Message
}));
}
}
// Node closed stdin (process shutting down, or replacing this
// pooled connection) — disconnect cleanly before exiting.
try { oCompany?.Disconnect(); } catch { }
return 0;
}
// Reuses the existing SAP session unless it's genuinely gone —
// avoids paying Connect()'s ~30s SLD/License round trip on every
// request, which is the whole point of this persistent process.
static void EnsureConnected(Dictionary<string, object> p)
{
if (oCompany != null && oCompany.Connected) return;
Connect(p);
}
// ── Remove a component line from a Production Order ──────────────
// Service Layer (OData PATCH) has no way to delete a ProductionOrderLines
// row — verified live, omitting a line from the array is silently
// ignored. DI API's ProductionOrders.Lines collection DOES support
// SetCurrentLine + Delete() even on a Released order (ProductionOrders
// has its OWN dedicated Lines interface — ProductionOrders_Lines, NOT
// the generic Document_Lines used by regular marketing documents).
// Used to actually delete a Deviation-superseded line (SAP-side; the
// app's own audit trail — the deviation record itself — is untouched
// either way).
static object RemoveProductionOrderLine(Dictionary<string, object> p)
{
int docEntry = int.Parse(Get(p, "DocEntry"));
int lineNum = int.Parse(Get(p, "LineNum"));
SAPbobsCOM.ProductionOrders po = (SAPbobsCOM.ProductionOrders)oCompany.GetBusinessObject(BoObjectTypes.oProductionOrders);
if (!po.GetByKey(docEntry))
throw new Exception($"Production Order {docEntry} not found");
int idx = -1;
for (int i = 0; i < po.Lines.Count; i++)
{
po.Lines.SetCurrentLine(i);
if (po.Lines.LineNumber == lineNum) { idx = i; break; }
}
if (idx < 0)
throw new Exception($"Line {lineNum} not found on Production Order {docEntry}");
po.Lines.SetCurrentLine(idx);
po.Lines.Delete();
int res = po.Update();
if (res != 0)
throw new Exception($"Update failed [{res}]: {oCompany.GetLastErrorDescription()}");
Console.Error.WriteLine($"[PROD-ORDER] Removed line {lineNum} from DocEntry {docEntry}");
return new { success = true, DocEntry = docEntry, RemovedLine = lineNum };
}
// ── Standalone DI API connection (no SAP client needed) ──────────
static void Connect(Dictionary<string, object> p)
{
oCompany = new Company();
// Order matters in SAP DI API: Server → DbServerType → CompanyDB → credentials
oCompany.Server = Get(p, "Server", "SAPSVR");
// DbServerType MUST match the SQL Server version or Connect() fails
// SBO-user auth with -132 (the DB itself connects fine via sa first).
// This install runs SQL Server 2022, but DI API 10.0 build 260 only
// knows up to dst_MSSQL2019 = 15 — use that (2022 is wire-compatible).
// Numeric cast (NOT the named enum) so values like 16 = dst_MSSQL2022
// compile even though this interop build only defines up to
// dst_MSSQL2019 = 15. Value comes from Node (env SAP_B1_DB_SERVER_TYPE).
// oCompany.DbServerType = (BoDataServerTypes)int.Parse(Get(p, "DbServerType", "15"));
oCompany.DbServerType = BoDataServerTypes.dst_MSSQL2022;
// No hardcoded fallback credentials — Node (services/diApiService.js)
// always supplies these from .env via the stdin JSON payload; an
// empty default here means a missing key fails loudly with a clear
// SAP login error instead of silently connecting with a real
// password that used to be baked into this binary.
oCompany.CompanyDB = Get(p, "CompanyDB");
oCompany.UserName = Get(p, "UserName");
oCompany.Password = Get(p, "Password");
oCompany.DbUserName = Get(p, "DbUserName");
oCompany.DbPassword = Get(p, "DbPassword");
oCompany.UseTrusted = false;
oCompany.language = 0;
// SAP B1 10.0 standalone DI API auth goes through the SLD/License
// service — without these, Connect() fails SBO auth with -132 even
// when the DB connection and password are valid. host:30010 = license
// service, host:40000 = SLD (System Landscape Directory).
string lic = Get(p, "LicenseServer", "");
if (!string.IsNullOrEmpty(lic)) oCompany.LicenseServer = lic;
string sld = Get(p, "SLDServer", "");
if (!string.IsNullOrEmpty(sld)) oCompany.SLDServer = sld;
int ret = oCompany.Connect();
if (ret != 0)
throw new Exception(
$"Login failed [{ret}]: {oCompany.GetLastErrorDescription()}");
Console.Error.WriteLine($"[DI] Connected as {Get(p,"UserName")} to {Get(p,"CompanyDB")}");
}
// ── Create Purchase Request ───────────────────────────────────────
static object AddPurchaseRequest(Dictionary<string, object> p)
{
Documents pr = (Documents)oCompany.GetBusinessObject(
BoObjectTypes.oPurchaseRequest);
// Header
string docDate = Get(p, "DocDate");
string dueDate = Get(p, "DocDueDate");
string reqDate = Get(p, "RequriedDate");
if (!string.IsNullOrEmpty(docDate)) pr.DocDate = DateTime.Parse(docDate);
if (!string.IsNullOrEmpty(dueDate)) pr.DocDueDate = DateTime.Parse(dueDate);
if (!string.IsNullOrEmpty(reqDate)) pr.RequriedDate = DateTime.Parse(reqDate);
string comments = Get(p, "Comments");
string cardCode = Get(p, "CardCode");
string numAtCard = Get(p, "NumAtCard");
string email = Get(p, "RequesterEmail");
if (!string.IsNullOrEmpty(comments)) pr.Comments = comments;
if (!string.IsNullOrEmpty(cardCode)) pr.CardCode = cardCode;
if (!string.IsNullOrEmpty(numAtCard)) pr.NumAtCard = numAtCard;
if (!string.IsNullOrEmpty(email)) pr.RequesterEmail = email;
// UDFs
SetUdf(pr, "U_ReqDqte", Get(p, "U_ReqDqte"));
SetUdf(pr, "U_Depart", Get(p, "U_Depart"));
SetUdf(pr, "U_Department", Get(p, "U_Department"));
SetUdf(pr, "U_STS_REQD", Get(p, "U_STS_REQD"));
// Lines
var lines = p.ContainsKey("DocumentLines")
? p["DocumentLines"] as System.Collections.ArrayList
: null;
bool first = true;
if (lines != null)
{
foreach (var lineObj in lines)
{
var line = lineObj as Dictionary<string, object>;
if (line == null) continue;
if (!first) pr.Lines.Add();
pr.Lines.ItemCode = GetL(line, "ItemCode");
string desc = GetL(line, "ItemDescription");
if (!string.IsNullOrEmpty(desc)) pr.Lines.ItemDescription = desc;
string qty = GetL(line, "Quantity");
if (!string.IsNullOrEmpty(qty)) pr.Lines.Quantity = double.Parse(qty);
string price = GetL(line, "UnitPrice");
if (!string.IsNullOrEmpty(price)) pr.Lines.UnitPrice = double.Parse(price);
string whs = GetL(line, "WarehouseCode");
if (!string.IsNullOrEmpty(whs)) pr.Lines.WarehouseCode = whs;
string lineDate = GetL(line, "RequiredDate");
if (!string.IsNullOrEmpty(lineDate)) pr.Lines.RequiredDate = DateTime.Parse(lineDate);
first = false;
}
}
Console.Error.WriteLine("[PR] Adding Purchase Request...");
int res = pr.Add();
if (res != 0)
throw new Exception(
$"Add PR failed [{res}]: {oCompany.GetLastErrorDescription()}");
string docEntry = oCompany.GetNewObjectKey();
Console.Error.WriteLine($"[PR] SUCCESS : {docEntry}");
// ── Check approval status ─────────────────────────────────────
bool approvalTriggered = false;
string wddCode = null;
string wddStatus = null;
try
{
Recordset rs = (Recordset)oCompany.GetBusinessObject(
BoObjectTypes.BoRecordset);
rs.DoQuery(
$"SELECT TOP 1 WddStatus, DraftKey FROM OPRQ WHERE DocEntry = {docEntry}");
if (!rs.EoF)
{
wddStatus = rs.Fields.Item("WddStatus").Value?.ToString();
wddCode = rs.Fields.Item("DraftKey").Value?.ToString();
approvalTriggered = wddStatus == "W" || wddStatus == "A";
Console.Error.WriteLine($"[APPROVAL] WddStatus={wddStatus} DraftKey={wddCode}");
}
}
catch { /* approval check is informational only */ }
return new {
success = true,
DocEntry = int.Parse(docEntry),
ApprovalTriggered = approvalTriggered,
WddStatus = wddStatus,
WddCode = wddCode
};
}
static void SetUdf(Documents doc, string field, string value)
{
try
{
if (!string.IsNullOrEmpty(value))
doc.UserFields.Fields.Item(field).Value = value;
}
catch { }
}
static string Get(Dictionary<string, object> d, string k, string def = "")
=> d.ContainsKey(k) && d[k] != null ? d[k].ToString() : def;
static string GetL(Dictionary<string, object> d, string k)
=> d.ContainsKey(k) && d[k] != null ? d[k].ToString() : "";
}
}
+20
View File
@@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net472</TargetFramework>
<AssemblyName>SapDiConsole</AssemblyName>
<RootNamespace>SapDiConsole</RootNamespace>
<Nullable>disable</Nullable>
<PlatformTarget>x86</PlatformTarget>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Interop.SAPbobsCOM">
<HintPath>Interop.SAPbobsCOM.dll</HintPath>
<Private>true</Private>
<EmbedInteropTypes>false</EmbedInteropTypes>
</Reference>
<Reference Include="System.Web.Extensions" />
</ItemGroup>
</Project>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>
+26
View File
@@ -0,0 +1,26 @@
@echo off
echo Building SAP DI Console...
rem This project references a pre-generated, machine-neutral (MSIL) interop
rem assembly: Interop.SAPbobsCOM.dll (checked in next to this script). Because
rem that's a plain managed <Reference> (not a <COMReference>), the ordinary
rem .NET SDK build works - no Visual Studio / Framework MSBuild required.
rem
rem If the SAP B1 DI API is upgraded, regenerate the interop once:
rem "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\TlbImp.exe" ^
rem "C:\Program Files (x86)\SAP\SAP Business One DI API\DI API 100\SAPbobsCOM100.dll" ^
rem /out:Interop.SAPbobsCOM.dll /namespace:SAPbobsCOM /machine:Agnostic /silent
dotnet build SapDiConsole.csproj -c Release
if %ERRORLEVEL% EQU 0 (
echo.
echo Build successful.
echo Exe: bin\Release\net472\SapDiConsole.exe
) else (
echo.
echo Build failed. Make sure:
echo 1. .NET SDK is installed ^(dotnet --version^)
echo 2. Interop.SAPbobsCOM.dll exists in this folder ^(regenerate with TlbImp - see comment above^)
echo 3. SAP B1 DI API is installed and its COM type library is registered
)
pause
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
@@ -0,0 +1,22 @@
//------------------------------------------------------------------------------
// <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("SapDiConsole")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("SapDiConsole")]
[assembly: System.Reflection.AssemblyTitleAttribute("SapDiConsole")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.
@@ -0,0 +1 @@
bd88c037973a1a968556ea51ee8cddc9d960f7dcdfb631602883b428ec252d76
@@ -0,0 +1,8 @@
is_global = true
build_property.RootNamespace = SapDiConsole
build_property.ProjectDir = D:\Claude_projects\sap-erp\services\SapDiConsole\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.CsWinRTUseWindowsUIXamlProjections = false
build_property.EffectiveAnalysisLevelStyle =
build_property.EnableCodeStyleSeverity =
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
@@ -0,0 +1,22 @@
//------------------------------------------------------------------------------
// <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("SapDiConsole")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("SapDiConsole")]
[assembly: System.Reflection.AssemblyTitleAttribute("SapDiConsole")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.
@@ -0,0 +1 @@
bd88c037973a1a968556ea51ee8cddc9d960f7dcdfb631602883b428ec252d76
@@ -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 = SapDiConsole
build_property.ProjectDir = D:\Claude_projects\sap-erp\services\SapDiConsole\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 8.0
build_property.EnableCodeStyleSeverity =
@@ -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;
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
@@ -0,0 +1,22 @@
//------------------------------------------------------------------------------
// <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("SapDiConsole")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("SapDiConsole")]
[assembly: System.Reflection.AssemblyTitleAttribute("SapDiConsole")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.
@@ -0,0 +1 @@
fec65bade770bf15c6935812f142fd68aace5ba0d4b263fc890ff8d31a508443
@@ -0,0 +1,8 @@
is_global = true
build_property.RootNamespace = SapDiConsole
build_property.ProjectDir = D:\Claude_projects\sap-erp\services\SapDiConsole\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.CsWinRTUseWindowsUIXamlProjections = false
build_property.EffectiveAnalysisLevelStyle =
build_property.EnableCodeStyleSeverity =
@@ -0,0 +1 @@
b506486fafa6af369e4745f88ac8f983a1c6b332351b19c4b09d46b52c07c2c9
@@ -0,0 +1,13 @@
D:\Claude_projects\sap-erp\services\SapDiConsole\obj\Release\net472\SapDiConsole.csproj.AssemblyReference.cache
D:\Claude_projects\sap-erp\services\SapDiConsole\obj\Release\net472\SapDiConsole.GeneratedMSBuildEditorConfig.editorconfig
D:\Claude_projects\sap-erp\services\SapDiConsole\obj\Release\net472\SapDiConsole.AssemblyInfoInputs.cache
D:\Claude_projects\sap-erp\services\SapDiConsole\obj\Release\net472\SapDiConsole.AssemblyInfo.cs
D:\Claude_projects\sap-erp\services\SapDiConsole\obj\Release\net472\SapDiConsole.csproj.CoreCompileInputs.cache
D:\Claude_projects\sap-erp\services\SapDiConsole\bin\Release\net472\SapDiConsole.exe.config
D:\Claude_projects\sap-erp\services\SapDiConsole\bin\Release\net472\SapDiConsole.exe
D:\Claude_projects\sap-erp\services\SapDiConsole\bin\Release\net472\SapDiConsole.pdb
D:\Claude_projects\sap-erp\services\SapDiConsole\bin\Release\net472\Interop.SAPbobsCOM.dll
D:\Claude_projects\sap-erp\services\SapDiConsole\obj\Release\net472\SapDiConsole.exe
D:\Claude_projects\sap-erp\services\SapDiConsole\obj\Release\net472\SapDiConsole.pdb
D:\Claude_projects\sap-erp\services\SapDiConsole\obj\Release\net472\SapDiCon.6D353C83.Up2Date
D:\Claude_projects\sap-erp\services\SapDiConsole\obj\Release\net472\SapDiConsole.exe.config
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
@@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// 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("SapDiConsole")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("SapDiConsole")]
[assembly: System.Reflection.AssemblyTitleAttribute("SapDiConsole")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.
@@ -0,0 +1 @@
fec65bade770bf15c6935812f142fd68aace5ba0d4b263fc890ff8d31a508443
@@ -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 = SapDiConsole
build_property.ProjectDir = D:\Claude_projects\sap-erp\services\SapDiConsole\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 8.0
build_property.EnableCodeStyleSeverity =
@@ -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;
@@ -0,0 +1 @@
58b78b16bb97398da9570216ea95dfc59fe5c3e1da3c503b3b387457166f73f0
@@ -0,0 +1,5 @@
D:\Claude_projects\sap-erp\services\SapDiConsole\obj\Release\net8.0\SapDiConsole.csproj.AssemblyReference.cache
D:\Claude_projects\sap-erp\services\SapDiConsole\obj\Release\net8.0\SapDiConsole.GeneratedMSBuildEditorConfig.editorconfig
D:\Claude_projects\sap-erp\services\SapDiConsole\obj\Release\net8.0\SapDiConsole.AssemblyInfoInputs.cache
D:\Claude_projects\sap-erp\services\SapDiConsole\obj\Release\net8.0\SapDiConsole.AssemblyInfo.cs
D:\Claude_projects\sap-erp\services\SapDiConsole\obj\Release\net8.0\SapDiConsole.csproj.CoreCompileInputs.cache
@@ -0,0 +1,62 @@
{
"format": 1,
"restore": {
"D:\\Claude_projects\\sap-erp\\services\\SapDiConsole\\SapDiConsole.csproj": {}
},
"projects": {
"D:\\Claude_projects\\sap-erp\\services\\SapDiConsole\\SapDiConsole.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "D:\\Claude_projects\\sap-erp\\services\\SapDiConsole\\SapDiConsole.csproj",
"projectName": "SapDiConsole",
"projectPath": "D:\\Claude_projects\\sap-erp\\services\\SapDiConsole\\SapDiConsole.csproj",
"packagesPath": "C:\\Users\\admin\\.nuget\\packages\\",
"outputPath": "D:\\Claude_projects\\sap-erp\\services\\SapDiConsole\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\admin\\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": [
"net472"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net472": {
"targetAlias": "net472",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net472": {
"targetAlias": "net472",
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.302\\RuntimeIdentifierGraph.json"
}
},
"runtimes": {
"win-x86": {
"#import": []
}
}
}
}
}
@@ -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\admin\.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\admin\.nuget\packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
</ItemGroup>
</Project>
@@ -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" />
@@ -0,0 +1,69 @@
{
"version": 3,
"targets": {
".NETFramework,Version=v4.7.2": {},
".NETFramework,Version=v4.7.2/win-x86": {}
},
"libraries": {},
"projectFileDependencyGroups": {
".NETFramework,Version=v4.7.2": []
},
"packageFolders": {
"C:\\Users\\admin\\.nuget\\packages\\": {},
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "D:\\Claude_projects\\sap-erp\\services\\SapDiConsole\\SapDiConsole.csproj",
"projectName": "SapDiConsole",
"projectPath": "D:\\Claude_projects\\sap-erp\\services\\SapDiConsole\\SapDiConsole.csproj",
"packagesPath": "C:\\Users\\admin\\.nuget\\packages\\",
"outputPath": "D:\\Claude_projects\\sap-erp\\services\\SapDiConsole\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\admin\\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": [
"net472"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net472": {
"targetAlias": "net472",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net472": {
"targetAlias": "net472",
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.302\\RuntimeIdentifierGraph.json"
}
},
"runtimes": {
"win-x86": {
"#import": []
}
}
}
}
@@ -0,0 +1,8 @@
{
"version": 2,
"dgSpecHash": "x0a3ttMP/vQ=",
"success": true,
"projectFilePath": "D:\\Claude_projects\\sap-erp\\services\\SapDiConsole\\SapDiConsole.csproj",
"expectedPackageFiles": [],
"logs": []
}