在物理 iPhone 上构建和部署适用于 iOS 的 Xamarin Forms 应用程序时,我遇到了一个令人困惑的问题。该应用程序在 Android 上成功构建和部署,并且也可以在 iOS 模拟器上运行。但是,当我将链接器设置为“Link All”时,我遇到了与 AutoFac 相关的 NoConstructorFoundException。
如果我将链接器切换到“不链接”,异常就会消失,但构建过程会变得无限,并且我无法在物理 iPhone 上部署应用程序。
总结一下:
Android:运行良好。 iOS 模拟器:与“不链接”配合良好。 iOS 实体 iPhone: “链接全部”:NoConstructorFoundException 与 AutoFac。 “不链接”:无限构建,无法部署。 我已经验证我的 AutoFac 注册是正确的,并且依赖项没有问题。
我正在寻求有关如何解决此问题并在链接器设置为“链接全部”的情况下在物理 iPhone 上成功部署应用程序的指导。
任何帮助或见解将不胜感激。预先感谢您!
输出如下:
/Users/mateusz/shftrun/SHFTRUN/SHFTRUN/SHFTRUN.iOS/obj/iPhone/Debug/device-builds/iphone13.2-16.1.2/mtouch-cache/registrar.m(35506,17): warning G3E9910A3: auto property synthesis will not synthesize property 'extrapolate' declared in protocol 'CIPhotoEffect' [-Wobjc-protocol-property-synthesis]
@implementation CoreImage_CIPhotoEffect {
^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.0.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CIFilterBuiltins.h:417:30: note: property declared here
@property (nonatomic) bool extrapolate NS_AVAILABLE(14_0, 17_0);
^
/Users/mateusz/shftrun/SHFTRUN/SHFTRUN/SHFTRUN.iOS/obj/iPhone/Debug/device-builds/iphone13.2-16.1.2/mtouch-cache/registrar.m:35583:1: note: add a '@synthesize' directive
@end
^
1 warning generated.
问题解决了,问题是Apple不允许选择“不链接”或“仅链接SDK”,但是当选择“链接全部”时,Autofac无法访问其他项目,所以只需对 AutoFac 中使用的所有项目使用 --linkskip :D