如何使用Xamarin在Visual Studio中创建Android应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Xamarin在Visual Studio中创建Android应用相关的知识,希望对你有一定的参考价值。

参考技术A VS2015安装不多说。
其实Xamarin 和微软感觉并不是什么好基友,
Xamarin以前一直像个可怜的娃,以插件的形式寄生于VS中。现在只不过形势稍微好点了,VS2015 在明显的地方给了Xamarin一个坑,有点像那啥终于转正的感觉。相信这个坑会给Xamarin 带来不少的广告效应。

如何使用 Visual Studio for Mac 在 Xamarin.Forms 中实现多目标?

【中文标题】如何使用 Visual Studio for Mac 在 Xamarin.Forms 中实现多目标?【英文标题】:How to multitarget in Xamarin.Forms with Visual Studio for Mac? 【发布时间】:2019-07-23 23:37:14 【问题描述】:

我开始创建一个 .NET Standard Library 并打算创建一个 NuGet - 但后来发现我还需要特定于平台的功能。

所以,我发现了this 堆栈溢出问题——这表明我可以改用Multiplatform Librarytemplate。但是在这里我遇到了problem with DependencyService - 和Custom Renderer 的问题 - 实际上意味着非平台特定的代码无法与库中的特定平台代码进行通信。

我还尝试编辑 csproj 文件,例如:A、B、C。并通过使用以下 csproj:

<Project Sdk="MSBuild.Sdk.Extras/2.0.29">
  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;Xamarin.ios10</TargetFrameworks>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Xamarin.Forms" Version="4.1.0.581479" />
  </ItemGroup>
</Project>

...生成以下解决方案:

但在 Class1 中,Xamarin.iOSXamarin.Forms.Platform.iOS 可以在 Visual Studio for Mac 中访问。我最近检查并可以看到它在 Windows 上的 Visual Studio 中工作 - 使用相同的 csproj。

有没有办法在Visual Studio for Mac中进行多目标?


编辑 1: 我在 GitHub 上的 MSBuild.Sdk.Extras 上找到了一个 issue,指向了这个 post。似乎可以安装某个扩展名为DotNetCoreSupportAnyTargetFramework.DotNetCoreSupportAnyTargetFramework_1.0。但它不会在 VSfM 8.1.5 中正确安装:

在较旧的 VSfM 中试用它我无法打开项目或创建新项目 - 所以我无法测试扩展是否有效。它可能与以下错误消息有关:

在打开旧的 VSfM 时显示。


编辑 2: 更改目标框架的顺序后 - 将 Xamarin.ios10 放在首位 - Xamarin.iOS 和 Xamarin.Forms.Platform.iOS 变得可访问 - 正如 Matt Ward 所述.

但是,我无法将 NetStandard 库的引用添加到 Xamarin.Forms 项目以实际测试该库:

然后切换回首先放置 netstandard:

Projects/MyStandardLibrary/MyStandardLibrary/MyButtonRender.cs(12,12):错误 CS0246:找不到类型或命名空间名称“ExportRendererAttribute”(您是否缺少 using 指令或程序集引用?) (CS0246) ( MyStandardLibrary) 等。

【问题讨论】:

您可以通过右键单击解决方案尝试unloadreload 吗? 没有重新加载解决方案的选项。但我可以卸载 - 加载项目。它没有帮助。 But in Class1 the Xamarin.iOS nor Xamarin.Forms.Platform.iOS can be accessed in Visual Studio for Mac 是什么意思?通过访问,您是在谈论在文本编辑器中选择该框架吗?这还不支持。唯一的解决方法是编辑 .csproj 并更改目标框架的顺序。目前只有第一个在文本编辑器中使用。 希望 Visual Studio for Mac 8.3 中包含文本编辑器中的多目标支持 - docs.microsoft.com/en-us/visualstudio/productinfo/… 多平台库项目是一种创建 NuGet 包的方法。多平台库解决方案中的每个项目都有一个目标框架。它们本身不是多目标框架项目。 【参考方案1】:

Visual Studio for Mac 的当前版本 v8.2 不支持多目标。

根据Visual Studio for Mac Roadmap,Visual Studio for Mac v8.3 将提供多目标支持:

https://docs.microsoft.com/visualstudio/productinfo/mac-roadmap#2019-q3-july-september

编辑:您可以在此处关注团队添加多目标支持的进度:https://github.com/mono/monodevelop/pull/7848

【讨论】:

我发现它有点混乱,因为有一个模板:docs.microsoft.com/en-us/xamarin/cross-platform/… 据说似乎可以做到这一点。但正如我在问题中所说,它似乎无法正常运行。 @lolelo Goo catch - 看起来模板添加的有点过早。在答案中,我添加了一个指向 PR 的链接以支持多目标。看起来团队已经接近了!

以上是关于如何使用Xamarin在Visual Studio中创建Android应用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Xamarin在Visual Studio中创建Android应用

使用 xamarin 和 Visual Studio 时如何优化每个 ABI 的 apk?

如何在 Visual Studio 2017 中执行 Xamarin.uwp

如何使用 Visual Studio for Mac 在 Xamarin.Forms 中实现多目标?

如何在使用 Xamarin for Visual Studio 的真实 Android 设备上进行调试?

从 Visual Studio 使用 Xamarin 创建 Mac 应用