Arhn - архитектура программирования

как скомпилировать классы в одном проекте в разные DLL

Привет всем, у меня есть проект библиотеки классов с некоторыми классами.

Я хотел бы знать, как скомпилировать каждый класс в другую DLL.

Я не хочу создавать отдельный проект для каждой dll,

Я использую эту dll в качестве плагинов, но это очень простой плагин, и я не хочу создавать проект для каждого плагина.

Я собираюсь поместить все эти dll в один каталог и загрузить их динамически,

Спасибо

24.04.2012

  • Создайте отдельный проект для каждого класса. 24.04.2012
  • да, это будет легкий уродливый путь ... 24.04.2012
  • Почему вы хотите это сделать? Вероятно, есть лучший подход. 24.04.2012
  • Могут ли разные пространства имен решить ваши проблемы? Если вы просто хотите разделить структуру различных классов. 24.04.2012

Ответы:


1

Создайте отдельный проект для каждого класса.

24.04.2012

2

Создайте отдельный файл .cs для каждого класса.

Затем создайте библиотеки DLL, как это было предложено в ответе Nygma7, открыв командную строку Visual Studio, CD в расположение файлов .cs и создав библиотеки DLL в приглашении: csc /target:library /out:test1.dll test1.cs и т. д..

28.01.2014

3

Я не думаю, что это хороший способ продолжить, но тем не менее. Вы можете исключить классы из своего проекта, а затем скомпилировать.

Вы также можете использовать директивы компилятора как:

#define Class1
#if Class1
class 1
{
}
#endif

#undef Class2
#if Class2
class 2
{
}
#endif

А затем либо Class1, либо Class2 скомпилированы в выходной DLL. Но это будет не так автоматизировано, как хотелось бы. Не могу понять по-другому.

24.04.2012

4

Вам нужно отступить и подумать о том, о чем вы просите. У вас есть несколько классов, которые являются частью одного проекта, но вы хотите, чтобы этот проект состоял из нескольких разных частей. Почему вы хотите это сделать? В вашем коде верно одно из двух:

  1. Ваши классы зависят друг от друга; то есть Class1 зависит от Class2. В этом случае вам нельзя встраивать их в отдельные DLL, потому что эти DLL не будут работать сами по себе.
  2. Ваши классы независимы друг от друга; то есть Class1 не имеет отношения к Class2. В таком случае, почему они в одном проекте? Эти классы принадлежат их собственному проекту, поэтому их можно создавать индивидуально.

Прочитав ваше обновление, я подозреваю, что вы находитесь в случае № 2. Вы должны разделить свои классы на их собственные проекты, пока они не зависят друг от друга. Вы сказали: «Я не хочу их разделять», но не сказали почему. У вас есть причина, по которой вы не хотите, чтобы они разлучались? Вы по-прежнему можете использовать их все в рамках одного решения и создавать их все с помощью одной команды.

24.04.2012

5

Два решения: 1. Вы можете разделить классы, создав новый проект в своем решении, вы создадите библиотеку классов, которая создаст dll. Затем вы должны перейти к ссылкам и добавить новую ссылку в проект.

Вы должны подумать, хорошее ли это решение, если вы собираетесь использовать этот класс в других проектах, это хорошее решение.

2 пример кода...

using System;
namespace SimpleMaths
{
  public class Operations
  {
    public static int add(int a, int b)
    {
        return a + b;
    }

    public static int substract(int a, int b)
    {
        return a - b;
    }

    public static int multiply(int a, int b)
    {
        return a * b;
    }
  }
}

Теперь откройте Пуск>>VisualStudio2005/2008>>Инструменты Visual Studio>>Командная строка Visual Studio.

Теперь в командной строке найдите каталог, в котором вы сохранили только что созданный файл .cs. Использование команды CD.

csc/цель:библиотека/out:File.dll test.cs

это создаст файл DLL, который вы хотите

24.04.2012
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..