我使用Xamarin开发iOS和Android应用程序。我创建了一个共同的项目,这对两个平台都很常见。 因为我使用数据库它的共同点,并把共享project.I需要加密数据库,所以需要在共享项目中添加本地sqlite库引用,以便我可以修改该代码。在Xamarin的共享项目中添加项目引用
我的问题是:我还没有找到任何方法在共享项目中添加其他项目/库的引用。
这是错误还是预期的行为?
任何解释赞赏。
谢谢。
我使用Xamarin开发iOS和Android应用程序。我创建了一个共同的项目,这对两个平台都很常见。 因为我使用数据库它的共同点,并把共享project.I需要加密数据库,所以需要在共享项目中添加本地sqlite库引用,以便我可以修改该代码。在Xamarin的共享项目中添加项目引用
我的问题是:我还没有找到任何方法在共享项目中添加其他项目/库的引用。
这是错误还是预期的行为?
任何解释赞赏。
谢谢。
有没有“参考”从通常意义上的从共享项目添加项目引用。
确实有一个共享项目比当前打开更多,但它不是,这是目前的设计,尽管在某些方面有所限制。
总之,共享项目没有生成输出。它是从其他项目引用共享项目(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语句。
参考和组件不支持共享项目。因此,如果您没有平台特定的项目,则共享项目是没有用的,因为您将无法为应用程序抽象任何所需的引用和/或组件。
A 共享项目取决于您在任何其他特定于平台的项目上引用它,因此您将能够使用此平台特定项目使用的所有引用和组件。
要引用共享项目在任何特定平台的应用程序,右击引用文件夹的应用程序,并选择编辑引用...,选择该选项卡项目和检查的框中输入您的共享项目。之后,您可以使用该应用程序的任何参考共享项目。
在Xamarin中没有添加对共享项目的引用的概念。
共享项目只是一个集中的项目,用于在多个项目(Android和iOS项目)之间共享代码库(如Model和ViewModel)。
解决方案:
添加引用到Android/iOS的项目,它会自动从共享项目访问。
另外有趣的是,你不能自己创建一个。我希望使用一个交叉应用程序共享。我认为这就像是一个大的包装,像硬链接一样模拟unix;) – kenny 2014-10-11 18:47:27
然后如何在共享项目中添加库引用?如果不是,那么它的用途是什么?只是为了共享代码? – vITs 2014-10-11 18:59:56
您的共享项目可以访问正在使用共享项目的所有项目引用......并且共享项目只是高级文件链接,唯一的区别是您必须为所有3个项目链接文件一次(Android,iOS ,WP ...),否则你将不得不改变每个项目。注意,你可以在文件的左上角选择当前项目的共享文件... – 2014-10-12 07:34:45