MSBuild Скомпилировать цель для создания DLL для класса?

У меня есть класс VB, и когда я бегу:

msbuild /t:Compile

Он генерирует Exe для приложения, которое также содержит скомпилированный код для класса.

Я хочу иметь отдельную DLL для моего класса VB в папке Myfolder.

What extra arguments do I have to pass, in order to get my dll in myfolder ?

Любая помощь приветствуется!

3 ответа

Решение

Это можно сделать, вызвав задачу компиляции MSbuild.

Итак, написание задачи для использования задачи компилятора VBC для компиляции класса в dll поможет.

Остальное, заданная по умолчанию задача компиляции создаст исполняемый файл для основного модуля.

Вот как!

Если вы следуете стандартному соглашению Visual Studio для сценариев MSBuild (и вы, вероятно, так), то один .vbproj сопоставляется с одной выходной сборкой (либо .exe или же .dll). Выходной формат устанавливается OutputType имущество. Чтобы сгенерировать две выходные сборки, вам нужно создать два файла проекта и связать их вместе либо с помощью файла решения (вы можете использовать Visual Studio для его генерации, а затем использовать MSBuild для компиляции из командной строки), либо вы можете создать .proj файл, чтобы связать их. Такой комплексный проект будет выглядеть следующим образом:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <ProjectsToBuild Include="**\*proj" Exclude="$(MSBuildProjectFile)"/>
  </ItemGroup>
  <PropertyGroup>
    <Configuration>Release</Configuration>
  </PropertyGroup>
  <Target Name="Build">
    <MSBuild Projects ="@(ProjectsToBuild)"
             ContinueOnError ="false"
             Properties="Configuration=$(Configuration)">
        <Output ItemName="OutputFiles" TaskParameter="TargetOutputs"/>
    </MSBuild>
  </Target>
</Project>

Вы должны разделить ваш проект на 2 проекта. 1) .EXE, содержащий ваши main() и 2), содержащий все классы библиотеки. Затем проект.EXE ссылается на проект.DLL.

Перестройка одного и того же проекта дважды для получения.dll и.exe довольно странная. Почему бы не разделить проблемы?

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