MSBuild ASP.NET VB6 DLL互操作

问题描述 投票:0回答:4

我们有一个带有VS 2008的C#ASP.NET 3.5项目。

我们还有一个VB6 DLL,我们可以通过Interop调用(真是的,我知道)。

[我们将Web部署项目与MsBuild一起使用,并运行批处理文件以在构建计算机上构建该项目。

我的问题是:

是否有一种方法可以修改MSBuild项目,使其具有VB6 DLL和互操作文件,并在构建过程中将其移动到适当的文件夹中?

当前,我们必须手动生成VB6 DLL和互操作文件,并先将它们移动到相应的文件夹,然后运行MSBuild批处理文件。

有什么想法吗?

asp.net vb6 msbuild interop
4个回答
1
投票

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

我将把命令的输出留到copy到所需目录中,以供读者练习;)


0
投票

0
投票
具有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任务,并在上面的命令行中“硬调用”。

没有VB6.EXE,无法构建.vbp。接受这个事实,您的世界就会变得更加有意义。

我建议将绝对最小公分母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。就是我。

非常感谢。Net2.0和更高版本提出了一种构建代码的方法,该方法不依赖于已安装的IDE。

“硬电话”看起来像这样。您将很容易将其简化并尝试,它可能会起作用。但是我相信上面的任务是很多清洁工。

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

这当然只是一个示例,需要花一些时间才能使其正确。

但是到最后,vb6.exe必须存在于构建箱中~~某处。

..

© www.soinside.com 2019 - 2024. All rights reserved.