2014-10-11 93 views
5

我使用Xamarin开发iOS和Android应用程序。我创建了一个共同的项目,这对两个平台都很常见。 因为我使用数据库它的共同点,并把共享project.I需要加密数据库,所以需要在共享项目中添加本地sqlite库引用,以便我可以修改该代码。在Xamarin的共享项目中添加项目引用

我的问题是:我还没有找到任何方法在共享项目中添加其他项目/库的引用。

这是错误还是预期的行为?

任何解释赞赏。

谢谢。

+0

另外有趣的是,你不能自己创建一个。我希望使用一个交叉应用程序共享。我认为这就像是一个大的包装,像硬链接一样模拟unix;) – kenny 2014-10-11 18:47:27

+0

然后如何在共享项目中添加库引用?如果不是,那么它的用途是什么?只是为了共享代码? – vITs 2014-10-11 18:59:56

+1

您的共享项目可以访问正在使用共享项目的所有项目引用......并且共享项目只是高级文件链接,唯一的区别是您必须为所有3个项目链接文件一次(Android,iOS ,WP ...),否则你将不得不改变每个项目。注意,你可以在文件的左上角选择当前项目的共享文件... – 2014-10-12 07:34:45

回答

3

有没有“参考”从通常意义上的从共享项目添加项目引用

确实有一个共享项目比当前打开更多,但它不是,这是目前的设计,尽管在某些方面有所限制。

总之,共享项目没有生成输出。它是从其他项目引用共享项目(s)来生成可编译的输出 - 基于您可能已经指定的任何条件编译符号。

为了让你添加你需要使用的NuGet以包添加到您的解决方案源码库引用。然后

这些的NuGet包也将会安装和创建适合于各指定平台的特定平台的库引用。

如果你把你的平台,具体项目看,你会看到,当您添加的NuGet包,并将其安装到适当的包库输出这些项目的参考TreeView节点扩大。

然后,您可以在代码的共享项目对那些在自己的项目中引用这些的NuGet包。

更新1: -

如果您已经从的NuGet添加程序包,大多数事情应该行了完美一般来说,除非有任何的平台包括具体的东西。

如果存在特定于特定平台的功能, 对于被只直接添加到特定平台的项目一个图书馆,那么你可以使用条件#如果语句在共享项目访问这些特定于平台的差异。

更新2: -

实施例: -

1)你有共享项目引用此的Android的iOS的WindowsPhone平台特定的项目共享项目

2)创建另一个新的WindowsPhone类库项目

3)下面的类添加到它: -

public class MyWindowsPhoneClass1 
{ 
    public string SayHello() 
    { 
     return "Hello"; 
    } 
} 

4)在您的的WindowsPhone平台具体项目,添加参考(在这种情况下,这将是一个解决方案参考,因为它是同一解决方案的一部分)到新的WindowsPhone类库项目您在步骤2中创建

5)在共享项目输入下面的代码到一些功能: -

PhoneClassLibrary1.MyWindowsPhoneClass1 o; 
o = new PhoneClassLibrary1.MyWindowsPhoneClass1(); 
string strResponse = o.SayHello(); 

和编译。

你会发现你会得到编译错误的的iOS的Android,为PhoneClassLibrary1找不到。

但是....

如果您现在更改代码: -

#if WINDOWS_PHONE 
    PhoneClassLibrary1.MyWindowsPhoneClass1 o; 
    o = new PhoneClassLibrary1.MyWindowsPhoneClass1(); 
    string strResponse = o.SayHello(); 
#endif 

你会看到你的项目现在编译上ALL 3平台,由于使用的条件#if语句

+0

但是如何访问共享项目中的库,这是在平台特定的项目中引用的。没有参考我们如何才能在普通的地方编码? – vITs 2014-10-12 05:20:22

+0

我知道关于特定于平台的编译,但是我可以在共享项目中使用这些库的api而没有任何参考? – vITs 2014-10-12 06:53:14

+0

我已经更新了我的答案,请参阅*更新2 *,并举例说明。不会将参考添加到共享项目中。 – Pete 2014-10-12 07:06:12

0

参考和组件不支持共享项目。因此,如果您没有平台特定的项目,则共享项目是没有用的,因为您将无法为应用程序抽象任何所需的引用和/或组件。

A 共享项目取决于您在任何其他特定于平台的项目上引用它,因此您将能够使用此平台特定项目使用的所有引用和组件。

要引用共享项目在任何特定平台的应用程序,右击引用文件夹的应用程序,并选择编辑引用...,选择该选项卡项目和检查的框中输入您的共享项目。之后,您可以使用该应用程序的任何参考共享项目

0

在Xamarin中没有添加对共享项目的引用的概念。

共享项目只是一个集中的项目,用于在多个项目(Android和iOS项目)之间共享代码库(如Model和ViewModel)。

解决方案:

添加引用到Android/iOS的项目,它会自动从共享项目访问。