问题标签 [xamarin-linker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
372 浏览

android - Xamarin (android) 链接器 - System.NullReferenceException

我在发布模式下的 Xamarin Forms 应用程序(适用于 Android)的大小为 39 Mb。我启用了“链接所有程序集”选项。我阅读了有关此选项的信息,并且知道这很困难。但大路从第一步开始。我有这个例外:

我在我的项目中添加了这个文件(Build Action to LinkDescription):

但我有同样的例外。我在我的 csproj 中添加了这个项目:

但我有同样的例外。有任何想法吗?

0 投票
2 回答
97 浏览

xamarin - 选择“链接 SDK 程序集”时,Xamarin.Android TextView 不会引发更改事件

我正在使用 MvvmCross 在 Xamarin 中开发一个项目,尝试使用链接器来减小应用程序大小以在 Android 和 iOS 上发布(无表单。)

在 Android 上,当我选择“仅链接 SDK 程序集”时,项目构建并运行,没有崩溃或错误消息。但是,EditText当它们的文本更改、它们的数据绑定没有得到更新以及它们的Changed事件处理程序没有被调用时,没有一个控件能够正确响应。

当我选择“不链接”时,一切正常。更新绑定并调用事件处理程序。

我查看了Xamarin Linker 文档,并且知道如何确保保留各种程序集、类型和方法。我的问题是我根本不知道需要保留什么,也不知道如何找出。我已经尝试过像bitdiff这样的工具,但没有成功。

谁能帮我弄清楚我需要保留什么?

0 投票
1 回答
280 浏览

visual-studio - MSBuild.exe 包含用于编译链接过程的 xamarin 构建工具?

在我的 PCL 项目中,我使用了对象代码的动态初始化。因此,对于 xamarin 链接过程,我使用了 LinkerSafe 属性和 Preserve 属性(在我的源代码中添加了这些属性类,因为我们没有 xamarin 依赖项)。

我已经在安装 xamarin 的机器中从我的 PCL 项目 MSBuild.exe 命令行生成了程序集,在链接过程中没有问题。在没有 xamarin 工具的机器中生成的程序集会在链接过程中引发错误。

我的问题是我们是否需要为正确的链接器处理程序集安装 xamarin 工具?

0 投票
1 回答
1199 浏览

android - Xamarin Android 链接无法访问文件

我有一个 Xamarin Android 项目,我正在尝试使用 Sdk 和 User Assembly 链接。

如果我将 Android 项目设置为仅 Sdk Assembly Linking,则 APK 会成功创建和部署并且可以正常工作。

但是,当我设置 Sdk 和用户程序集链接时,没有其他更改,在部署时出现以下错误。解决方案构建成功。

AppName.Core.dll是我的解决方案中的另一个库项目,它被设置为 NetStandard 2.0。

我查看了许多其他关于类似问题的错误报告和论坛帖子,但大多数似乎与 Visual Studio 15.5.1 的早期错误有关,该错误已被修复。

无论如何,我已经尝试了这些链接中建议的几乎所有解决方案,包括:

  • 关闭和重新打开 Visual Studio
  • 删除 /bin 和 /obj 文件夹
  • 以管理员身份打开 Visual Studio
  • 在 VS 关闭的情况下从命令提示符运行 MsBuild

以及上述的各种组合。

我的自定义 linker.xml包含我的库项目的异常:

在这一点上,我似乎已经用尽了所有可用的选项,并且离可行的解决方案还差得远。我们将不胜感激有关解决方案、变通办法或其他调试路径的建议。

我的 Android 选项配置:

安卓选项

版本信息:

  • Visual Studio 版本:15.5.6
  • Xamarin 表单版本:2.5.0.280555
  • Xamarin 版本:26.1.0.1
0 投票
2 回答
533 浏览

ios - Xamarin iOS 链接器导致 AutoMapper 问题

我正在开发一个使用 AutoMapper 的 Xamarin 项目。当链接设置为“仅链接框架 SDK”时,初始化地图时出现以下错误

System.ArgumentNullException:值不能为空。参数名称:方​​法

例外情况不多,调用堆栈也不例外

AutoMapper.Mappers.ConvertMapper.MapExpression
AutoMapper.Execution.TypeMapPlanBuilder.ObjectMapperExpression
AutoMapper.Execution.TypeMapPlanBuilder.MapExpression
AutoMapper.Mappers.NullableSourceMapper.MapExpression
AutoMapper.Execution.TypeMapPlanBuilder.ObjectMapperExpression
AutoMapper.Execution.TypeMapPlanBuilder.MapExpression
AutoMapper.Execution.TypeMapPlanBuilder.MapExpression
AutoMapper .Execution.TypeMapPlanBuilder.CreatePropertyMapFunc
AutoMapper.Execution.TypeMapPlanBuilder.CreatePropertyMapFunc
AutoMapper.Execution.TypeMapPlanBuilder.TryPropertyMap
AutoMapper.Execution.TypeMapPlanBuilder.CreateAssignmentFunc
AutoMapper.Execution.TypeMapPlanBuilder.CreateMapperLambda
AutoMapper.TypeMap.Seal AutoMapper.MapperConfiguration.Seal
AutoMapper.MapperConfiguration..ctor
AutoMapper.MapperConfiguration..ctor AutoMapper.Mapper.Initialize

最初的阅读表明链接器只是从我们正在使用的某个类中删除一些属性或确实方法。

但是,在注释掉大多数映射然后一次重新引入它们之后,我发现这个类当前导致了错误。

如果我注释掉该InPractice属性,则不会引发异常。这对我来说毫无意义。谁能解释为什么这可能是一个问题?

有没有更好的方法来诊断这些问题?

0 投票
0 回答
185 浏览

c# - Xamarin 仅链接 Sdk 程序集 - 使用 AssemblyName 与 AssemblyName.Class.Method

我有一个 DLL MyAssemblyOne.dll,它只包含一个带有静态方法的类:

到目前为止一切都很好,生成了程序集 MyAssemblyOne.dll。

现在我有另一个 DLL,MyAssemblyTwo.dll,它依赖于 MyAssemblyOne.dll,并像这样使用它:

现在,我创建了一个 Xamarin 项目,并将链接设置为Sdk Assemblies OnlyUse Shared Runtime禁用(基本上是发布模式),然后添加我的两个 DLL - MyAssemblyTwo.dll 和 MyAssemblyOne.dll。该应用程序构建正常,但是当我运行它时,我得到类似: cannot find MyAssemblyOne.dll.

请注意,如果 Linking 选项设置为None.

但是,如果我将 MyAssemblyOne 的 MyAssemblyTwo 用法更改为:

即使将链接设置为 ,一切正常Sdk Assemblies Only

链接器如何工作?为什么如果我有一个using声明一切都很好,但如果我直接在代码中使用程序集名称它会中断。

值得一提的是,MyAssemblyOneMyAsseblyTwo是 . netstandard20项目。

0 投票
1 回答
1308 浏览

c# - Xamarin iOS 链接器问题

我有一个应用程序,它有一个带有共享代码的 android 和 ios 项目。android 应用程序完美运行并使用 SDK Only 链接器。我还有一个链接器文件来强制链接器不删除使用的函数 - 这是一个相当大的文件,我也尝试添加一堆保留属性。在 iOS 项目中同样的情况,但是,做同样的事情是行不通的。它从 EF 中删除某些内容并引发此异常:

整个代码库在没有链接的情况下工作得很好。我添加了一堆 mtouch 参数来尝试跳过它,但这也不起作用。

我即将在 NuGet 存储库中添加每个 DLL,这将使链接器无用。这是 iOS 链接器的错误还是我在这里遗漏了什么?我已阅读文档https://docs.microsoft.com/en-us/xamarin/ios/deploy-test/linker?tabs=windows并在互联网上到处搜索,但没有任何结果。任何帮助表示赞赏。

谢谢,

0 投票
0 回答
234 浏览

c# - 在链接器进程 Xamarin.iOS 中显式包含程序集

我正在研究 Xamarin.Forms 项目,但我的 Xamarin.iOS 项目包含一些我没有在任何地方使用的程序集。我想从我的项目中排除这些库,而不是包含在我的 IPA 中。链接器设置为“不链接”,我不能使用“仅 SDK 程序集”,因为应用程序停止工作。我尝试在 mtouch 配置中使用“--linkskip=assemblyname”,但我猜它与我想要的相反。我希望所有程序集都包含在我的构建中,但希望排除特定程序集。

0 投票
2 回答
291 浏览

xamarin - Xamarin Android Entity Framework Core 链接器问题

我在我的一个 Xamarin Android 应用程序中使用了 Entity Framework Core。当我仅在链接器选项中使用 SDK 时,该应用程序可以正常工作。

但是,当我使用 SDK 和用户程序集添加链接器选项时,应用程序崩溃,因为链接器删除了几个与 Entity Framework Core 相关的必需类。

如果有什么我可以做的来保留课程,请告诉我。

注意:我已经尝试在一个虚拟类中引用 Entity Framework Core 类。

0 投票
1 回答
308 浏览

xamarin - Xamarin.Android 从链接中排除特定程序集

我将我的 xamarin.android 包更新到最新版本并使目标框架是 AndroidQ 但现在我无法在使用链接器属性“仅 SDK 程序集”时构建项目

如何从链接程序集中排除 monkeyCache.SqlLite

在此处输入图像描述