我需要在我的linux vps上运行一小段代码(下面),根据特定的id号生成一个字符串。我对PHP不是很熟悉,但我在PHP中尝试过编码算法但是我总是得到与c#代码不同的结果 - 很可能是由于Randomize或Rnd函数的运行方式。
单声道是一个有效的解决方案吗?实施涉及什么。任何信息都是有用的,我可以做更多的研究,但我只需要验证我不是在浪费时间试图让它在Linux上运行。任何人都有使用Mono作为小脚本的经验吗?
编辑我对任何有单声道实现经验的人都非常感兴趣。
c#的代码如下。在此之前,我将调用我的数据库来检索存储在unqiueid字符串变量中的数字。在此代码段运行后,我将拥有将unlockcode变量写入数据库的代码。
var rnum = Microsoft.VisualBasic.VBMath.Rnd(-1);
var seed = 2 * uniqueid.AsInt();
Microsoft.VisualBasic.VBMath.Randomize(seed);
for (int i = 1; i <= 6; i++)
{
unlockcode = unlockcode + Convert.ToChar((int)((26) * Microsoft.VisualBasic.VBMath.Rnd() + 1 + 64));
}
答案 0 :(得分:0)
我对你的问题感到困惑 应用程序的大小有限,没有理由“不”使用Mono。
但是,当您使用Linux时,应该避免使用Windows特定的内容。
例如,您无法在Linux上运行WPF应用程序。
理论上,您可以编译代码并在Linux上使用Mono运行它 但您使用的是Microsoft.VisualBasic中的类。我没有检查它是否可以在Mono上使用,但即使它是,也没有必要使用它:
var unlockCode = 0;
var random = new Random(Convert.ToInt32(uniqueId));
var randomNumber = random.Next();
for (int i = 1; i < 6; i++)
{
unlockCode += Convert.ToChar((int)((26) * random.Next() + 1 + 64));
}
使用System.Random而不是Microsoft.VisualBasic.VBMath.Randomize, 这是一个不用担心的依赖。
我还应该注意,当你在Windows上编译它时,例如使用Visual Studio,为了在Linux上使用它,你无需重新编译它,只需复制已编译的程序集(exe )将其部署在Linux上并使用Mono执行它。
反之亦然,如果您使用mono csharp编译器在Linux上编译应用程序,您只需将其复制到Windows机器并使用.NET(或Mono)执行它
如果您在Windows上编译了一个应用程序并想知道它是否使用了Linux / Mono上没有的任何内容,请使用MoMa工具:http://www.mono-project.com/MoMA
它将告诉您在Linux / Mono上运行应用程序时将遇到的问题。
更新:关于您的评论
运行Mono只是为了运行7行遗留的c#代码
似乎有点傻
没有什么可耻的......确定它占用了一些磁盘空间,但事实并非如此 在后台或任何事情中持续运行的进程。 Mono运行时 在执行应用程序时使用,在没有其他Mono / .NET应用程序时停止 活性。关于Python应用程序甚至命令行PHP应用程序也可以这么说。在你的系统上安装Mono没有坏处,我不担心。