2009-05-27 32 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必須存在於構建盒~~某處。

..