Вы можете сделать это с небольшим количеством шаблонов 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
со следующим содержимым:
<#
ConfiguredAppTitle = "MyReleaseApp";
#><#@ include file="WMAppManifest-base.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
), и они будут автоматически выбраны.
Обратите внимание, что при тестировании, если вы устанавливаете приложение с одним именем (в эмуляторе или на телефоне), вам придется удалить его, чтобы увидеть изменение имени, отраженное в списке приложений.
Примечание для себя: необходимо написать об этом в блоге. (Это действительно мощный, но трудно понять, как это сделать в первый раз.)