[英]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.