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

时间:2015-05-05 06:53:03

标签: c# .net dll netmodules

我有一个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'&gt;(您是否缺少using指令或程序集引用?)

尝试的方法:

  1. 我将通过Project-&gt;添加引用;添加参考。
  2. 还使用了使用参考。
  3. 将DLL放入当前项目调试/发布文件夹

2 个答案:

答案 0 :(得分: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);

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

答案 1 :(得分:0)

  

在c#

中的同一个项目中创建和使用DLL

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

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