Visual Studio内のXamarin.Androidプロジェクト内のAndroid.Manifestファイルへのビルド前の変換を実装しようとしています - 目的は単にアプリケーションのbundleIDを変更することです私がデバッグ版をリリースするのかリリース版をビルドするのか。Visual Studio(Xamarin)からのコンフィグレーション変換
Microsoft.Buildを参照し、BuildTaskという名前の新しいクラスを追加し、私のXamarin.AndroidプロジェクトでDLLを参照して、私のソリューションに新しい.netFrameworkプロジェクトを追加しました。
私はXAMarin.Androidプロジェクトの.csprojファイルの最下部、つまり終了タグのすぐ上にUsingTaskを追加しようとしています。これは正しいと思われます。
UsingTaskを追加する前に、Xamarin.Androidプロジェクトがビルドされていることを確認したかったのですが、残念ながらXamarin.Androidプロジェクトの参照が見つからないというエラーが表示され、System.Collections、しかし、エラーが消える2番目の私は私の新しいBuildTask.DLLへの参照を削除
これまで私はウサギの穴を下っている可能性がありますので、私はこれをやったことがない...任意の助言を持っている場合、それは大きくなるだろう感謝。
ここに参照のための私のBuildTaskクラスです:
using System;
using Microsoft.Build.Utilities;
using Microsoft.Build.Framework;
using System.Xml;
public class BuildTask : Task
{
private const string AndroidNamespace = "http://schemas.android.com/apk/res/android";
[Required]
public string PackageName { get; set; }
[Required]
public string ApplicationLabel { get; set; }
[Required]
public string ManifestFilename { get; set; }
public string Debuggable { get; set; }
public override bool Execute()
{
var xml = new XmlDocument();
xml.Load(ManifestFilename);
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xml.NameTable);
nsmgr.AddNamespace("android", AndroidNamespace);
if (xml.DocumentElement != null)
{
xml.DocumentElement.SetAttribute("package", PackageName);
var appNode = xml.DocumentElement.SelectSingleNode("/manifest/application", nsmgr);
if (appNode != null && appNode.Attributes != null)
{
var labelAttribute = appNode.Attributes["label", AndroidNamespace];
if (labelAttribute != null)
{
labelAttribute.Value = ApplicationLabel;
}
var debuggableAttribute = appNode.Attributes["debuggable", AndroidNamespace];
if (debuggableAttribute != null)
{
debuggableAttribute.Value = Debuggable;
}
xml.Save(ManifestFilename);
return true;
}
}
return false;
}
}
感謝。