我有一个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指令或程序集引用?)
尝试的方法:
答案 0 :(得分:2)
我猜你使用并排代码,即
public int Add(int a, int b)
{
return a + b;
}
public void SomeMethod()
{
var result = Add(2,3);
}
这是有效的,因为隐式应用了范围(this.
),并将您带到当前实例的Add
方法。但是,如果将方法移出,则范围不再隐式。
您需要以下其中一项:
然后你会使用(分别):
之一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子句