我有一个DLL文件。通过使用DLL,我必须调用这些方法,并在我的项目中添加更多的方法。现在,我需要迁移旧的DLL使该项目成为一个新的DLL。我这样做了,但问题是C#代码被转换成网络模块,它显示了两个错误。我对此不太清楚。请帮我一把。
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;
}
}
}}
政务司司长计划:
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‘不能>找到(您是缺少一个使用指令还是程序集引用?)
尝试过的方法:
发布于 2015-05-05 07:07:55
我猜你以前的代码是并排的。
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);这是无效的,因为这不是一个静态方法。
发布于 2015-05-05 07:05:13
在c#中在同一个项目中创建和使用DLL
DLL或类库是一个单独的项目,可以是同一解决方案的一部分。
正如您已经知道的,添加对该dll/项目的引用将使其在您的应用程序项目中可用。但是,如果dll中的函数Add位于不同的命名空间(这是正常的),则需要在类的开头添加using子句。
https://stackoverflow.com/questions/30046075
复制相似问题