我想发布到我的应用程序的不同口味,并希望在手机上显示的应用程序名称中指出此。据我所知,Silverlight Phone Apps的名称完全由WMAppManifest.xml决定。因此,我想在构建时根据我的构建配置修改应用程序标题。有什么建议么?基于构建配置修改WMAppManifest.xml
回答
您可以带着几分T4模板和代码生成(见http://msdn.microsoft.com/en-us/library/bb126445.aspx,如果你不知道这件事。)做这
下面的步骤,您就可以使用不同的应用程序的标题,如果你正在使用调试或发布配置。
取WMAppManifest.xml
副本,并将其重命名为WMAppManifest-base.tt
变化WMAppManifest-base.tt
内容是
<#@ template language="C#" #><#@ output extension=".xml" #><?xml version="1.0"?>
<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2009/deployment" AppPlatformVersion="7.0">
<App xmlns="" ProductID="{4c5315b6-4030-46c5-b5ea-17284d6af0c6}" Title="<#= this.ConfiguredAppTitle #>" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" Author="WindowsPhoneApplication8 author" Description="Sample description" Publisher="WindowsPhoneApplication8">
<IconPath IsRelative="true" IsResource="false">ApplicationIcon.png</IconPath>
<Capabilities>
<Capability Name="ID_CAP_IDENTITY_DEVICE"/>
<Capability Name="ID_CAP_NETWORKING"/>
</Capabilities>
<Tasks>
<DefaultTask Name ="_default" NavigationPage="MainPage.xaml"/>
</Tasks>
<Tokens>
<PrimaryToken TokenID="WindowsPhoneApplication8Token" TaskName="_default">
<TemplateType5>
<BackgroundImageURI IsRelative="true" IsResource="false">Background.png</BackgroundImageURI>
<Count>0</Count>
<Title><#= this.ConfiguredAppTitle #></Title>
</TemplateType5>
</PrimaryToken>
</Tokens>
</App>
</Deployment>
<#+
string ConfiguredAppTitle = "MyPhoneApp";
#>
(调节能力等适当。)
在相同的文件夹作为WMAppManifest-base.tt
创建一个文件,其名称为Debug.WMAppManifest.tt
,其内容如下:
<#
ConfiguredAppTitle = "MyDebugApp";
#><#@ include file="WMAppManifest-base.tt" #>
现在创建一个名为Release.WMAppManifest.tt
与文件,内容如下:
创建一个项目的根称为copyifnewer.bat
文件。给它包含以下内容:
echo Comparing: %1 with %2
if not exist %1 goto File1NotFound
if not exist %2 goto File2NotFound
fc %1 %2
if %ERRORLEVEL%==0 GOTO NoCopy
echo Files are not the same. Copying %1 over %2
copy %1 %2 /y & goto END
:NoCopy
echo Files are the same. Did nothing
goto END
:File1NotFound
echo %1 not found.
goto END
:File2NotFound
copy %1 %2 /y
goto END
:END
在项目属性添加此PRE-build命令:
"$(ProjectDir)\copyifnewer.bat" "$(ProjectDir)properties\$(ConfigurationName).WMAppManifest.xml" "$(ProjectDir)properties\WMAppManifest.xml"
现在你可以调整在调试&发布文件中的值,你想改变标题。
如果您有其他配置,只需创建适当命名的文件(具有与debug.*.tt
相同的内容),它们就会自动提取。
请注意,测试时,如果您使用一个名称(在模拟器或手机中)安装应用程序,则必须卸载它才能看到应用程序列表中反映的名称更改。
给自己的注意:必须在这里写博客。 (这真的很强大,但很难解决第一次如何操作。)
您可以使用项目属性中的预生成步骤(项目属性 - >生成事件 - >预生成事件命令行)有条件的命令行来实现这一点。
拥有每个版本的文件,然后复制默认值以替换那里的数据。你也可以设置你的图标来使用这个相同的系统! :)
if $(ConfigurationName) == Phone_Free_Debug (
copy /Y $(ProjectDir)Properties\WMAppManifest_Free.xml $(ProjectDir)Properties\WMAppManifest.xml
copy /Y $(ProjectDir)173x173icon_Free.png $(ProjectDir)173x173icon.png
copy /Y $(ProjectDir)200x200icon_Free.png $(ProjectDir)200x200icon.png
)
if $(ConfigurationName) == Phone_Free_Release (
copy /Y $(ProjectDir)Properties\WMAppManifest_Free.xml $(ProjectDir)Properties\WMAppManifest.xml
copy /Y $(ProjectDir)173x173icon_Free.png $(ProjectDir)173x173icon.png
copy /Y $(ProjectDir)200x200icon_Free.png $(ProjectDir)200x200icon.png
)
if $(ConfigurationName) == Phone_Debug (
copy /Y $(ProjectDir)Properties\WMAppManifest_Paid.xml $(ProjectDir)Properties\WMAppManifest.xml
copy /Y $(ProjectDir)173x173icon_Paid.png $(ProjectDir)173x173icon.png
copy /Y $(ProjectDir)200x200icon_Paid.png $(ProjectDir)200x200icon.png
)
if $(ConfigurationName) == Phone_Release (
copy /Y $(ProjectDir)Properties\WMAppManifest_Paid.xml $(ProjectDir)Properties\WMAppManifest.xml
copy /Y $(ProjectDir)173x173icon_Paid.png $(ProjectDir)173x173icon.png
copy /Y $(ProjectDir)200x200icon_Paid.png $(ProjectDir)200x200icon.png
)
我知道这是一个古老的线程了,但碰到它,因为我一直在寻找做同样的事情和接受的答案是当场就对我。我只是想添加一个修改批处理文件部分的建议,以防其他人帮忙。我会评论接受的答案,但目前缺乏声誉,所以希望没有人会介意我将它作为单独的答案添加。
如果您使用的是版本控制解决方案(例如在TFS中),那么您的WMAppManifest可能会被写保护,除非您特别记得在构建之前检查它。如果是,批处理文件将无法覆盖它,但是您不会收到任何通知,并且构建将继续进行,这意味着您可能没有注意到它不会根据您的构建配置进行更新。为了解决这个问题,添加以下的批处理文件(后:END):结束
if %errorlevel% neq 0 exit /b %errorlevel%
如果批处理文件失败,构建就会停止,提醒你这个问题。
此外,不要在Visual Studio中创建批处理文件!它会以UTF-8编码保存(我认为),当Windows尝试对其进行外壳化时,可能会出现错误。在记事本中创建它,以确保它以ASCII码保存。如果你用错误的编码保存它,它将不会运行,上面的修改也可以捕捉到。
- 1. 基于构建或配置文件的城堡温莎配置
- 2. 基于app.config中设置的结构映射配置更改
- 3. 基于按键修改相机位置
- 4. 根据构建常量修改配置文件
- 5. 如何激活和修改cedet/ede中的构建配置?
- 6. 为iPhone构建基于配置文件的IOS应用程序
- 7. 基于构建配置文件的条件AndroidManifest属性?
- 8. xcode - 基于构建配置的条件编译
- 9. Android - 使用ant创建更改配置值的构建配置
- 10. 构建配置
- 11. 配置基于Eclipse
- 12. 手动更改构建配置文件
- 13. 修改配置文件
- 14. 基于配置的应用程序设置使用构建事件
- 15. 弹簧xml配置基于Java配置
- 16. Netbeans构建配置
- 17. 请配置构建
- 18. 在基于RHEL的系统上匹配后修改线路
- 19. XFS fllesystem时修改配额配置
- 20. 构建基于字符串
- 21. 构建基于条件
- 22. 构建基于与点
- 23. 配置项目“:应用程序”未能找到构建工具修改
- 24. 配置基于eclipse的IDE
- 25. 吉斯,基于YAML配置
- 26. 春:基于注解配置
- 27. 基于@Input的修改变量
- 28. 基于PHP的PDF修改框架/包
- 29. laravel - 基于droplist修改验证规则
- 30. 基于ACL在CakePHP中修改视图