我想發佈到我的應用程序的不同口味,並希望在手機上顯示的應用程序名稱中指出此。據我所知,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中修改視圖