Создание и использование DLL в одном проекте в C#
У меня есть файл 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;
}
}
}
}
CS Project:
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 или ссылки на сборку?)
Испытанные методы:
- Я добавлю ссылку через Проект-> Добавить ссылку.
- Использование Ссылка также используется.
- Поместите DLL в текущую папку проекта debug/release
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);
что недопустимо, так как это не статический метод.
Создание и использование DLL в одном проекте в C#
DLL или библиотека классов - это отдельный проект, который может быть частью одного решения.
Как вы уже знаете, добавление ссылки на этот dll / проект сделает его доступным в вашем проекте приложения. Однако, если функция Add в dll находится в другом пространстве имен (что было бы нормально), вам нужно было бы добавить использование using в начале вашего класса.