MSBuild Скомпилировать цель для создания DLL для класса? - PullRequest
0 голосов
/ 20 июля 2011

У меня есть класс 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 ]

3 голосов
/ 20 июля 2011

Если вы следуете стандартному соглашению 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>
1 голос
/ 26 июля 2011

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

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

Rest, задача компиляции по умолчанию сгенерирует exe для основного модуля.

Вот как!

0 голосов
/ 20 июля 2011

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

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

...