无法在 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 毫秒后超时