Skip to content

Files

Latest commit

0e95177 · Apr 1, 2025

History

History

docs

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Jan 21, 2025
Jan 21, 2025
Jan 21, 2025
Jan 21, 2025
Jan 21, 2025
Jan 21, 2025
Jan 21, 2025
Apr 1, 2025
Jan 21, 2025
Apr 1, 2025
Apr 1, 2025
Apr 1, 2025
Apr 1, 2025
Jan 21, 2025
Apr 1, 2025
Apr 1, 2025
Apr 1, 2025
Apr 1, 2025
Apr 1, 2025
Apr 1, 2025
Apr 1, 2025
Jan 21, 2025
Apr 1, 2025
Apr 1, 2025
Apr 1, 2025
Apr 1, 2025
Apr 1, 2025
Jan 21, 2025
Apr 1, 2025
Jan 21, 2025
Jan 21, 2025
Jan 21, 2025
Apr 1, 2025
Jan 21, 2025
Jan 21, 2025
Apr 1, 2025
Jan 21, 2025
Jan 21, 2025
Apr 1, 2025
Jan 21, 2025
Apr 1, 2025
Jan 21, 2025
Apr 1, 2025
Jan 21, 2025
Jan 21, 2025
Jan 21, 2025
<!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="images/favicon.ico">
      <link rel="stylesheet" href="public/docfx.min.css">
      <link rel="stylesheet" href="public/main.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 &quot;{query}&quot;">
      <meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
      <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="index.html">
            <img id="logo" class="svg" src="images/logo.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="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 &quot;https://nuget.pkg.github.com/inxton/index.json&quot;
</code></pre>
<p>Replace GITHUBUSERNAME with your github name
Replace PAT with your Personal Access Token (<a href="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="../scripts/check_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="../build.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="Directory.Packages.props">src/Directory.Packages.props</a>.</p>
<p>For more information on central package management, visit <a href="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="Directory.Build.props">src/Directory.Build.props</a>. Learn more <a href="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="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>