Windows 8 App Store开发 - 库引用行为

时间:2013-01-03 20:52:41

标签: c# windows-8 microsoft-metro .net-4.5

我是Windows 8 App Store开发的新手,并且遇到了一些奇怪的事情。

如果我创建一个普通的.net库(签名库)并尝试将其添加到我的Windows应用商店应用程序,Visual Studio 2012就会呻吟我无法添加此项目。两个项目都在同一个解决方案中。

这个项目包含对System.Net程序集的引用,因为我使用了那里的一些类型。我知道System.Net不是完全支持的命名空间。 TcpClient,NetworkStream等都被删除了。我也知道Windows.Networking命名空间中的StreamSocket,DataReader和DataWriter是替代方案。

在我失去你之前,让我谈谈这一点。我不是从这个项目中添加已编译的程序集作为Windows应用程序的项目引用,而是在我的硬盘驱动器上浏览已编译的程序集并直接引用该程序集。

令我惊讶的是,这有效!这引出了以下问题:

  • 为什么?这对我来说没有意义。有人请解释一下。
  • 此外,如果我使用此库,Windows应用商店是否会拒绝我的应用程序? 自己回答第二个问题......答案是肯定的!如果引用了上述库,Windows认证应用程序不再将其识别为Windows应用商店应用程序。

1 个答案:

答案 0 :(得分:0)

有几种方法可以将程序集引用添加到项目中:

在同一解决方案中为项目添加程序集引用。 浏览硬盘驱动器上的某个组件。

在Visual Studio 2012中,如果向WinRT项目添加不符合要求的WinRT程序集引用,Visual Studio 2012将不允许它。

但是,如果通过浏览硬盘驱动器将相同的程序集添加到WinRT项目,则会成功引用程序集。仅当引用的程序集使用强键签名时才有效。我不确定这是产品中的缺陷还是故意的。

Microsoft通过认证通过Windows应用商店应用程序后,可以弥补这个缺陷(如果它实际上是一个)。认证失败,因为它识别出项目中引用了一个不适合Windows App Store产品的程序集。

总而言之,您不能在WinRT项目中引用WinRT程序集。这样做的缺点是您的应用程序将无法通过Windows App Store验证。这样做的好处是,如果您不开发Windows App Store产品,则可以重复使用已经完成的工作。