3

我正在尝试使用 TFS 2010 为 Windows Phone 7.1 项目进行持续集成。有 2 个资源项目(用于本地化的 Win32 项目)和主要的 Windows 手机项目。

我已将上述 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

。然后在主 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 Task - Xap 复制到 ClientBin 后执行命令行

于 2012-09-04T15:32:55.550 回答