CodeWars的编译器显示的错误是什么?

时间:2017-09-17 13:38:48

标签: c#

我正在努力学习C#而且我还是初学者。最近,我发现了一个允许你练习和训练的网站,但我在工作时遇到了问题。 当我在Visual Studio中键入此代码时,它可以工作,但它不在网站上,并且网站告诉我我有错误!

该网站是:www.codewars.com

代码是:

public class DnaStrand 
{
    public static string MakeComplement(string dna)
    {
        int length = dna.Length;
        string [] smash = new string[length];
        for (int i = 0; i < length; i++)
        {
            smash[i] = n.Substring(i,1);
        }
        for (int k = 0; k < length; k++)
        {
            if (smash[k] == "A") { smash[k] = "T"; }
            else if (smash[k] == "T") { smash[k] = "A"; }
            else if (smash[k] == "G") { smash[k] = "C"; }
            else if (smash[k] == "C") { smash[k] = "G"; }
        }
        for (int o = 0; o < length; o++)
        {
            Console.Write(smash[o]);
        }
    }
}

The error that the site shows

修改

错误是:

/home/codewarrior/fixture.cs(1,17):错误CS0234:类型或命名空间名称VisualStudio' does not exist in the namespace Microsoft'。你错过了装配参考吗?

错误:命令失败:mcs -out:/home/codewarrior/test.dll -lib:/home/codewarrior,/runner/frameworks/csharp/mono-4.5,/runner/frameworks/csharp/nunit/bin - langversion:默认-sdk:4.5 -warn:2 -target:library -r:nunit.core.dll,nunit.framework.dll,nunit.core.interfaces.dll,nunit.util,Newtonsoft.Json.dll -r: System.Numerics.dll -r:System.Drawing.dll -r:System.Data.dll -r:System.Data.SQLite.dll -r:System.Data.SQLite.Linq.dll -r:System.IO。 dll -r:System.Linq.dll -r:System.Linq.Dynamic.dll -r:System.Linq.Expressions.dll -r:System.Messaging.dll -r:System.Threading.Tasks.dll -r: System.Xml.dll -r:Mono.Linq.Expressions.dll /home/codewarrior/code.cs /home/codewarrior/fixture.cs /home/codewarrior/fixture.cs(1,17):错误CS0234:类型或命名空间名称VisualStudio' does not exist in the namespace Microsoft'。你错过了装配参考吗?

2 个答案:

答案 0 :(得分:1)

问题是CodeWars使用Ubuntu + Mono combo for compilation并且您正在尝试使用MSTest框架,而该框架不是套件的一部分。

根据可用的库,我会使用NUnit framework进行测试(因为它已安装)。

答案 1 :(得分:1)

基本上,在CodeWars上编译C#代码的机器没有安装Visual Studio单元测试库。这就解释了为什么它在Visual Studio中编译,因为Visual Studio IDE在安装时附带了测试库,而CodeWars机器没有,因为它似乎使用的是Mono。

根据CodeWars forum thread,您应该使用NUnit框架,例如:

using NUnit.Framework;

[TestFixture]
public class DnaStrandTest {
    [Test]
    public void test01() {
        Assert.AreEqual("TTTT", DnaStrand.MakeComplement("AAAA"));
    }
    [Test]
    public void test02() {
        Assert.AreEqual("TAACG", DnaStrand.MakeComplement("ATTGC"));
    }
    [Test]
    public void test03() {
        Assert.AreEqual("CATA", DnaStrand.MakeComplement("GTAT"));
    }
}