Visual Studio один проект с несколькими DLL в качестве вывода?

Я программирую проект с поддержкой плагинов. Поскольку многие из плагинов относительно малы (только один источник-файл / class), я бы хотел, чтобы все они были в одном проекте в visual studio, но для успешного выполнения этого мне понадобился бы каждый исходный файл / class, который должен быть скомпилирован в его собственный DLL-файл, возможно ли это с помощью визуальной студии?

Если это невозможно с визуальной студией, можно ли использовать другую систему сборки, все еще кодируя и отлаживая визуальную студию?

В настоящее время я установил тип вывода проекта плагинов в консоль и запрограммировал метод main (), который скомпилирует все файлы .cs в исходном каталоге в dll и скопирует их в соответствующий каталог. Затем я установил это консольное приложение как событие после сборки проекта плагинов. Это работает, но кажется очень уродливым взломом.

Использование Visual Studio 2010.

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

Если вы не хотите иметь один проект для каждого плагина, вы можете создать пользовательскую сборку с помощью MSBuild с помощью задачи CSC

Как сгенерировать dll для каждого файла плагина

  1. В проекте вы добавляете все файлы плагинов
  2. Отредактируйте файл проекта, чтобы указать, какой class будет генерировать библиотеку плагинов:

      true    true     
  3. Добавьте новую цель в файл проекта, чтобы создать библиотеку плагинов

        
  4. Если вы хотите создать библиотеку плагинов после каждой сборки, добавьте цель после сборки:

       

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

Вы можете иметь 5 проектов Class Library и скомпилировать их, генерируя 5 DLL.

Чтобы перейти к ответу Julien Hoarau выше, вот решение, которое позволяет вам скомпилировать несколько DLL-файлов из одного проекта и скомпилировать эти файлы DLL из нескольких файлов CS. Просто откройте файл csproj и добавьте его перед тегом :

     false false false false false        false false false            

Это мой подход – он позволяет вам держать все организованное внизу, а не распространяться по всему файлу проекта. С помощью

 false 

позволяет нам скрыть файлы из SolutionExplorer и иметь отдельный определенный список файлов вместо простого добавления тега плагина в нужные нам файлы. В своем основном решении не забудьте установить для «Build Action» значение «none» для всех файлов, которые вы компилируете в плагине, чтобы дублирования в основном файле проекта не было.

Еще некоторое чтение о CSC:

https://msdn.microsoft.com/en-us/library/78f4aasd.aspx Создание командной строки с помощью csc.exe

https://msdn.microsoft.com/en-us/library/ms379563(v=vs.80).aspx Работа с компилятором командной строки C # 2.0

https://msdn.microsoft.com/en-us/library/s5c8athz.aspx Задача Csc

https://msdn.microsoft.com/en-us/library/7szfhaft.aspx Условия MSBuild

Надеюсь, это кому-то полезно.

Если вы хотите, чтобы каждый файл кода был собственной DLL, вам нужно создать новый проект для каждого файла кода. Но вы можете поместить несколько файлов проекта (.csproj) в одно большое решение.

Если это вас не устраивает, вы всегда можете скомпилировать свой проект с помощью командной строки. Это позволит вам настроить свою сборку в соответствии с вашими потребностями. Например, вы можете написать пакетный скрипт или скрипт powershell, который бы скомпилировал все ваши файлы кода в отдельную DLL.

  • Пользовательское расширение Intellisense
  • Избранные быстрые клавиши Visual Studio
  • Неконстантная ссылка связана с временной ошибкой Visual Studio?
  • постоянные переменные, не работающие в заголовке
  • Какие функции C99 доступны в компиляторе MS Visual Studio?
  • Как установить путь к DLL-файлу в Visual Studio?
  • Эквивалент AssemblyInfo в ядре dotnet / csproj
  • Что такое «случайное исключение»?
  • Почему ReSharper хочет использовать «var» для всего?
  • Сделать ListView.ScrollIntoView Прокручивать элемент в центр ListView (C #)
  • Проверка XML с помощью XSD в среде Visual Studio IDE
  • Давайте будем гением компьютера.