> For the complete documentation index, see [llms.txt](https://docs.zongsoft.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.zongsoft.com/documentation/en/get-started/prerequisites.md).

# Prerequisites

Prepare SDK, tooling, and source build output based on selected tutorials, distinguishing package usage from framework source code development.

![Prerequisites](https://1509929121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVtPQeWxVwz4p7FTcxkG8%2Fuploads%2Fgit-blob-10be71c1aee0af4b6e8f004be7e2c5ffeb32b5e9%2Fzongsoft-start-cover.png?alt=media)

Learning plugin usage allows you to get the framework directly from NuGet without having to build the entire repository first. You only need to prepare adjacent source build output if you need to debug the framework source code, use unreleased local changes, or build an existing hosting.

## Choose a Path

| target                                    | Required content                                                | starting point                                                       |
| ----------------------------------------- | --------------------------------------------------------------- | -------------------------------------------------------------------- |
| Create a minimal plugin application       | Match SDK, deployment tools, available package sources          | [first plugin](/documentation/en/get-started/deploy-first-plugin.md) |
| Debugging frameworks and existing hosts   | Git, framework/hosting source code, matching compilation output | [Host Overview](/documentation/en/hosting/hosting.md)                |
| Connect to a database or messaging system | Previous content and selected external services                 | Corresponding driver and connection topics                           |

## Development Guidelines

Before writing business plugins or Web APIs, developers should read and follow these guidelines:

* [C# Coding Guidelines](https://github.com/Zongsoft/Guidelines/blob/main/zongsoft.csharp.guidelines.md) (in Chinese): follow consistent naming, formatting, and coding conventions when writing and reviewing C# code.
* [REST API Design Guidelines](https://github.com/Zongsoft/Guidelines/blob/main/zongsoft.rest-api.guidelines.md) (in Chinese): follow the conventions for resource names, HTTP methods, status codes, and parameters when designing and implementing HTTP APIs.

Use the latest versions at these links. Read examples alongside the guidelines, and check compliance during development and code review.

## SDK Version

The current root configuration of the hosting repository targets .NET 10; this documentation’s minimal tutorial also uses `net10.0`. Multiple framework class libraries support .NET 8, 9, and 10, but specific projects, examples, and tools need to be based on their own `.csproj`, `Directory.Build.props`, and package dependencies.

{% code title="CheckDotnet.ps1" %}

```powershell
dotnet --info
dotnet --list-sdks
dotnet --list-runtimes
```

{% endcode %}

SDK is used for compilation and runtime is used for execution. Installing a newer runtime does not mean that the machine has all the runtimes required for older targets; web and Windows desktop tools also have their own operating environment requirements.

## Source Directories

When the source code path is required, it is recommended to put the repository in the same parent directory:

{% code title="Workspace.layout" %}

```
Zongsoft/
	framework/
	discussions/
	hosting/
	tools/
	documentation.en/
```

{% endcode %}

{% code title="CloneRepositories.ps1" %}

```powershell
git clone https://github.com/Zongsoft/framework.git
git clone https://github.com/Zongsoft/hosting.git
git clone https://github.com/Zongsoft/Zongsoft.Discussions.git discussions
git clone https://github.com/Zongsoft/tools.git
git -C framework submodule update --init --recursive
```

{% endcode %}

The framework's OpenTelemetry protocol source uses submodules; corresponding content is required when building related diagnostics projects. By default, hosting refers to the adjacent output of the framework. The existence of the source code directory is not enough. The corresponding configuration and target of the required class library must be compiled first.

## Tools and Optional Environments

See [Install Packages](/documentation/en/get-started/install.md) for installation steps. The editor can use an IDE that supports .NET. Shell commands should be executed according to the respective syntax of PowerShell or Bash. Line continuation and variable interpolation cannot be mixed.

Only compiling Discussions does not require running external services; complete forum query requires preparing the database, identity and related dependencies according to the real mapping and hosting scheme. MQTT and model servers are not inherent prerequisites for forum business. Prepare dependent services as needed and check endpoint readiness first; read [Container Environments](/documentation/en/hosting/containerization.md) when using Podman.

After the preparation is completed, you should be able to clearly answer: what is the target framework, where does the package come from, where is the output directory, and which program is actually started. Then [Choose a host](/documentation/en/get-started/hosting.md) and complete your first end-to-end run.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.zongsoft.com/documentation/en/get-started/prerequisites.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
