3

Windows Phone 7.1 プロジェクトで TFS 2010 を使用して継続的インテグレーションを実行しようとしています。2 つのリソース プロジェクト (ローカリゼーション用の Win32 プロジェクト) とメインの Windows phone プロジェクトがあります。

上記の 2 つのプロジェクトのプロジェクト出力をメインの WP プロジェクト (「MUI」フォルダー内) のフォルダーにコピーし、ビルド アクションでファイルを「コンテンツ」としてマークしました。Visual Studio 2010 から WP7 プロジェクトをビルドして実行すると、すべてがうまく機能します。

しかし、TFS 2010 ビルド システムを使用してプロジェクトをビルドしようとすると、「Xap のパッケージ化に失敗しました。オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーでビルドが失敗します。エラーについて調査した結果、TFS エージェント マシンでファイルをビルドすると、TFS バイナリ (出力フォルダー) フォルダーに "MUI" フォルダーがなく、2 つのリソース プロジェクトの出力がバイナリに直接コピーされることがわかりました。フォルダー、したがってビルドに失敗します。

また、ファイルをメインの WP プロジェクトに直接追加/インクルードすると、TFS ビルドが成功することに気付きました (つまり、プロジェクト出力を WP7 プロジェクト フォルダーにコピーするように構成すると失敗します。TFS はすべてを「バイナリ」フォルダーにビルドするため)

これらのファイルを TFS バイナリ フォルダーから WP7 XAP ファイルに含める (参照する) にはどうすればよいですか? (MSBuildタスクを使用していますか?)VS2010内のローカルビルドでも同じことが機能するはずです。

また、これを行う他の方法はありますか?

どうも

4

2 に答える 2

0

これが、SlowCheetahを使用して解決した方法です。


テスト済み:

場所

  • ローカルに
  • サーバーの構築 (TFS 2012)

Visual Studio のバージョン

  • ビジュアル スタジオ 2010
  • ビジュアル スタジオ 2012

Silverlight のバージョン

  • シルバーライト 4

プロセス

  • SlowCheetah を使用して変換を作成する
  • プロジェクトの最後に次の情報を追加して、Visual Studio プロジェクトを更新します。

    <PropertyGroup>
        <XapPackagerDependsOn>
          TransformAllFiles;
          IncludeTransformedFileInXapFile;
          $(XapPackagerDependsOn);
        </XapPackagerDependsOn>
    </PropertyGroup>
    <Target Name="IncludeTransformedFileInXapFile">
        <ItemGroup>
          <XapFilesInputCollection Include="$(OutDir)YOUR-FILES.CONFIG" />
        </ItemGroup>
    </Target>
    
    • 構成ファイルと変換ファイルが出力フォルダーにコピーされないようにします。

      ここに画像の説明を入力

于 2013-04-02T23:14:45.930 に答える
0

リソース プロジェクトの出力パスを WP7 プロジェクトの出力パスに設定し、XapFilesInputCollection を使用して xap に含めることで問題を解決しました。

また、アプリケーション タイトル の WMAppManifest.xml で参照されるパスを変更しました。

行われた変更:

_ 各リソース プロジェクト ファイルの OutDir タグを追加/置き換えました。

<OutDir>$(SolutionDir)$(SolutionName)\bin\Debug</OutDir>

これにより、リソース プロジェクトの出力がメイン プロジェクトの出力 AppResLib.dll および AppResLib.dll.040b.mui にコピーされます。

b . 次に、メインの Windows Phone プロジェクト ファイル (.csproj) に追加

      <Target Name="AfterCompile">
         <ItemGroup>
           <XapFilesInputCollection Include="$(OutDir)\AppResLib.dll"/>
           <XapFilesInputCollection Include="$(OutDir)\AppResLib.dll.040b.mui"/>
         </ItemGroup>
   </Target>

これは、VS 2010 ビルドと TFS 2010 ビルド システムの両方で機能します。

Silverlight MSBuild タスクの参照- Xap が ClientBin にコピーされた後にコマンド ラインを実行する

于 2012-09-04T15:32:55.550 に答える