在 Xamarin 解决方案中引用 .Net Standard 项目时,项目中的所有代码是否都编译到应用程序中
When referencing a .Net Standard project within a Xamarin solution, does all the code from the project get compiled into the app
如果这听起来像是一个愚蠢的问题,我们深表歉意。我对幕后情况 linked/bundled/assembled 不是很有经验。
在开始之前,我想说我已经尝试阅读文档(例如 https://docs.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/code-sharing)来找到答案,但无法找到答案。
如果我有一个 Xamarin.Forms 解决方案并且我引用了一个 .Net Standard 项目:
问题 1: 这个项目的所有代码是否都被编译并包含到应用程序中以便以后可以反汇编,或者它只是来自 [=40= 的代码]是不是我实际使用了它?
再详细一点:
例如,我可能有一个 School
class 期望 IStudent
(通过 DI 注入),以及一个 Student
class 实现 IStudent
.这两个都存在于我在 Xamarin.Forms 项目中引用的 .Net Standard 项目中。但是,如果我只实际使用 Student
class(通过在我的 IoC 容器中使用类型 IStudent
注册它),来自 School
的代码是否会包含在也构建了应用程序?
问题 2: 如果确实包含项目中的所有代码,是否有办法通过一些配置设置强制指定哪些 class 到 include/exclude 、属性、第 3 方库或其他内容?
据我所知,NETStandard 项目中的所有内容都已编译并随应用程序一起发布。
如果你想从编译的程序集中删除未使用的代码,你必须使用 linker。
要 link 一切,你必须 select "Sdk and User Assemblies".
linker 试图不剥离您正在使用的方法和字段,但通常过于激进(例如,仅通过反射引用的方法将被剥离)。
幸运的是,您可以 fine-tune linker 行为并使其发挥作用的方法很少。一些 link 详细说明:
iOS 和 Android
中的链接器
https://docs.microsoft.com/en-us/xamarin/ios/deploy-test/linker
https://docs.microsoft.com/en-us/xamarin/android/deploy-test/linker
关于 linker 配置的官方文档:
https://docs.microsoft.com/en-us/xamarin/cross-platform/deploy-test/linker
如果这听起来像是一个愚蠢的问题,我们深表歉意。我对幕后情况 linked/bundled/assembled 不是很有经验。
在开始之前,我想说我已经尝试阅读文档(例如 https://docs.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/code-sharing)来找到答案,但无法找到答案。
如果我有一个 Xamarin.Forms 解决方案并且我引用了一个 .Net Standard 项目:
问题 1: 这个项目的所有代码是否都被编译并包含到应用程序中以便以后可以反汇编,或者它只是来自 [=40= 的代码]是不是我实际使用了它?
再详细一点:
例如,我可能有一个 School
class 期望 IStudent
(通过 DI 注入),以及一个 Student
class 实现 IStudent
.这两个都存在于我在 Xamarin.Forms 项目中引用的 .Net Standard 项目中。但是,如果我只实际使用 Student
class(通过在我的 IoC 容器中使用类型 IStudent
注册它),来自 School
的代码是否会包含在也构建了应用程序?
问题 2: 如果确实包含项目中的所有代码,是否有办法通过一些配置设置强制指定哪些 class 到 include/exclude 、属性、第 3 方库或其他内容?
据我所知,NETStandard 项目中的所有内容都已编译并随应用程序一起发布。
如果你想从编译的程序集中删除未使用的代码,你必须使用 linker。 要 link 一切,你必须 select "Sdk and User Assemblies".
linker 试图不剥离您正在使用的方法和字段,但通常过于激进(例如,仅通过反射引用的方法将被剥离)。
幸运的是,您可以 fine-tune linker 行为并使其发挥作用的方法很少。一些 link 详细说明:
iOS 和 Android
中的链接器https://docs.microsoft.com/en-us/xamarin/ios/deploy-test/linker
https://docs.microsoft.com/en-us/xamarin/android/deploy-test/linker
关于 linker 配置的官方文档:
https://docs.microsoft.com/en-us/xamarin/cross-platform/deploy-test/linker