docs
Directory actions
More options
Directory actions
More options
docs
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
parent directory.. | ||||
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>About this Repository | System.Dynamic.ExpandoObject </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="About this Repository | System.Dynamic.ExpandoObject ">
<link rel="icon" href="proxy.php?url=https%3A%2F%2Fgithub-redirect.dependabot.com%2Fimages%2Ffavicon.ico">
<link rel="stylesheet" href="proxy.php?url=https%3A%2F%2Fgithub-redirect.dependabot.com%2Fpublic%2Fdocfx.min.css">
<link rel="stylesheet" href="proxy.php?url=https%3A%2F%2Fgithub-redirect.dependabot.com%2Fpublic%2Fmain.css">
<meta name="docfx:navrel" content="toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="">
<meta name="docfx:docurl" content="https://github.com/Inxton/AXOpen/blob/dev/src/README.md/#L1">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for "{query}"">
<meta name="loc:searchNoResults" content="No results for "{query}"">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
</head>
<script type="module">
import options from './public/main.js'
import { init } from './public/docfx.min.js'
init(options)
</script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="proxy.php?url=https%3A%2F%2Fgithub-redirect.dependabot.com%2Findex.html">
<img id="logo" class="svg" src="proxy.php?url=https%3A%2F%2Fgithub-redirect.dependabot.com%2Fimages%2Flogo.svg" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled="" placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" style="margin-top: -.65em; margin-left: -.8em" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="">
<h1 id="about-this-repository">About this Repository</h1>
<h2 id="pre-requisites">Pre-requisites</h2>
<p>Run following script to check the pre-requisites:</p>
<pre><code>./scripts/check_requisites.ps1
</code></pre>
<h3 id="add-package-source">Add package source</h3>
<p>To get access to the packages from <code>AX#</code> and <code>AXOpen</code> you will need to authenticate to a dedicated package feed hosted on GitHub. Authentication is free. If you do not have a GitHub account please consider creating one by signing up at <a href="proxy.php?url=https%3A%2F%2Fgithub-redirect.dependabot.com%2F%3Ca+href%3D"https://github.com">https://github.com</a>.</p" rel="nofollow">https://github.com">https://github.com</a>.</p>
<pre><code>dotnet nuget add source --username GITHUBUSERNAME --password PAT --store-password-in-clear-text --name gh-packages-inxton "https://nuget.pkg.github.com/inxton/index.json"
</code></pre>
<p>Replace GITHUBUSERNAME with your github name
Replace PAT with your Personal Access Token (<a href="proxy.php?url=https%3A%2F%2Fgithub-redirect.dependabot.com%2F%3Ca+href%3D"https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token">how">https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token">how to create your PAT</a>)</p>
<h3 id="checking-pre-requisites-using-script">Checking pre-requisites using script</h3>
<p>To check pre-requisites in your enviroment run <a href="proxy.php?url=https%3A%2F%2Fgithub-redirect.dependabot.com%2F..%2Fscripts%2Fcheck_requisites.ps1">check_requisites.ps1</a> script.</p>
<pre><code class="lang-Powershell"># cd into your `axopen` folder
.\scripts\check_requisites.ps1
</code></pre>
<h2 id="build-this-repository">Build this repository</h2>
<p>In order to build this repostory run <a href="proxy.php?url=https%3A%2F%2Fgithub-redirect.dependabot.com%2F..%2Fbuild.ps1">build.ps1</a> script.</p>
<pre><code class="lang-Powershell"># cd into your `axopen` folder
.\build.ps1
</code></pre>
<h2 id="directory-structure">Directory Structure</h2>
<h3 id="docfx"><strong>docfx</strong></h3>
<p>Contains documentation for this repository.</p>
<pre><code>docfx/
│
├── api/
│ └── API for .NET part of the framework (autogenerated from code)
│
├── apictlr/
│ └── API for controller part of the framework (autogenerated from code)
│
├── apidoc/
│ └── Table of contents for API documentation
│
├── articles/
│ └── Various articles
│
├── components/
│ ├── Documentation for components
│ └── toc.yml (new component library doc ref needs to be added here)
│
├── framework/
│ ├── Documentation for framework
│ └── toc.yml (new framework library doc ref needs to be added here)
│
├── images/
│ └── Icons and images (some are used in articles)
│
└── templates/
└── Documentation site templates
</code></pre>
<div class="NOTE">
<h5>Note</h5>
<p>When adding a new library, update <code>components/toc.yml</code> for components and <code>framework/toc.yml</code> for framework libraries manually.</p>
</div>
<p>To test the documentation, run the following script from the repository root folder:</p>
<pre><code class="lang-Powershell">.\scripts\build_test_docu.ps1
</code></pre>
<p>It will create docs-test folder that is git-ignored.</p>
<h3 id="docs"><strong>docs</strong></h3>
<p>The docs folder contains the documentation site. It should be generated on the appropriate branch used to publish the documentation.</p>
<div class="IMPORTANT">
<h5>Important</h5>
<p>Never commit changes to the <code>docs</code> directory!</p>
</div>
<h3 id="scripts"><strong>scripts</strong></h3>
<p>Contains various scripts.</p>
<h3 id="src"><strong>src</strong></h3>
<p>Contains all source code related to AXOpen. Each library is placed in a separate directory which has:</p>
<pre><code>library/
│
├── app/
│ └── Sandbox for testing the library, integration tests, and documentation code (linked to the library's actual documentation)
│
├── ctrl/
│ ├── src/ # Library source code
│ ├── tests/ # Unit tests
│ └── docs/ # (optional) Controller code documentation
│
├── src/ # .NET twin and Blazor twin
│
├── tests/ # Tests of various levels
│
├── docs/ # Library documentation
│
├── this.proj # Traversal project. Use to create a solution file for this library [see](README.md#creating-solution-file-from-traversal-project-file)
│
└── slngen.ps # Generates solution file from `this.proj`
</code></pre>
<h2 id="apax-package-versions">APAX Package Versions</h2>
<div class="IMPORTANT">
<h5>Important</h5>
<p>All apax packages on the default branch (dev) have a fixed version '0.0.0-dev.0'. This version must not be changed by any commit.
The version is assigned at build time in the CI/CD pipeline.</p>
</div>
<h2 id="central-package-management-system">Central Package Management System</h2>
<p>This project's NuGet packages versions are organized centrally. You shouldn't assign a package version in your project file. In exceptional cases, you can use a version override. Actual versions are defined in <a href="proxy.php?url=https%3A%2F%2Fgithub-redirect.dependabot.com%2FDirectory.Packages.props">src/Directory.Packages.props</a>.</p>
<p>For more information on central package management, visit <a href="proxy.php?url=https%3A%2F%2Fgithub-redirect.dependabot.com%2F%3Ca+href%3D"https://learn.microsoft.com/en-us/nuget/consume-packages/Central-Package-Management">here</a>.</p" rel="nofollow">https://learn.microsoft.com/en-us/nuget/consume-packages/Central-Package-Management">here</a>.</p>
<h2 id="directory-based-build">Directory-Based Build</h2>
<p>Some build aspects of all .NET projects are defined in <a href="proxy.php?url=https%3A%2F%2Fgithub-redirect.dependabot.com%2FDirectory.Build.props">src/Directory.Build.props</a>. Learn more <a href="proxy.php?url=https%3A%2F%2Fgithub-redirect.dependabot.com%2F%3Ca+href%3D"https://learn.microsoft.com/en-us/visualstudio/msbuild/customize-by-directory?view=vs-2022">here</a>.</p" rel="nofollow">https://learn.microsoft.com/en-us/visualstudio/msbuild/customize-by-directory?view=vs-2022">here</a>.</p>
<h2 id="creating-solution-file-from-traversal-project-file">Creating Solution File from Traversal Project File</h2>
<p>You will find several traversal <code>*.proj</code> files. These are used in the CI/CD process in place of solution <code>*.sln</code> files. To create solution files from traversal files, use:</p>
<pre><code>dotnet slngen [traversal-project-name].proj -o [output-solution-file].sln --folders true --launch false
</code></pre>
<div class="IMPORTANT">
<h5>Important</h5>
<p>Re-create your solution whenever the repository changes to refresh newly added, removed, or modified projects.</p>
</div>
<p>You can then open the solution file in Visual Studio as needed.</p>
<!--
## Creating a New Library from Template
### Use script
Run the following script from the repository root folder:
```PowerShell
.\scripts\create_template_library.ps1 -OutputDirectory OutputFolder -ProjectNamespace Project.Namespace
```
For example:
```PowerShell
.\scripts\create_template_library.ps1 -OutputDirectory components.elements -ProjectNamespace AXOpen.Components.Elements
```
### Manual create
1. Navigate to the `src/` folder of this repository.
2. Run the following command to update the library template:
```PowerShell
dotnet new install .\template.axolibrary\ --force
```
3. Create a library template using:
```PowerShell
dotnet new axolibrary -o OutputFolder -p ProjectName
```
For example:
```PowerShell
dotnet new axolibrary -o components.elements -p AXOpen.Components.Elements
```
> [!NOTE]
> Make sure you run `apax install` and `apax build` after new library is created.
> [!IMPORTANT]
> Ensure you run all commands from the `src` folder of the repository. The `-o OutputFolder` parameter must be within the `src` folder.
> [!IMPORTANT]
> The `-p ProjectName` parameter must contain ONLY alphanumeric characters and dots. Otherwise, inconsistencies may occur.
-->
</article>
<div class="contribution d-print-none">
<a href="proxy.php?url=https%3A%2F%2Fgithub-redirect.dependabot.com%2F%3Ca+href%3D"https://github.com/Inxton/AXOpen/blob/dev/src/README.md/#L1">https://github.com/Inxton/AXOpen/blob/dev/src/README.md/#L1" class="edit-link">Edit this page</a>
</div>
<div class="next-article d-print-none border-top" id="nextArticle"></div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top">
<div class="container-xxl">
<div class="flex-fill">
Generated by DocFx. © 2023 MTS spol. s r.o., and awesome contributors
</div>
</div>
</footer>
</body>
</html>