我正在尝试使用TFS 2010为Windows Phone 7.1项目进行持续集成。 有2个资源项目(Win32 Project for localisation)和主要的Windows手机项目。
我已将上述2个项目的项目输出复制到主WP项目中的文件夹(在“MUI”文件夹内),并在构建操作中将文件标记为“内容”。 从Visual Studio 2010构建和运行WP7项目时,一切正常。
但是当我尝试使用TFS 2010构建系统构建项目时, 构建失败并出现以下错误“Xap打包失败。对象引用未设置为对象的实例”。在研究了错误后,我发现当文件在TFS代理机器上构建时,TFS二进制文件(输出文件夹)文件夹没有“MUI”文件夹,但是2个资源项目的输出直接复制到二进制文件中文件夹,因此无法构建。
另外我注意到如果我将文件直接添加/包含到主WP项目中,TFS构建成功。(换句话说,如果我将项目输出配置为复制则失败 到WP7项目文件夹。由于TFS将所有内容构建为“二进制文件”文件夹
如何在TFS二进制文件夹中将这些文件包含在WP7 XAP文件中(引用它们)? (使用MSBuild任务?),同样适用于本地 在VS2010中构建。
还有其他方法吗?
THX
答案 0 :(得分:0)
通过将资源项目的输出路径设置为来解决问题 WP7项目的输出路径,然后使用XapFilesInputCollection将它们包含在xap中。
还更改了WMAppManifest.xml中的引用路径以获取应用程序标题。
所做的更改:
一。添加/替换每个资源项目文件中的OutDir标记。
<OutDir>$(SolutionDir)$(SolutionName)\bin\Debug</OutDir>
这会将资源项目输出复制到主项目输出 AppResLib.dll和AppResLib.dll.040b.mui
B'/ em>的。然后在主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 - execute command line after Xap copied to ClientBin
答案 1 :(得分:0)
这就是我使用SlowCheetah解决它的方法。
<强>地点
Visual Studio版本
Silverlight版本
在项目结束时使用以下信息更新Visual Studio项目:
<PropertyGroup>
<XapPackagerDependsOn>
TransformAllFiles;
IncludeTransformedFileInXapFile;
$(XapPackagerDependsOn);
</XapPackagerDependsOn>
</PropertyGroup>
<Target Name="IncludeTransformedFileInXapFile">
<ItemGroup>
<XapFilesInputCollection Include="$(OutDir)YOUR-FILES.CONFIG" />
</ItemGroup>
</Target>
确保配置文件和转换文件不会被复制到输出文件夹: