Uno-Platform:如何在 Uno-Platform 库中嵌入 JavaScript 个库?

Uno-Platform: How to embed JavaScript libraries in Uno-Platform Library?

TL,DR: 如何将 JavaScript 嵌入到 Uno-Platform 跨平台库项目中?

背景

下面是一些关于如何将 JavaScript 库嵌入 Uno 平台的 WASM 平台项目的重要资源 Application(不是 图书馆):

问题

但是,上面没有解决,我也没有找到任何关于如何在 Uno 平台中执行此操作的方法 Library.如何将 JavaScript 嵌入到 Uno-Platform 跨平台库项目中?

此 link 展示了如何操作 - https://platform.uno/blog/how-to-embed-javascript-components-in-c-built-uno-webassembly-web-applications/

它有两个使用 date/time 选择器控件 Flartpickr 以及语法可视化工具 PrismJS 的示例。

好吧,我很尴尬让它工作起来是多么容易。在我创建我的 Uno Platform Library 项目 using Uno Solution Templates in Visual Studio 2019 之后,我然后:

  • 在我的库项目的根目录中创建了一个 WasmScripts 文件夹
  • 将我的 JavaScript 文件 (LibTest.js) 添加到 WasmScripts 文件夹:
    function libTest() {
      return 'IT WORKS!';
    }
    
  • 创建了一个 class (Test.cs),它将在定位 NetStandard 时使用上述 JavaScript 函数——这是 Uno WebAssembly 应用程序使用的目标:
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      #if !NETFX_CORE
      using Uno.Foundation;
      #endif
    
      namespace WasmTricksLib
      {
          public partial class Test
          {
              public static string PerformTestAsync()
              {
      #if __WASM__
                  var result = WebAssemblyRuntime.InvokeJS("libTest()");
                  System.Diagnostics.Debug.WriteLine("WasmTricksLib.Test.PerformTestAsync: RESULT=" + result);
                  return result;
      #else   
                  return "NOT THE RIGHT PLATFORM";
      #endif
    
              }
          }
      }
    

以上结果导致库的项目结构如下:

到目前为止,所有步骤都是我预期的,基于 Uno-Platform 应用程序项目的文档。但是,它不会编译并且 VisualStudio IntelliSense 不会喜欢 Test.cs.

中的某些代码

解决方案

将以下 <ItemGroup> 添加到 Uno-Platform 库的 .csproj 文件中:

<ItemGroup Condition=" $(TargetFramework.StartsWith('netstandard2.')) ">
    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="1.1.1" />
    <PackageReference Include="Microsoft.Extensions.Logging.Filter" Version="1.1.1" />
    <PackageReference Include="Uno.UI.WebAssembly" Version="3.3.0" />
</ItemGroup>