首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在c#中在同一个项目中创建和使用DLL

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

Stack Overflow用户
提问于 2015-05-05 06:53:02
回答 2查看 396关注 0票数 0

我有一个DLL文件。通过使用DLL,我必须调用这些方法,并在我的项目中添加更多的方法。现在,我需要迁移旧的DLL使该项目成为一个新的DLL。我这样做了,但问题是C#代码被转换成网络模块,它显示了两个错误。我对此不太清楚。请帮我一把。

DLL代码:

代码语言:javascript
运行
复制
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;
        }
    }
}

}

政务司司长计划:

代码语言:javascript
运行
复制
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‘不能>找到(您是缺少一个使用指令还是程序集引用?)

尝试过的方法:

  1. 我将通过Project->添加引用。
  2. 使用引用也使用。
  3. 将DLL放入当前项目调试/发布文件夹中。
EN

回答 2

Stack Overflow用户

发布于 2015-05-05 07:07:55

我猜你以前的代码是并排的。

代码语言:javascript
运行
复制
public int Add(int a, int b)
{
    return a + b;
}
public void SomeMethod()
{
    var result = Add(2,3);
}

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

你将需要下列其中之一:

  • 类型名称(如果它是静态方法 )
    • 或静态使用if使用C# 6

  • 如果实例方法是实例,则为对实例的引用。

然后您将使用(分别)之一:

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

  • var result = someObj.Add(2,3);

在检查编译器消息时,听起来好像您已经做了类似的事情(第7行):

代码语言:javascript
运行
复制
using YourNamespace.YourType.Add;

这是完全错误的;您没有使用using将方法引入仅限作用域的命名空间和(在C# 6中)类型。

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

代码语言:javascript
运行
复制
var result = YourNamespace.YourType.Add(x,y);

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

票数 2
EN

Stack Overflow用户

发布于 2015-05-05 07:05:13

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30046075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档