browser-csharp
TypeScript icon, indicating that this package has built-in type declarations

1.1.2 • Public • Published

Browser C#

Executes C# snippets in the browser.

Installation

Install using npm:

npm install browser-csharp

The WASM files for .NET must be included as static assets in the correct way:

  1. The folder ./node_modules/browser-csharp/out/_framework must be included as ./_framework relative to the <base/> of your HTML file.
  2. You must include a reference to the WASM .NET entry file:
    <script src="_framework/blazor.webassembly.js"></script>

After doing this you can include the client library in JS/TS with a regular require/import.

Usage

Include a reference to the library:

const BrowserCSharp = require("browser-csharp").BrowserCSharp; // JS
import { BrowserCSharp } from "browser-csharp";                // TS

Wait for the WASM library to initiate:

BrowserCSharp.OnReady(success => { /* Callback */ });

Run a code snippet:

BrowserCSharp.ExecuteScript(`Console.WriteLine("Hello from C#");`)
.then(response => {
    response.stdErr // String with errors (parsing and compilation)
    response.stdOut // String with C# output (runtime)
    response.result // The return value of the the expression
});

With an extra argument (a string) the code snippet can be run in the context of previous code snippets, that was run with the same context id.
This is good for creating REPLs.

BrowserCSharp.ExecuteScript(codeSnippet, contextId)

The return is the same, a Promise that resolves with an object of the same shape.

Example

For an example of what this package can do, look in the ./example folder for the code and here for a live demo.

Development

This package requires that .NET Core is installed for development. Download the SDK here.

To test the wasm part during development run dotnet run in the wasm directory to start a dev server. It will only include the wasm part, so use the following snippet to invoke the code.

DotNet.invokeMethodAsync(
    "BrowserCSharp", "ExecuteScript",
    `String.Concat("apa".Select(c=>(char)(c+1)))`
).then(console.log)

There's not much to test with the TypeScript part, but you can build it alone with npx gulp ts-build.

Building everything at once can be done with npx gulp ts-build wasm-build, or npm run prepack 🤷‍♀️.

Package Sidebar

Install

npm i browser-csharp

Weekly Downloads

4

Version

1.1.2

License

MIT

Unpacked Size

43.1 MB

Total Files

304

Last publish

Collaborators

  • netram