我正在尝试创建一个具有平台相关部分的毛伊岛类库。
在 Android 类库的平台部分中,我添加了 Android 代码,但是当我编译时,它告诉我它找不到 Android 命名空间。我已经对照编译 Android 的主程序检查了 Nuget 包,结果是一样的。我已经卸载了主项目和类库,并相互检查了项目代码,发现它们几乎相同。我能发现编译 Android 的主项目之间的唯一区别是类库有一个额外的 net6.0 依赖项。
我在 VS 2022 Preview 3 中创建了一个“.NET MAUI 类库(预览版)”。确实,有些问题 - 尤其是 Intellisense。我没有找到抑制某些智能感知错误的方法,但我确实成功地构建了它。
注意:我确认大多数问题不会干扰项目的构建。事实上,问题可能只出在 Intellisense 上;我没有严格确定 Build 是否始终有效。
1) 可选: In .csproj
, 消除.net6.0;
从开始<TargetFrameworks>
。但如果您正在创建不包含特定于平台的代码的库,请不要删除。
说明:这仅影响 Intellisense;无需执行此操作即可构建。
通常,这在 .net6 类库中是需要的,但在 VS Intellisense 正确处理 Maui 类库及其特定于平台的代码之前,这往往会导致额外的 Intellisense 投诉。如果您对所有特定于平台的文件执行 (4),您可能可以离开.net6.0;
中,没有额外的智能感知错误。
2)在任何源文件上方,都有一个下拉菜单,上面写着YourLibName (net6.0-xxx)
。在处理 Android 代码时,选择YourLibName (net6.0-android)
.
说明:这仅影响 Intellisense;无需执行此操作即可构建。
3)在您的代码中,使用global::Android
代替Android
.
解释:智能感知似乎对其所处的上下文感到困惑。global::
确保它正在寻找“顶级”名称空间。
4)在类库中,智能感知无法识别平台文件夹 - 将所有代码包装在适当的位置#if ANDROID
, #if IOS
, etc.
说明:这仅影响 Intellisense;无需执行此操作即可构建。
这消除了在多个平台中定义不同的类的错误;例如class PlatformClass1
.
5) using Android;
, using Android.App
等 - 在“构建”时执行工作(在特定于平台的文件夹中) - 即使 Intellisense 抱怨。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)