# System.Xml.Linq

**Kind:** Service

**Source:** `Pams/HelperTool/HelperTool.csproj` (line 1)

**Part of:** [Pams](subsystem-pams)

NuGet package dependency

System.Xml.Linq is a NuGet package dependency declared by `Pams/HelperTool/HelperTool.csproj`. It enables the HelperTool .NET project to work with XML through LINQ-to-XML types such as `XDocument` and `XElement`. HelperTool code can read, query, update, and write XML after the project is restored and built.

## Diagram

```mermaid
sequenceDiagram
    participant Developer
    participant NuGet
    participant HelperTool
    participant XML

    Developer->>NuGet: Restore HelperTool dependencies
    NuGet-->>HelperTool: Resolve System.Xml.Linq
    Developer->>HelperTool: Run XML-related command
    HelperTool->>XML: Read or update XML content
    XML-->>HelperTool: Return XML data
    HelperTool-->>Developer: Return command result
```

## Usage

```ts
import { execFileSync } from "node:child_process";

const projectFile = "Pams/HelperTool/HelperTool.csproj";

// Restore the NuGet dependency, including System.Xml.Linq.
execFileSync("dotnet", ["restore", projectFile], {
  stdio: "inherit",
});

// Build HelperTool before invoking its XML-handling functionality.
execFileSync("dotnet", ["build", projectFile], {
  stdio: "inherit",
});
```

## AI Coding Instructions

- Keep the `System.Xml.Linq` package reference in `Pams/HelperTool/HelperTool.csproj` compatible with the legacy project format.
- Write XML manipulation code in the HelperTool C# project with `XDocument`, `XElement`, and related `System.Xml.Linq` types.
- Restore and build the project after changing package references or XML-related C# code.
- Do not import `System.Xml.Linq` directly from TypeScript or JavaScript; invoke the built .NET HelperTool process when JavaScript integration is needed.
