2009-05-27 34 views
0

我们有VS 2008的MSBuild ASP.NET VB6 DLL互操作

一个C#ASP.NET 3.5项目我们也有,我们通过互操作调用(呸......我知道)VB6的DLL。

我们使用带有MsBuild的Web部署项目并运行批处理文件以在构建机器上构建项目。

我的问题是:

是否有修改MSBuild项目有创建的VB6 DLL和互操作文件,并将其移动到正确的文件夹生成过程的一部分的方式是什么?

目前我们必须手动构建VB6 DLL和interop文件,并将它们移动到合适的文件夹中,然后运行MSBuild批处理文件。

任何想法?

回答

1

使用MSBuild Exec任务使用/ make开关调用VB6.exe开发项目。然后使用MSBUILD复制任务将已知的输出复制到您想要的位置。

1

如果可以以某种方式将命令插入到MSBuild批处理文件中,则可以从命令行构建VB6 DLL。只需使用命令行开关/ make运行VB6 IDE(VB6.exe),并将路径传递给VBP项目文件。用/?运行VB6.exe如果你想看到其他命令行开关的列表。

我不确定如何自动创建互操作文件,但快速Google搜索建议Tlbimp可能是worth a try

我会离开的命令到copy输出到需要的目录作为练习读者;)

0

Alternativly,你可以看看一个自动构建工具,如的FinalBuilder您可以通过GUI脚本容易做任何你喜欢的事情,包括你上面提出的问题。 link text

0

http://msbuildextensionpack.codeplex.com/

有VB6的建设任务。但是,这只是vb6.exe/make的一个奇妙的包装。

阿卡的MSBuild任务有助于建立一个命令行是这样的:

C:\ Program Files文件\微软的Visual Studio \ VB98 \ VB6.EXE/MAKE/OUT” .. \ myProjectFolder的\ MyOldSchoolVB6Project.vbp。日志 “ ”.. \ myProjectFolder的\ MyOldSchoolVB6Project.vbp“/ OUTDIR” “.. \ MyProjectBuildResults \ BIN”

你不需要msbuildextensionpack任务必然,但我觉得它更好地从长远来看,使用。 (你的另一种选择是连接执行任务和“硬打电话”上面的命令行。

有没有办法建立一个。没有VB6.EXE的vbp。接受这个事实,你的世界会更有意义。

我会建议把绝对最小公分母vb6安装在生成机器上(又名,UNCHECK每个选项可能)。

然后编写您的.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必须存在于构建盒~~某处。

..