簡體   English   中英

Windows Phone后台代理Microsoft.Phone.dll提交問題

[英]Windows Phone background agent Microsoft.Phone.dll submission issue

我正在嘗試將應用提交到應用中心,whick正在使用背景代理更新應用磁貼。 后台代理要求使用Microsoft.Phone.dll,但是當我提交應用程序時,出現以下錯誤

2011年:后台代理無法使用Microsoft.Phone.Shell.ShellTile :: Create,TileAgent.dll嘗試使用該程序集。 更新文件,然后重試。

2011:后台代理無法使用Microsoft.Phone.dll試圖使用的程序集System.Windows.Controls.MediaElement :: Pause。 更新文件,然后重試。

2011:后台代理無法使用Microsoft.Phone.dll嘗試使用的程序集System.Windows.Controls.MediaElement :: Stop。 更新文件,然后重試。

2011:后台代理無法使用Microsoft.Phone.dll嘗試使用的程序集System.Windows.Controls.MediaElement :: Play。 更新文件,然后重試。

2011:后台代理無法使用Microsoft.Phone.dll試圖使用的程序集System.Windows.Controls.MediaElement :: set_Position。 更新文件,然后重試。

2011:后台代理無法使用Microsoft.Phone.dll嘗試使用的程序集System.Windows.Controls.MediaElement :: set_AutoPlay。 更新文件,然后重試。

2011:后台代理無法使用Microsoft.Phone.dll嘗試使用的程序集System.Windows.Controls.MediaElement。 更新文件,然后重試。

2011:后台代理無法使用System.Windows.Controls.MediaElement :: SetSource,Microsoft.Phone.dll嘗試使用該程序集。 更新文件,然后重試。

2011:后台代理無法使用Microsoft.Phone.dll嘗試使用的程序集System.Windows.Media.VideoBrush。 更新文件,然后重試。

2011:后台代理無法使用Microsoft.Phone.dll嘗試使用的程序集System.Windows.Controls.MediaElement ::。ctor。 更新文件,然后重試。

盡管我沒有使用任何這些程序集,也沒有在代理程序項目中的任何地方引用它們。 請幫忙!

編輯 :我刪除了create tile方法,現在此錯誤消失了。 其余的雖然保持不變,但是我沒有使用它們中的任何一個。在這個項目中,絕對沒有使用System.Widnows.Contols

編輯 :這是我在代理商項目中引用的列表

Microsoft.Phone
mscorelib
mscorelib.extensions
system
System.Core
System.Net
System.Windows
System.Xml

您不能使用計划任務中的某些API。

有關更多信息,請參見http://msdn.microsoft.com/zh-cn/library/hh202962(v=vs.92).aspx

您的代理對使用列出的API的代碼有一些引用。 例如:

您將創建一些新的圖塊。 Microsoft.Phone.Shell.ShellTile::Create 您的后台代理位於同一項目中,或者您的Bg代理使用代碼位於存在新項目的項目中。

一些插圖:

項目A

 //draws tile 
 public class TileBuilder() {}
 //creates new tile using TileBuilder() 
 public class NewTileManager(TileBuilder tBuilder) 
 {
 }

項目B

  public class ScheduledAgent : ScheduledTaskAgent
  {
      protected override void OnInvoke(ScheduledTask task)
      {
        //update data
        var tBuilder = new TileBuilder(); // oops, you use code from proj A. 
                                          // So, you have it
                                          // as a reference, And MS thinks that 
                                          // your bgAgent uses forbidden API

      }

}

我知道這已經很老了,但是我有一個棘手的解決方案。 您不能在后台代理中使用這些方法。 如果您確實想這樣做,請使用反射。 但是請確保您實際上沒有從后台任務中調用任何代碼,因為這是不允許的。

例如,對於ShellTile.Create:

 using System.Reflection;

   ...

      Uri NavUri = //your tile's navigation URI
      ShellTileData data = //your tile's data

      object[] parameters = { NavUri, data};
      Type[] types = new[] { typeof(Uri), typeof(ShellTileData)};
      Type type = typeof(ShellTile);
      MethodInfo info = type.GetMethod("Create", types);
      info.Invoke(null, parameters);

這將欺騙開發中心接受您的xap。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM