2012-10-08 62 views
0

我正在嘗試嚮應用程序中心提交應用程序,whick正在使用後臺代理更新應用程序磁貼。後臺代理需要使用Microsoft.Phone.dll,但是當我提交的應用程序,我得到以下錯誤Windows Phone後臺代理Microsoft.Phone.dll提交問題

2011:後臺代理不能使用 Microsoft.Phone.Shell.ShellTile ::創建,其中TileAgent.dll 正在嘗試使用。更新您的文件,然後再試一次。

2011:後臺代理不能使用 System.Windows.Controls.MediaElement :: Pause,Microsoft.Phone.dll嘗試使用哪個程序集 。更新您的文件,然後再次嘗試 。

2011:後臺代理無法使用 System.Windows.Controls.MediaElement :: Stop,其中Microsoft.Phone.dll正在嘗試使用哪個程序集 。更新您的文件,然後再次嘗試 。

2011:後臺代理無法使用 System.Windows.Controls.MediaElement :: Play,其中Microsoft.Phone.dll試圖使用哪個程序集 。更新您的文件,然後再次嘗試 。

2011:後臺代理無法使用 System.Windows.Controls.MediaElement :: set_Position,其中Microsoft.Phone.dll試圖使用的程序集爲 。更新您的文件,然後再次嘗試 。

2011:後臺代理程序無法使用 System.Windows.Controls.MediaElement :: set_AutoPlay,其中的Microsoft.Phone.dll正在嘗試使用哪個程序集 。更新您的文件,然後再次嘗試 。

2011:後臺代理程序不能使用 System.Windows.Controls.MediaElement,其中Microsoft.Phone.dll試圖使用的程序集爲 。更新您的文件,然後再次嘗試 。

2011:後臺代理不能使用 System.Windows.Controls.MediaElement ::的SetSource,其裝配 Microsoft.Phone.dll嘗試使用。更新您的文件,然後再次嘗試 。

2011:後臺代理無法使用System.Windows.Media.VideoBrush, Microsoft.Phone.dll試圖使用哪個程序集。更新您的文件 ,然後重試。

2011:後臺代理不能使用 System.Windows.Controls.MediaElement ::。ctor,其中Microsoft.Phone.dll試圖使用的程序集爲 。更新您的文件,然後再次嘗試 。

儘管我沒有使用這些程序集中的任何一個,或者在代理程序的任何項目中引用它們。 請幫忙!

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

編輯 Contols:這裏是引用我在代理的項目

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

如果你刪除System.Windows引用? –

+0

我需要它,我默認情況下這在我的代理Deployment.Current.Dispatcher.BeginInvoke(代理 { Application.Current.UnhandledException + = ScheduledAgent_UnhandledException; }); – user970012

+0

我刪除了system.core,mscorelib和mscorelib.extensions,仍然是相同的錯誤 – user970012

回答

0

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

你有一些類創建新的瓷磚。 Microsoft.Phone.Shell.ShellTile::Create。你的後臺代理生活在同一個proj中,或者你的bg代理使用生活在你創建新tile的proj中的代碼。

一些例證:

凸出一個

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

凸出乙

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 

     } 

} 
+0

謝謝安東,我用create方法解決了問題錯誤,我無法找到剩餘的解決方案。我只是不使用System.Widnows.Contols任何地方,我只是使用2個字符串,一個用於標題和一個圖像鏈接的瓷磚更新,就是它 – user970012

+0

在你的代碼中的某個地方有一個視頻控制。播放\暫停邏輯。我是對嗎? –

+0

不在我的代理項目中,我只是創建新的tiledata並用2個字符串更新一個tile。一個項目,這是使用代理有視頻,我試圖刪除它,但它沒有與這些錯誤的聯繫,仍然是相同的輸出 – user970012

0

不能使用一些API從計劃任務列表。

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

+0

是的,我知道,我不使用它們!我確實有一個瓷磚的方法,我刪除了,但其餘的,根本不存在於後臺代理的項目 – user970012

+0

您是否仍然在您的後臺代理項目中引用一些受限制的庫? –

+0

nope「,這就是爲什麼我很困惑,我不需要它們,我不使用它們。我搜索整個項目一次又一次,沒有參考,沒有任何 – user970012

0

我知道這是舊的,但我有一個哈克的解決方案。您不能在後臺代理中使用這些方法。如果你真的想這樣做,請使用反射。但要確保你不會從後臺任務中調用任何代碼,因爲這是不允許的。

例如,對於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。