【问题标题】:Windows Phone background agent Microsoft.Phone.dll submission issueWindows Phone后台代理Microsoft.Phone.dll提交问题
【发布时间】:2014-05-17 06:36:14
【问题描述】:

我正在尝试将应用程序提交到应用程序中心,而我正在使用后台代理来更新应用程序磁贴。后台代理需要使用 Microsoft.Phone.dll,但是当我提交应用程序时出现以下错误

2011:后台代理无法使用 Microsoft.Phone.Shell.ShellTile::Create,其中程序集 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

【问题讨论】:

  • 如果你删除 System.Windows 引用怎么办??
  • 我需要它,我的代理默认有这个 Deployment.Current.Dispatcher.BeginInvoke(delegate { Application.Current.UnhandledException += ScheduledAgent_UnhandledException; });
  • 我删除了 system.core、mscorelib 和 mscorelib.extensions,仍然是同样的错误
  • 这很神奇 :) 尝试卸载所有其他项目,让您的应用程序只包含 bg 代理。
  • 当我将它与另一个完全空的应用程序一起使用时,我没有收到任何错误!!

标签: c# windows-phone-7 windows-phone-7.1 background-agents


【解决方案1】:

您的代理对使用列出的 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

      }

}

【讨论】:

  • 谢谢安东。我用创建方法错误解决了这个问题,我找不到其他的解决方案。我根本不在任何地方使用 System.Widnows.Contols,我只使用 2 个字符串,一个用于标题,一个用于图块更新的图像链接,就是这样
  • 在您的代码中某处您有一个视频控件。播放\暂停逻辑。我说的对吗?
  • 不在我的代理项目中,无处可去。我只是创建新的 tiledata 并用 2 个字符串更新一个 tile。正在使用代理的 windows phone 项目有视频,我尝试删除它,但它与这些错误无关,仍然是相同的输出
  • 我这样做了,我也完全删除了 bin 中的输出以确保并重建它
  • 我也从头创建了一个新代理,并在其中添加了磁贴更新方法,仍然是同样的错误
【解决方案2】:

您不能使用计划任务中的某些 API。

更多信息请参见http://msdn.microsoft.com/en-us/library/hh202962(v=vs.92).aspx

【讨论】:

  • 是的,我知道,我不使用它们!我确实有一个用于瓷砖的板条箱,我将其移除,但其余的,甚至根本不存在于后台代理的项目中
  • 您还在后台代理项目中引用一些受限库吗?
  • nope",这就是为什么我很困惑,我不需要它们,我不使用它们。我一遍又一遍地搜索整个项目,没有参考,什么都没有
  • 它说程序集 Microsoft.Phone.dll 正在尝试使用它们,但我不知道它如何以及为什么尝试使用它们
  • 而且您没有在解决方案中引用其他可能使用它们的项目?
【解决方案3】:

我知道这是旧的,但我有一个 hacky 解决方案。您不能在后台代理中使用这些方法。如果您真的想这样做,请使用反射。但请确保您实际上并未从后台任务中调用任何该代码,因为这是不允许的。

例如,对于 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多