我正在开发一个在Visual Studio 2015上开发的Xamarin应用程序(Xamarin.Forms,但该应用程序仅在Android中可用)
我的porpouse将部署到我的测试平板电脑2个版本的相同App,一个是测试版本,一个是生产版本。
我正在尝试在平板电脑连接的Visual Studio上启动调试。
我明白如果我更改清单文件中的包属性,目标就会实现。
我手动尝试了,一切似乎都按预期工作,每次我更改它,我都会在平板电脑上收到不同版本的应用程序。
现在我想手动制作它。
我创建了2个新的build(build - >配置管理器)配置,每个版本的我要部署的应用程序
我在powershell中编写了一个脚本来更改清单文件中的属性。 使用脚本我甚至更改“应用程序android:label”,因此我可以在部署的应用程序上检查新名称。在powershell命令提示符上启动它可以很好地工作。
我在visual studio的项目属性的prebuild event命令中调用了这个脚本。
PowerShell -ExecutionPolicy Unrestricted -File "$(SolutionDir)Update-PackageName.ps1" $(ProjectDir) $(ConfigurationName)
脚本接收配置名称,因此包名称将根据配置而改变。
这样的事情:
param ([string] $ProjectDir, [string] $ConfigurationName)
$ManifestPath = $ProjectDir + "Properties\AndroidManifest.xml"
[xml] $xdoc = Get-Content $ManifestPath
$package = $xdoc.manifest.package
$appname = $xdoc.manifest.application.label
$package = $package.Replace("TESTING_APP", "")
$package = $package.Replace("RELEASE_APP", "")
$appname = "SOME_NAME"
If ($ConfigurationName -eq "TESTING_APP")
{
$package = $package + "TESTING_APP"
$appname = "SOME_NAME_TESTING"
}
If ($ConfigurationName -eq "RELEASE_APP")
{
$package = $package + "RELEASE_APP"
$appname = "SOME_NAME_RELEASE"
}
If ($package -ne $xdoc.manifest.package)
{
$xdoc.manifest.package = $package
$xdoc.manifest.application.label = $appname
$xdoc.Save($ManifestPath)
}
脚本被调用没有问题,当我启动调试器时,我看到清单正在按需要更改,新应用程序按预期部署。
手动更改清单文件的区别在于,如果使用prebuild event命令中调用的powershell脚本执行作业,我会看到平板电脑上的旧应用程序消失。
是否已删除? 它被改写了吗? 我缺少什么?