Создание и использование 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 или ссылки на сборку?)

Испытанные методы:

  1. Я добавлю ссылку через Проект-> Добавить ссылку.
  2. Использование Ссылка также используется.
  3. Поместите 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 в начале вашего класса.

Другие вопросы по тегам