我正在使用ScriptCS(这很棒!)但我无法弄清楚如何在.csx脚本文件中定义扩展方法.
举个例子:
using System.IO;
public static class Extensions
{
public static string Remove(this string source, params string[] toRemove)
{
foreach(var r in toRemove)
{
source = source.Replace(r,"");
}
return source;
}
}
string[] entries =
Directory
.GetFiles(
@"C:\Users\blah\blah",
"*.mp4",
SearchOption.AllDirectories)
.Select( p => p.Remove("Users"))
.ToArray();
foreach(var e in entries)
{
Console.WriteLine(e);
}
Run Code Online (Sandbox Code Playgroud)
这会产生错误:
错误CS1109:扩展方法必须在顶级静态类中定义; 扩展是一个嵌套类
我猜测ScriptCS将csx包装在一些导致扩展嵌套的类中,有什么方法可以解决这个问题吗?
我的Azure功能运行正常,突然间我收到了几个"检测到程序集更改.重新启动主机..."消息阻止我的功能完成.
我没有部署新代码,因此不确定是什么触发了Assembly Change事件.我正在运行最新版本的运行时,并且已经恢复到版本1.0.10947,认为可能是基础运行时已更新,但我仍然在日志中显示该行.
立即更新 @Alexey帮助我找出导致检测到装配更改的原因.我想问一下是否有人可以告诉我为什么要检测到装配更改,即使很难,我也没有更改/重新部署我的应用程序.
这是我第一次使用 Visual Studio Code,我试图在它上面运行一个简单的代码,但它给了我一个错误:
'scriptcs' 不是内部或外部命令,也不是可运行的程序或批处理文件。
我有这个作为代码:
using System;
struct Employee{
public int Id { get; set; }
public string FullName { get; set; }
}
public class MyClass{
public static void Main(){
Employee obj= new Employee();
obj.FullName = "Hello World";
Console.WriteLine(obj.FullName);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试安装 Scriptcs Runner,但仍然是同样的问题。有人可以提出其他建议吗?
编辑:
在您提出许多建议之后,我尝试了以下操作:
问题还是一样。得到上述错误。
我在Visual Studio Code上安装了scriptcs和coderunner.当我运行一个简单的程序,包括Console.WriteLine("Test")
我没有看到任何输出.该程序似乎成功运行并退出代码0.
有什么建议?
以下是所有人都感兴趣的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Test");
}
}
Run Code Online (Sandbox Code Playgroud) Windows中有没有办法直接启动.csx脚本(例如双击文件,或从开始菜单,或通过Launchy等应用程序启动程序),以便脚本在后台运行而无需打开命令行窗口?
例如,假设我有一个简单的"lowercase.csx"脚本,它只需要剪贴板中的任何文本,将其转换为小写,然后将结果放回剪贴板中.我希望能够双击该.csx文件并完全在后台运行而无需打开任何窗口.
目前,运行.csx文件时,ScriptCS.exe和VS2015 Update 1附带的新csi.exe启动程序都将打开控制台窗口,即使该文件未向控制台输出任何内容.
注意:我知道如果从控制台窗口启动脚本,则不会打开新窗口.我想在非命令行上下文中启动脚本并让它打开没有窗口.
注2:在"CS-Script"(ScriptCS替代方案)中,我想要的是使用"csws.exe"启动文件.
我正在使用Visual Studio Code for Mac,运行扩展名CodeRunner。我有一个简单的程序:
using System;
namespace HelloWorldApplication {
class HelloWorld {
static void Main(string[] args) {
Console.WriteLine("hellowol");
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用右上角的播放按钮运行它时,出现以下错误:
/bin/sh scriptcs: command not found
Run Code Online (Sandbox Code Playgroud)
然后
[Done] exited with code=127 in 0.008 seconds
Run Code Online (Sandbox Code Playgroud)
程序未显示所需的输出。
编辑:非常感谢@VonC。他的方法行得通。 任何人的专业提示:使用安装脚本
brew install scriptcs
Run Code Online (Sandbox Code Playgroud) 背景
我正在创建运行一些状态检查的 ac# 应用程序(想想 nagios 样式检查)。
我理想中想要的是这个 c# 应用程序查看特定目录,然后编译/执行其中的任何 scriptcs 脚本,并根据结果采取行动(例如,发送状态检查失败的电子邮件警报)。
我希望脚本返回一个整数或其他东西(例如),该整数将指示状态检查成功或失败的天气。
返回给 C# 应用程序的值。
0 - Success
1 - Warning
2 - Error
Run Code Online (Sandbox Code Playgroud)
当第一次接到这个任务时,我认为这是 MEF 的工作,但是创建这些“状态检查”而不必创建项目或编译任何东西会方便得多,只需在文件夹中放置一个 scriptcs 脚本似乎更有吸引力.
所以我的问题是
是否有关于将 ac# app 和 scriptcs 一起使用的文档/示例(谷歌并没有给我带来太多好处)?
这是 scriptcs 的用例还是它从未真正打算像这样使用?
我是否可以更轻松地使用 roslyn 或一些动态编译/执行创建自定义解决方案?(我对scriptsc的经验很少)
我尝试从scriptcs加载pythonnet运行时dll并且它不能与roslyn后端一起使用,因为Roslyn不支持动态,但单声道后端阻塞会出现以下错误:
$ scriptcs -modules mono
scriptcs (ctrl-c to exit or :help for help)
> #r "F:\Python\Python27\Lib\site-packages\Python.Runtime.dll"
error CS0009: Metadata file `F:\Python\Python27\Lib\site-packages\Python.Runtime.dll' does not contain valid metadata
Run Code Online (Sandbox Code Playgroud)
题:
如何使用Python.Runtime.DLL获取脚本的Mono后端?我需要在此之前加载任何DLL吗?是否必须使用Mono支持编译Python.Runtime.DLL或.NET是否正常?
我已将Scriptcs安装到Sublime Text3。
按下CTRL B并构建aspx页面时,出现此错误。
'scriptcs'不被识别为内部或外部命令,可操作程序或批处理文件。
我正在尝试在Sublime上运行aspx页面。
我怎样才能解决这个问题 ?谢谢。
scriptcs ×10
c# ×7
roslyn ×2
.net ×1
azure ×1
csx ×1
mono ×1
python.net ×1
sublimetext ×1
sublimetext2 ×1
sublimetext3 ×1
windows ×1