0

DEVENV.exe にシェルを実行して、TFS ビルドで MSI をビルドしようとしています (MSBUILD は VSPROJ をサポートしていないため)。いずれにせよ、最初のインストーラー プロジェクトは正常にビルドされますが、2 番目のインストーラー プロジェクトは失敗します。順序を逆にすると、同じことが起こります (つまり、エラーはプロジェクトに従っていません)。出力を見ると、次のエラーが表示されます。

Deserializing the project state for project '[MyProject].dbproj'
[MyProject].dbproj : error  : Error HRESULT E_FAIL has been returned from a call to a COM component.

また、私は得る:

Package 'Microsoft.VisualStudio.TestTools.TestCaseManagement.QualityToolsPackage, Microsoft.VisualStudio.QualityTools.TestCaseManagement, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' failed to load

最初のビルドで DB プロジェクトをシリアル化しようとしているように見えます (成功したと表示されますが、どこにも DBML ファイルがありません)。次に、2 番目のビルドが DB プロジェクトを逆シリアル化しようとして失敗します。

環境設定のリセット (/resetusersettings フラグを使用) と /resetskippkgs フラグの使用を試みました。何も機能しません。

何か案は?

4

4 に答える 4

4

DevEnv にシェル アウトするとき、その特定のプロジェクト (.vdproj ファイル) を構築しているのか、それともソリ​​ューションを構築しているのか? VS がビルド マシンでソリューションを開こうとしていて、データベースとテスト プロジェクト システムが存在しないようです。

セットアップ プロジェクトを WiX に移植することを検討しましたか?

于 2012-03-08T15:08:24.163 に答える
3

シンプルに始めましょう。解決しようとしている問題に精通していない限り、通常は、TFS ビルドの一部として実行する前に「手動で」試すのが最善です。RDP でビルド サーバーに接続し、コマンド ラインで必要なコマンドを実行して、何が起こるかを確認します。それよりも簡単に、RDP をビルド マシンに入れ、Visual Studio を読み込んでビルドすることもできます。

つまり、Visual Studio 内またはコマンド ラインで devenv.exe を呼び出してビルドできない場合、チーム ビルドの一部として機能しません。

以下の Exec タスクを使用して、TFS ビルドの一部として行っていることを正確に実行しています。だから私はこれがうまくいくことを知っています。プラットフォームと構成は、構築するものによって異なる場合があります。これの良い点は、C:\Temp\MSIBuildOutputLog.txt にログ ファイルが作成され、追加のエラーや情報を分析できることです。

<Exec Command="&quot;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe&quot; &quot;$(PathToSolution)\solution.sln&quot; /Build &quot;Release|Mixed Platforms&quot; /out &quot;C:\Temp\MSIBuildOutputLog.txt&quot;" />

注意すべき重要な点の 1 つ... VS2010 には、 devenv.exe を使用してコマンド ラインで実行しようとすると、MSI 生成が失敗するバグがあります。これを見つけて理解するのに何日もかかりましたが、このホットフィックスが必要です。魅力のように働いた... http://archive.msdn.microsoft.com/KB2286556

于 2012-03-06T15:15:40.817 に答える
0

WIX (Windows Installer XML) を採用する方が、おそらくより適切で迅速です。これは、MS が現在、VS/MSBuild/TFSBuild 環境内で MSI をクレートするために使用することを推奨しているテクノロジです。

VS ソリューション内でのセットアップと統合は比較的簡単です。XML ベースのファイルを使用して MSI を記述し、これらのファイルを使用してコンパイル時に MSI を作成します。

まず、 http: //wix.codeplex.com/ から Wix をダウンロードします。

インストールすると、Wix ベースのプロジェクトの VS2010 統合を使用して MSI を作成できるようになります。すぐに開始するには、新しい Wix プロジェクトをソリューションに追加し、出力を MSI に結合したいプロジェクトを参照するだけです。次に、Wix ツールキットに含まれている「Heat」というツールを実行して、プロジェクトをスキャンして XML ファイルを生成できます。

これらの XML ファイルを取得したら、それらを Wix プロジェクトに追加してコンパイルします。

于 2012-03-09T14:48:07.813 に答える
0

実際には、msbuild をサポートしていないのは展開プロジェクトです。FWIW、これは Visual Studio の次のリリースですべて非推奨になるため、行き止まりの壊れたテクノロジに多くの時間を費やす前に、今すぐ InstallShield Limited Edition や Windows Installer XML を検討することをお勧めします。これらの代替案は両方とも、適切な MSBuild をサポートするだけでなく、他の多くの改善点もあります。

于 2012-03-09T13:45:34.783 に答える