TFS TeamBuildをBuild C#> VB6> C#アプリケーション(ComReference Prob?)を作成しようとしています。
-
13-12-2019 - |
質問
私はTFSチームを構築しようとしています.WPF C#アプリを確実に構築しようとしています。このアプリは私たちが維持するvb6lib.dllに依存しています、このvb6lib.dll自体は私達も維持する他のc#libsに依存しています。
ビルド定義を構築するためのビルド定義を設定します。
- vbdependencies.sln(これではすべてのlibsがCOM Interop Setを持っています。したがって、VB6はそれらのTLBSを見つけることができます)
- buildvb6lib.proj( "vb6.exe / make / d"を呼び出すために "vb6.exe / make / d"を呼び出して、vb6lib.dll出力をCにコピーしていたこのスクリプトの一部として、msbuildファイルを作成します。 \ tmp)
- mainapp.sln(マイワークスペースでは、C:\ TMP \ vb6lib.dll) への参照を追加しました)
この音は大丈夫ですか ? My Dev Laptopでは、通常VB6を構築し、その出力を\ TMPにコピーしてからREGSVR32で、C#ソリューションの参照を追加する前にそこにあります。私がビルドDEFがやっていることを確信していないのはこのステップです。
また、VB6ビルドからより有用な出力を得る方法はありますが、現在ファイル 'xxx.bas'のコンパイルエラーがライブラリのプロジェクトを見つけることができますが、見つからない実際のライブラリではありません。 。
歓声
解決
開発システム上のビルドプロセスの重要なポイントがCOMオブジェクトの登録にあるという点で正しいです。ただし、一般に、誤ったCOMオブジェクトが登録されている場合や登録が失敗したときにすべての種類のバージョン管理の問題とサイレント障害を引き起こす可能性があるため、一般的には構築サーバーにCOMオブジェクトを登録したいと考えていません。
これを達成するための適切な方法は、対話型アセンブリを手動で作成し、COMオブジェクトの代わりに参照することです。これはTLBIMPユーティリティ、例えば:
で行われます。tlbimp ..\Libraries\VBLib.dll /out:..\Libraries\Interop.VBLib.dll
.
開発システムでそのコマンドを実行してから、vb6lib.dllへの参照を削除し、interop.vblib.dllへの参照を追加します。その後、インターポンズアセンブリが常に正しいバージョンからビルドされるように、参照プロジェクトでTLBIMPコマンドを追加することができ、再度COMオブジェクトをビルドシステムに登録する必要があります。