我在Visual Studio Community 2015中有一个Xamarin PCL解决方案。
我有兴趣为两个不同的客户部署Android和iOS的相同应用程序。它唯一会改变的是启动图像和应用程序图标。
我曾想过在我的git存储库中有不同的分支,每个分支都有一个客户。但我认为这不是一个合适的解决方案。
另外,我认为有不同的配置解决方案,例如,在iOS中:
Configuration: [Ad-Hoc customer 1] - Platform: iPhone
Configuration: [Ad-Hoc customer 2] - Platform: iPhone
然后更改每个配置的项目属性的参数。但是,如果我更改特定配置的参数,切换到其他配置,然后我回来第一个配置params,有第二个配置的参数。
如果我没错,我必须为每个版本指定不同的软件包名称,在其他情况下,Google Play和Apple Store将不接受我的应用。
在Xcode中,概念是目标/定位。
在Visual Studio 2015中实现我的目标的正确形式是什么?
答案 0 :(得分:1)
不幸的是,Visual Studio不支持此功能。
但还有第三种解决方案。您可以创建另一个项目并将所有(静态)文件添加为项目的链接。这样,您不必在配置或分支之间切换,只需选择项目即可。
要将文件添加为链接,您必须右键单击该文件夹 - >添加 - >现有文件 - >从原始项目中选择文件 - >在“添加”上单击箭头并选择“添加为链接”(或以某种方式类似)
如果你想通过配置来做,我建议你阅读question。
答案 1 :(得分:0)
我已经通过以下步骤实现了解决方案:
在项目的根结构中,我创建了一个PowerShell脚本(.ps1)并编写了这段代码:
param ([string] $ProjectDir, [string] $SolutionDir, [string] $SolutionName)
Write-Host "ProjectDir --> " $ProjectDir
Write-Host "SolutionDir -->" $SolutionDir
Write-Host "SolutionName --> " $SolutionName
$PathCustomerFileName = $SolutionDir + $SolutionName + "\" + $SolutionName + "\CustomerTarget.txt"
Write-Host "PathCustomerFileName --> " $PathCustomerFileName
$ConfigurationName = Get-Content $SolutionDir$SolutionName"\"$SolutionName"\CustomerTarget.txt"
$CorrectCustomerName = "CustomerA","CustomerB" -Contains $ConfigurationName
If ($ConfigurationName.length -gt 0 -And $CorrectCustomerName) {
$Origin = $ProjectDir + "\Customers\" + $ConfigurationName + ""
$Destination = $ProjectDir + "\Resources"
robocopy $Origin $Destination /S
} else {
Write-Host "[ERROR] Error copying customer resources. Check ShellScript params and " $PathCustomerFileName " content file."
}
它将文件从特定客户文件夹复制到“Resources”文件夹项目。