无法在 Rider 中使用 .NET Standard 2.0 Lib 加载 Xamarin Forms 项目

Posted

技术标签:

【中文标题】无法在 Rider 中使用 .NET Standard 2.0 Lib 加载 Xamarin Forms 项目【英文标题】:Failed to load Xamarin Forms project with .NET Standard 2.0 Lib in Rider 【发布时间】:2018-02-05 17:36:51 【问题描述】:

TL;DR; Rider 是否支持带有 .NET Standard 库 2.0 的 Xamarin Forms 项目?

我使用空白表单应用程序多平台向导在 Visual Studio 2017.3 (Windows) 中创建了一个小型 Xamarin 项目。 Microsoft 最近在 Windows 版本的 VS 中放弃了创建 PCL 的选项,仅提供 .NET Standard。所以我选择了那个。

现在我想直接使用 Rider 在 Mac 上尝试开发,这样我就不必运行 Windows VM(我真的很喜欢 Resharper,所以我在我的 Mac 上绑定到 Windows)

当我在 Mac OS 上的 Rider 中打开这个项目时,它会抛出一堆错误,并且看起来所有路径都搞砸了。另一方面,在 VS for Mac 中打开它可以正常工作。

然后,我使用 PCL 在 Mac 上的 VS 中创建了一个新的空白项目,Rider 毫无怨言地打开了它。所以我的问题: Rider 是否支持带有 .NET Standard 库 2.0 的 Xamarin Forms 项目?

如果它们受支持:我应该怎么做才能使其正常工作而不中断对 VS 的回退? 如果没有:是否有计划在不久的将来支持它?

我的一些错误:

加载失败:找不到导入的项目“/usr/local/share/dotnet/sdk/2.0.3/Xamarin/android/Xamarin.Android.CSharp.targets”。确认声明中的路径正确,并且该文件存在于磁盘上。 未找到 MSBuild 目标:确保已安装此解决方案中项目所需的所有 SDK,或在设置中指定不同的 MSBuild 版本。 未找到 Xamarin.Android SDK:Rider 无法在此计算机上找到 Xamarin SDK。不会加载基于 Xamarin 的项目。请安装 Xamarin SDK 或更改工具集 无法从程序集 /Users/kay/.nuget/packages/xamarin.forms/2.5.0.122203/build/netstandard1.0/Xamarin.Forms 加载“Xamarin.Forms.Build.Tasks.GetTasksAbi”任务.Build.Tasks.dll。无法加载文件或程序集“Microsoft.Build.Utilities.v4.0,版本=4.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a”。系统找不到指定的文件。

我想我可以开始手动修复路径等,但我害怕做一些我没有深入了解的事情。我曾经使用 Unity 游戏引擎多年,但我是 Xamarin 开发的新手。

【问题讨论】:

转到文件 |设置 |构建、执行、部署 |工具集和构建以及从单声道更改 MsBuild。我猜你在那个 msbuild 中安装了所有 Xamarin 目标。 但 Rider 默认使用 .net core msbuild(无目标)用于 .net 标准项目 @xtmq:太好了!选择 /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/msbuild/15.0/bin/MSBuild.dll 而不是 /usr/local/share/dotnet/sdk/ 2.0.3/MSBuild.dll 成功了,可以构建项目。起初我尝试在 Android 上部署时出现了一些错误。重启 Rider 后一切正常。请将您的评论放入答案中 不是问题 =) 此外,我们正在实施改进的 MsBuild 自动检测版本以避免将来出现此类问题...将于 2018.1 或 2018.2 发布 =) 请参阅 youtrack.jetbrains.com/issue/RIDER-7112 【参考方案1】:

转到文件 |设置 |构建、执行、部署 |工具集和构建以及从单声道更改 MsBuild。我猜你已经在那个 msbuild 中安装了所有 Xamarin 目标。

【讨论】:

【参考方案2】:

问题是由 Rider 选择了错误的 MSBuild 文件来使用造成的。 .NET Core SDK 安装的 MSBuild 版本未配置为使用 Xamarin SDK。

在 Rider 中转到文件 > 设置 > 构建、执行部署 > 工具集和构建 > 使用 MSBuild 版本。选择 位于 .NET Core SDK 路径中的 MSBuild.dll:

在 Windows 上将在 Microsoft Visual Studio 下在 MacOS 上appears to be under the Mono.framework。

进行此更改后,您必须完全重新启动 Rider,这一点很重要。进行更改后,Rider 将尝试进行重建并失败。让它看起来你的改变没有奏效。但似乎该设置在 Rider 完全重启后才会生效。

【讨论】:

选择 msbuild v15 解决了这个问题。是不是我们现在不能将 msbuild v16 用于 Xamarin 项目?

以上是关于无法在 Rider 中使用 .NET Standard 2.0 Lib 加载 Xamarin Forms 项目的主要内容,如果未能解决你的问题,请参考以下文章

Rider 无法检测 Ubuntu 上的 .NET 核心安装

无法使用 Rider 调试使用 docker 容器和 docker-compose 构建的 .net 核心应用程序。容器退出代码 139

Rider 无法在 Mac 上发布 .NET Web 应用程序

Mac版Rider加载编译.Net失败,Unity插件安装失败问题

Mac版Rider加载编译.Net失败,Unity插件安装失败问题

在 .net Rider IDE 中恢复解决方案的 nuget 包:无法下载包 `x` 对 GET `x` 的 HTTP 请求在 100000 毫秒后超时