2009-05-27 19 views
0

我々はまた、我々は(不潔...私が知っている)相互運用機能経由で呼び出すVB6のDLLを持ってVS 2008MSBuildのASP.NET VB6 DLL相互運用

とC#ASP.NET 3.5プロジェクトを持っています。

MsBuildでWeb Deploymentプロジェクトを使用し、バッチファイルを実行してビルドマシンでプロジェクトをビルドします。

私の質問は:

はVB6 DLLおよび相互運用ファイルを持っているのMSBuildプロジェクトが作成され、ビルドプロセスの一環として、適切なフォルダに移動し、変更する方法はありますか?

現在、手動でVB6 DLLとinteropファイルを作成し、適切なフォルダに移動してからMSBuildバッチファイルを実行する必要があります。

アイデア?

答えて

1

MSBuild Execタスクを使用して、/ makeスイッチを使用してVB6.exe Devプロジェクトを呼び出します。次に、MSBUILDコピータスクを使用して、既知の出力を必要な場所にコピーします。

1

何らかの方法でMSBuildバッチファイルにコマンドを挿入できる場合は、コマンドラインからVB6 DLLをビルドできます。 VB6 IDE(VB6.exe)をコマンドラインスイッチ/ makeで実行し、VBPプロジェクトファイルへのパスを渡すだけです。 /とVB6.exeを実行しますか?他のコマンドラインスイッチの一覧を表示したい場合

私はinteropファイルの作成を自動化する方法がわかりませんが、Google検索ではTlbimpと表示されています。worth a tryです。

私は読者の練習として必要なディレクトリにcopyに出力をコマンドを残す;)

0

Alternativlyを、あなたは、このようなGUIを使用して簡単にFinalBuilderすることができますスクリプトとして自動ビルド・ツールで見ることができます上に尋ねるものを含めて好きなことをする。 link text

0

http://msbuildextensionpack.codeplex.com/

VB6のビルドタスクを持っています。しかし、これはvb6.exe/makeの単なるラッパーです。

アカは、MSBuildのタスクは、このようなコマンドラインを構築することができます:

C:\ Program Files \ MicrosoftビジュアルStudio \ VB98 \ VB6.exeの/ MAKE/OUT」.. \のmyProjectFolder \ MyOldSchoolVB6Project.vbp。ログ " ".. \のmyProjectFolder \ MyOldSchoolVB6Project.vbp"/ OUTDIR" ".. \ MyProjectBuildResults \ binに"

あなたが必ずしもmsbuildextensionpackタスクは必要ありませんが、私はそれがより良い長期的に使用することを見つける。 (あなたの他の選択肢は、上記のコマンドラインをexecタスクとワイヤリングすることです。

作成する方法はありません。 vbp VB6.EXEなし。この事実を受け入れると、あなたの世界はもう少し意味をなさないでしょう。

絶対最小公約数vb6のインストールをビルドマシンに置くことをお勧めします。

.msbuildファイルをコードします。私は個人的に私の主なビルドマシン上VB6.exeのが好きではない

(私はFYI、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> 

:このような

何か。しかし、それは私です。

ありがとうございました.Net 2.0以降では、インストールされているIDEに依存しないコードを作成する方法がありました。

「ハードコール」は、このように見えます。あなたはそれをショートカットして試してみると誘惑されますが、おそらく動作します。しかし、上記の作業は私が信じているクリーナーの方がはるかです。

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

しかし、一日の終わりには、vb6.exeがビルドボックス~~どこかに存在する必要があります。

..