2017-11-23 13 views
0

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; 
    } 
} 

感謝。

答えて

0

これは、完全な.NET FrameworkからXamarin.Androidプロジェクトを参照しているためです。 この完全な.NETフレームワークは、Xamarin.Androidと互換性がありません。次のいずれかを使用してください。

  1. Androidライブラリプロジェクトを作成します。

  2. ポータブルクラスライブラリプロジェクトを作成します。

  3. 共有プロジェクトを作成します。

関連する問題