0

我有一个 DLL 文件。使用 DLL,我必须调用方法并在我的项目中添加更多方法。现在,我需要迁移旧的 DLL 以将该项目作为新的 DLL。我这样做了但问题是 C# 代码被转换为 net 模块它显示两个错误。我不清楚。请帮我解决它。

DLL 代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace mcMath
{
public class mcMathComp
{
    private bool bTest = false;

    public mcMathComp()
    {
        // TODO: Add constructor logic here
    }

    /// <summary>
    /// //This is a test method
    /// </summary>
    public void mcTestMethod()
    { }

    public long Add(long val1, long val2)
    {
        return val1 - val2;
    }

    /// <summary>
    /// //This is a test property
    /// </summary>
    public bool Extra
    {
        get
        {
            return bTest;
        }
        set
        {
            bTest = Extra;
        }
    }
}

}

CS项目:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using mcMath;

namespace mcClient
 {
        class Program
        {

            static void Main(string[] args)
            {
                mcMathComp cls = new mcMathComp();
                long lRes = cls.Add(23, 40);
                cls.Extra = false;
                Console.WriteLine(lRes.ToString());
                Console.ReadKey();

            }
        }
    }

错误:

Program.cs(5,7):错误 CS0246:找不到类型或命名空间名称“mcMath”(您是否缺少 using 指令或程序集引用?)

试过的方法:

  1. 我将通过 Project-> Add Reference 添加引用。
  2. using Reference 也用到了。
  3. 将 DLL 放入当前项目的调试/发布文件夹
4

2 回答 2

2

我猜你曾经有并排的代码,即

public int Add(int a, int b)
{
    return a + b;
}
public void SomeMethod()
{
    var result = Add(2,3);
}

这是有效的,因为作用域 ( this.) 是隐式应用的,并将您带到Add当前实例上的方法。但是,如果将方法移出,则范围不再是隐含的。

您将需要以下之一:

  • 类型名称(如果它是静态方法)
    • 如果使用 C# 6,则使用静态
  • 对实例的引用(如果它是实例方法)

然后你会使用(分别)之一:

  • var result = YourType.Add(2,3);(加using YourNamespace;在顶部)
    • using static YourNamespace.YourType;在顶部
  • var result = someObj.Add(2,3);

检查编译器消息,听起来您已经完成了类似(第 7 行)的操作:

using YourNamespace.YourType.Add;

这是完全错误的;您不使用using方法带入范围 - 仅命名空间和(在 C# 6 中)类型。

同样,我怀疑您有(第 22 行):

var result = YourNamespace.YourType.Add(x,y);

这是无效的,因为这不是静态方法。

于 2015-05-05T07:07:55.120 回答
0

在 C# 中的同一项目中创建和使用 DLL

DLL 或类库是一个单独的项目,可以是同一解决方案的一部分。

如您所知,添加对该 dll/项目的引用将使其在您的应用项目中可用。但是,如果函数 Add in dll 位于不同的命名空间中(这很正常),您需要在类的开头添加 using 子句

于 2015-05-05T07:05:13.560 回答