根据构建配置修改WMAppManifest.xml

Oli*_*old 11 silverlight visual-studio windows-phone-7

我想发布我的应用程序的不同风格,并希望在手机上显示的应用程序名称中指出这一点.据我所知,Silverlight Phone Apps的名称完全取决于WMAppManifest.xml.因此,我想基于我的构建配置在构建时修改应用程序标题.有什么建议?

Mat*_*cey 13

您可以通过一些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";
#>
Run Code Online (Sandbox Code Playgroud)

(视情况调整能力等.)

在与WMAppManifest-base.tt创建Debug.WMAppManifest.tt使用以下内容调用的文件相同的文件夹中:

<#
  ConfiguredAppTitle = "MyDebugApp";
#><#@ include file="WMAppManifest-base.tt" #>
Run Code Online (Sandbox Code Playgroud)

现在创建一个Release.WMAppManifest.tt使用以下内容调用的文件:

<#
  ConfiguredAppTitle = "MyReleaseApp";
#><#@ include file="WMAppManifest-base.tt" #>
Run Code Online (Sandbox Code Playgroud)

创建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
Run Code Online (Sandbox Code Playgroud)

在项目属性中添加此PRE-build命令:

"$(ProjectDir)\copyifnewer.bat" "$(ProjectDir)properties\$(ConfigurationName).WMAppManifest.xml" "$(ProjectDir)properties\WMAppManifest.xml"
Run Code Online (Sandbox Code Playgroud)

现在,您可以调整调试和发布文件中的值,以根据需要更改标题.

如果您有其他配置,只需创建适当命名的文件(内容与其相同debug.*.tt),它们将自动被选中.

请注意,在测试时,如果您使用一个名称安装应用程序(在模拟器或手机中),则必须将其卸载才能看到应用程序列表中反映的名称更改.

自我注意:必须博客这个.(这真的很强大,但很难弄清楚如何做第一次.)