2010-09-22 102 views
3

我有一个简单的Silverlight应用程序,我想在Windows Phone 7上运行,几乎完全一样。我创建了一个新的Windows Phone 7项目,当我参考Silverlight应用程序时,我收到一条警告:“添加对Silverlight项目的引用可能无法正常工作,您想继续吗?”。是否有可能在Silverlight Web应用程序和Windows Phone 7应用程序之间共享代码

如果我仍然继续并尝试运行,WP7项目永远不会启动,有时我会得到“AG_E_PARSER_BAD_TYPE错误”,它指向xaml中的行,我使用了Silverlight项目中的控件。

这两个项目之间的代码约99%相同。有没有其他的方式来重用代码,然后我正在尝试?或者我怎样才能使这个工作?

回答

1

实现此目的的典型方法是使用像MVVM这样的模式,它允许您定义通用模型和视图模型层(可能在单独的项目中)定义引用该通用项目的不同视图层。你只会分享大部分代码,而不是全部,所以你至少在某个时候需要创建设备/前端特定的逻辑和布局。

+0

这并不能避免这个问题,因为通用项目要么必须是Silverlight项目(不适用于wp7)或wp7项目(并且不适用于Silverlight)。 – liserdarts 2010-09-22 20:34:48

+0

虽然你仍然可以这样做,但Silverlight for WP7基于SL3,所以除非在公共库中有特定于桌面的代码,否则你的所有好的 – Mark 2010-09-23 11:29:37

+1

请参见:http://social.msdn.microsoft.com/Forums/en -US/windowsphone7series /线程/ 79858a29-4db0-460d-9a75-3630211a28fb/ – Mark 2010-09-23 11:30:25

4

我对这两个平台之间的区别并不熟悉,但是您可以将代码文件链接到不同的项目而不重复它们。添加现有项目,然后点击“添加”或“确定”按钮旁边的向下箭头。选择链接。

+2

或者,您可以使用Pattern&Practices ProjectLinker链接两个项目:http://msdn.microsoft.com/en-us/library/ff921108%28PandP.20%29.aspx – 2010-09-22 10:13:13

+0

+1 - cool,didn不知道那 – stombeur 2010-09-22 11:53:04

+0

这并没有发生在我身上,但我想它可以工作。但是我必须对每个依赖项都这样做,而且我没有所有这些源代码。 – liserdarts 2010-09-23 01:58:50

1

与其向您的WP7应用添加Silverlight [大概是类库]项目,请尝试创建WP7类库,然后链接Silverlight库中的文件。您仍然只有每个文件的一个副本,但是您的所有库都将为其所运行的平台生成相应的应用程序。

这也可以帮助您找出问题的原因。错误AG_E_PARSER_BAD_TYPE建议您在Silverlight项目中的XAML中有一个类型,该类型在手机上不受支持。

相关问题