MSBuild ASP.NET VB6 DLL Взаимодействие - PullRequest
0 голосов
/ 27 мая 2009

У нас есть проект C # ASP.NET 3.5 с VS 2008.

У нас также есть библиотека VB6, которую мы вызываем через Interop (чёрт ... я знаю).

Мы используем проект Web Deployment с MsBuild и запускаем пакетный файл для сборки проекта на компьютере сборки.

Мой вопрос:

Есть ли способ изменить проект MSBuild так, чтобы библиотеки DLL VB6 и файлы взаимодействия создавались и перемещались в соответствующие папки как часть процесса сборки?

В настоящее время мы должны вручную создать DLL-библиотеку VB6 и файл взаимодействия и переместить их в соответствующие папки, а затем запустить пакетный файл MSBuild.

Есть идеи?

Ответы [ 4 ]

1 голос
/ 28 мая 2009

Вы можете создать DLL-библиотеку VB6 из командной строки, если вы можете каким-либо образом вставить команды в командный файл MSBuild. Просто запустите IDE VB6 (VB6.exe) с параметром командной строки / make и передайте путь к файлу проекта VBP. Запустите VB6.exe с /? если вы хотите увидеть список других параметров командной строки.

Я не уверен, как автоматизировать создание файла взаимодействия, но быстрый поиск в Google показывает, Tlbimp может стоить , стоит попробовать .

Я оставлю команды для copy вывода в нужный каталог в качестве упражнения для читателя;)

1 голос
/ 27 мая 2009

Используйте задачу MSBuild Exec для вызова проекта VB6.exe Dev с ключом / make. Затем используйте задачу копирования MSBUILD, чтобы скопировать известный вывод в нужное место.

0 голосов
/ 11 января 2011

http://msbuildextensionpack.codeplex.com/

Имеет задачу сборки vb6. ОДНАКО, это просто модная оболочка для vb6.exe /make.

Ака, задача msbuild помогает создать командную строку следующим образом:

C: \ Program Files \ Microsoft Visual Studio \ VB98 \ VB6.exe / MAKE / OUT ".. \ MyProjectFolder \ MyOldSchoolVB6Project.vbp.log" ".. \ MyProjectFolder \ MyOldSchoolVB6Project.vbp" / outdir "" .. \ MyProjectBuildResults \ Bin "

Вам не обязательно нужно задание msbuildextensionpack, но я считаю, что его лучше использовать в долгосрочной перспективе. (Другой вариант - подключить задачу exec и выполнить «жесткий вызов» командной строки выше.

НЕТ СПОСОБА СОЗДАНИЯ .vbp без VB6.EXE. Примите этот факт, и ваш мир приобретет немного больше смысла.

Я бы предложил разместить на сборочной машине установку абсолютного наименьшего общего знаменателя vb6 (иначе, ОТМЕНИТЬ каждую возможную опцию).

Затем закодируйте ваш файл .msbuild.

Примерно так:

(я не определяю SourceFilesBaseDirectory или OutputBuildDirectory, к вашему сведению)

  <PropertyGroup>
    <!-- This allows a way to provide a few options for the library  -->
    <TPath>$(MSBuildProjectDirectory)\..\MSBuild.ExtensionPack.tasks</TPath>
    <TPath Condition="Exists('$(ProgramFiles)\MSBuild\ExtensionPack\MSBuild.ExtensionPack.tasks')">$(ProgramFiles)\MSBuild\ExtensionPack\MSBuild.ExtensionPack.tasks</TPath>
  </PropertyGroup>

  <Import Project="$(TPath)"/>  


    <ItemGroup>
    <ProjectsToBuildIT001 Include="$(SourceFilesBaseDirectory)\MyProjectFolder\MyOldSchoolVB6Project.vbp">
          <OutDir>$(OutputBuildDirectory)</OutDir>
    </ProjectsToBuildIT001>
  </ItemGroup>


    <Target Name="BuildTheVBProjects001" >

        <MSBuild.ExtensionPack.VisualStudio.VB6 TaskAction="Build" Projects="@(ProjectsToBuildIT001)"/>             

    </Target>

Мне лично не нравится vb6.exe на моей основной машине сборки. Но это я.

Слава Богу. Net 2.0 и более поздние версии придумали способ создания кода, не основанного на устанавливаемой IDE.

«Жесткий вызов» выглядит примерно так. У вас будет соблазн сократить его и попробовать, возможно, это сработает. Но задача выше, я считаю, намного чище.

<exec program="c:\myfolder\myexe.exe" failonerror="false">
<arg value="/MAKE" />
</exec>

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

Но, в конце концов, vb6.exe должен существовать в окне сборки ~~ где-то.

..

0 голосов
/ 28 мая 2009

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

...