0

我几乎完成了从这里获取的代码重构: https ://github.com/agracio/edge-js-quick-start

我添加了两个处理可重复代码的类,但我被困在两行代码中。我一辈子都想不通他们做了什么。我似乎也不明白 edge_app_root 的目标是什么(它是一个文件夹,但我怀疑它的目标是某个文件?)

进程.env.EDGE_USE_CORECLR = 1; process.env.EDGE_APP_ROOT = baseNetAppPath;

const path = require('path');
var version = process.argv[2];

// print process.argv
process.argv.forEach((val, index) =>
{
    console.log(+index + ":" + val);
});
console.log();

//by default the core will be used (and standard  is not supported)
var namespace = 'QuickStart.' + version.charAt(0).toUpperCase() + version.substr(1);
if (version === 'core')
{
    version = 'coreapp';
    console.log("coreapp");
}
const baseNetAppPath = path.join(__dirname, '/src/' + namespace + '/bin/Debug/net' + version + '2.0');

process.env.EDGE_USE_CORECLR = 1;
if (version !== 'standard')
{
    console.log("version is not standard")
    process.env.EDGE_APP_ROOT = baseNetAppPath;
    console.log("process.env.EDGE_APP_ROOT:\n" + baseNetAppPath+"\n");
}

var edge = require('edge-js');

var baseDll = path.join(baseNetAppPath, namespace + '.dll');
console.log(`basedll: ${baseDll}`);

//load functions from namespaces.cs files
var localTypeName = namespace + '.LocalMethods';

var namespace2 = namespace + '.InnerMethods';
console.log(`Using basedll:${baseDll}\n namespace2:${namespace2}\n`);
var getList = edge.func({
    assemblyFile: baseDll,//should be the same
    typeName: namespace2,//namespace + '.InnerMethods',
    methodName: "GetList"
});

getList('', function (error, result)
{
    if (error) throw error;
    console.log(namespace + '.InnerMethods');
    console.log(result + "\n");
});

谢谢你的时间!

4

1 回答 1

1

来自 Edge.js 自述文件:

如果您正在使用 .NET Core 并且正在使用 .NET Core SDK 和 CLI,则必须有一个 project.json 文件(此处为规范)来指定应用程序的依赖项。此依赖项列表还必须包含 Edge.js 运行时包,如果您需要能够动态编译代码,还必须包含您计划使用的编译器的包,例如 Edge.js.CSharp。您必须在该项目的目录中运行 dotnet restore(恢复依赖项)和 dotnet build(构建项目并生成依赖项清单)命令,以在 bin/[configuration]/[framework] 下生成 .deps.json 文件,即 bin/Release/netstandard1.6/MyProject.deps.json。这个.deps。json 文件必须位于执行节点的当前工作目录中,或者您必须通过设置 EDGE_APP_ROOT 环境变量来指定其目录。例如,如果对于 c:\DotNet\MyProject 目录中的 netstandard1.6 项目,您将运行如下内容:

set EDGE_APP_ROOT=c:\DotNet\MyProject\bin\Release\netstandard1.6
node app.js

来源:https ://github.com/tjanczuk/edge

默认情况下,edge 在您当前的工作目录中查找其配置文件(例如:.deps.json),或者如果这些文件在其他地方,您将使用 EDGE_APP_ROOT 指定目录。

于 2021-03-10T02:08:34.350 回答