Visual Studio один проект с несколькими DLL в качестве вывода?
Я программирую проект с поддержкой плагинов. Поскольку многие из плагинов относительно малы (только один источник-файл / class), я бы хотел, чтобы все они были в одном проекте в visual studio, но для успешного выполнения этого мне понадобился бы каждый исходный файл / class, который должен быть скомпилирован в его собственный DLL-файл, возможно ли это с помощью визуальной студии?
Если это невозможно с визуальной студией, можно ли использовать другую систему сборки, все еще кодируя и отлаживая визуальную студию?
В настоящее время я установил тип вывода проекта плагинов в консоль и запрограммировал метод main (), который скомпилирует все файлы .cs в исходном каталоге в dll и скопирует их в соответствующий каталог. Затем я установил это консольное приложение как событие после сборки проекта плагинов. Это работает, но кажется очень уродливым взломом.
- Передача аргументов командной строки в Visual Studio 2010?
- Неразрешенный внешний символ в объектных файлах
- Как установить значок для моего приложения в visual studio 2008?
- # включить все .cpp-файлы в единый блок компиляции?
- Скорость шифрования всего TrueCrypt
Использование Visual Studio 2010.
- Точка останова не привязана - Visual Studio 2015
- Имя «ConfigurationManager» не существует в текущем контексте
- Не удалось инициализировать систему конфигурации
- Как отключить ReSharper в Visual Studio и включить его снова?
- Случайное исключение
- Невозможно найти JavaScriptSerializer в .Net 4.0
- Аутентификация Windows IIS Express
- Предотrotation ссылок на сборку PDB и XML-файлов, скопированных на вывод
Вы можете создать один проект для каждого плагина и сгруппировать все проекты в решении.
Если вы не хотите иметь один проект для каждого плагина, вы можете создать пользовательскую сборку с помощью MSBuild с помощью задачи CSC
Как сгенерировать dll для каждого файла плагина
- В проекте вы добавляете все файлы плагинов
-
Отредактируйте файл проекта, чтобы указать, какой class будет генерировать библиотеку плагинов:
true true -
Добавьте новую цель в файл проекта, чтобы создать библиотеку плагинов
-
Если вы хотите создать библиотеку плагинов после каждой сборки, добавьте цель после сборки:
Вам просто нужно создать Solution
затем добавить столько проектов, которые вы хотите.
Вы можете иметь 5 проектов Class Library
и скомпилировать их, генерируя 5 DLL.
Чтобы перейти к ответу Julien Hoarau выше, вот решение, которое позволяет вам скомпилировать несколько DLL-файлов из одного проекта и скомпилировать эти файлы DLL из нескольких файлов CS. Просто откройте файл csproj и добавьте его перед тегом Project>:
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.