小编Aag*_*eif的帖子

C#CompilerResults GenerateInMemory?

我一直在关注这个StackOverflow问题.它是我能找到的最接近的东西,但并不完全.

让我在我的问题之前解释一下我的最终目标是什么,我正在制作一个支持web的编译器平台,因此,我想在内存中做所有事情(不做任何文件),所以我希望能够编译代码,然后能够引用我刚编译的类中的对象进行任意测试.我知道它听起来有多安全,所以欢迎提供安全方面的意见.

我的问题是如何将C#源代码编译到内存中,并创建该类的实例?

目前我正处于一个步骤,我可以生成有效的.dll并导入并在VisualStudio中手动使用它.

接下来的两个步骤是:

  • 自动加载程序集(这就是我在这里要求的)
    • 这意味着我不再需要提供一个到dll的路径,并手动获取封闭类的成员
  • 任意引用它的成员
    • 这意味着我可以创建一个类的接口,而无需其成员的先验知识,有点像foreach循环如何在键值对上工作.

为了完全在记忆中尝试这个,我试过这个.(来源说明)

private object sourceToObj(string source) {
  string source = "...";  /*my class*/
  CSharpCodeProvider pro = new CSharpCodeProvider();

  CompilerParameters params = new CompilerParameters();
    params.GenerateInMemory = true;
    params.GenerateExecutable = false; 
    params.ReferencedAssemblies.Add("System.dll");

  CompilerResults res = pro.CompileAssemblyFromSource( params, source );

  Assembly DOTasm = res.CompiledAssembly;

  AppDomain domain = AppDomain.CreateDomain( "thisdomain" );
    domain.load( DOTasm , /*???*/ );
    domain.CreateInstanceAndUnwrap( DOTasm .FullName, /*???*/ );


  return /*???*/;
}
Run Code Online (Sandbox Code Playgroud)

最后,作为代码中的这一点,我希望返回一些对象,我可以调用它的属性.所以打电话 object obj = new sourceToObj(source).class(); …

c# .net-assembly

7
推荐指数
1
解决办法
3143
查看次数

Express:如何将font-awesome作为静态内容提供?

我使用express来在我的网站上提供静态内容,我想要合并FontAwesome(npm install font-awesome).但是在Font-Awesome的css中,字体文件的链接附有一个查询字符串,其中包含表达不明白的版本信息.

有没有人遇到这个并找到了修复?是否有一种简单的方法可以使表达式忽略静态内容的qs?

var express = require('express')
var app = express()

app.use('/static', express.static('./node_modules/font-awesome/css'))
app.use('/static', express.static('./node_modules/font-awesome/fonts'))

// response 200 | /static/font-awesome.min.css
// error 404    | /static/fontawesome--webfont.woff?v=4.6.3
Run Code Online (Sandbox Code Playgroud)

更新 为@DenysSéguret指出我们并不像我想象的那样.实际的要求是/fonts/fontawesome--webfont.woff?v=...

app.use('/fonts', express.static('./node_modules/font-awesome/fonts'))
Run Code Online (Sandbox Code Playgroud)

static-content node.js express

6
推荐指数
1
解决办法
4615
查看次数

如何从私有Docker Registry中“删除”映像?

我正在为Docker编写API客户端,并且注册表API难以使用。我正在尝试从注册表中删除图像,但是我一直收到此错误

[ { code: 'UNSUPPORTED', message: 'The operation is unsupported.' } ]
Run Code Online (Sandbox Code Playgroud)

我要做到这一点的步骤如下,

 >  GET http://localhost:5000/v2/
  >  registry/2.0
 >  registry/2.0
 >  GET http://localhost:5000/v2/_catalog/
  >  { repositories: [ 'alpine' ] }
 >  GET http://localhost:5000/v2/alpine/tags/list
  >  { name: 'alpine', tags: [ 'latest' ] }
 >  HEAD http://localhost:5000/v2/alpine/manifests/latest
  >  sha256:df73ed0973f15f40496c148330f9b559f0a5583c03f6ac8d26adadf6f4690aff
 >  DELETE http://localhost:5000/v2/alpine/manifests/sha256:df73ed0973f15f40496c148330f9b559f0a5583c03f6ac8d26adadf6f4690aff
[ { code: 'UNSUPPORTED', message: 'The operation is unsupported.' } ]
Run Code Online (Sandbox Code Playgroud)

编辑

自找到REGISTRY_STORAGE_DELETE_ENABLED变量以来,我正在更新我的问题。

我现在这样运行注册表容器,

docker run -d -p 5000:5000 -e REGISTRY_STORAGE_DELETE_ENABLED=true --name registry2 registry
Run Code Online (Sandbox Code Playgroud)

会产生一个新的错误,

[ { code: …
Run Code Online (Sandbox Code Playgroud)

docker-registry docker-api

6
推荐指数
1
解决办法
3698
查看次数

如何使用参数正确运行npm脚本

我已经用nodejs编写了一个小命令行程序,我希望能够npm run test使用下面的参数键入和运行程序.

直接输入以下命令有效, node.exe scrappee.js -u 'https://github.com/matutter/{}' -us 'cloggie, AirRocks-Flightcontroller' -s '$commit=li.commits > a > span, $sha=.right .commit-tease-sha' -pm .\test\example_parse_module.js

但是我的package.json的内容如下所示,没有任何输出.

"scripts": {
    "test" : "node.exe scrappee.js -u 'https://github.com/matutter/{}' -us 'cloggie, AirRocks-Flightcontroller' -s '$commit=li.commits > a > span, $sha=.right .commit-tease-sha' -pm .\\test\\example_parse_module.js"
}
Run Code Online (Sandbox Code Playgroud)

如何npm run test使用这些参数获取运行scrappee.js脚本的命令?

npm run-script

5
推荐指数
1
解决办法
3916
查看次数

如何将Cheerio DOM节点变回html?

使用下面的HTML,我试图提取每个段落的html.但是,我找不到任何方法将节点转回HTML或查询对象.

以下是一个字符串 var html = ...

<article>
    <p> p1 </p>
    <p> p2 </p>
</article>
Run Code Online (Sandbox Code Playgroud)

html就这样加载了

var $ = require('cheerio').load(html)
var paragraphs = $('p').toArray().map(p => /* I want the html at this point */ )
Run Code Online (Sandbox Code Playgroud)

如何获取这些段落的HTML?

注意:为清楚起见,我调用cheerio.load"查询对象" 的返回值并返回toArray方法DOM节点; 缺乏一个更好的短语.

html javascript jquery cheerio

4
推荐指数
1
解决办法
1749
查看次数