如何在 Rider 中同时加载 5.0 和 4.7.2 项目?
How can I simultaneously load 5.0 and 4.7.2 projects in Rider?
我有一个包含 net5.0
和 v4.7.2
项目的 .NET 解决方案。它在 Windows 上按预期在 Visual Studio 中打开。但是当我在 Ubuntu 上的 Rider 中打开它时,我从一个或另一个框架中得到了装配错误。 (Ubuntu 20.04.2 LTS 上的 Rider 2021.1.3 从 Snap Store 安装。)
我已经根据 https://www.mono-project.com/download/stable/#download-lin-ubuntu
安装了最新的 Stable Mono
$ mono --version
Mono JIT compiler version 6.12.0.122 (tarball Mon Feb 22 17:33:28 UTC 2021)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: amd64
Disabled: none
Misc: softdebug
Interpreter: yes
LLVM: yes(610)
Suspend: hybrid
GC: sgen (concurrent by default)
我已经从 Snap 商店安装了最新的稳定版 .NET SDK。
$ dotnet --version
5.0.301
在 Rider 中,我可以在 MSBuild 15.0(来自 /usr/lib/mono)或 16.0(来自 /snap/dotnet-sdk)之间进行选择。此设置会影响解决方案中的所有项目。
如果我选择 15.0(单声道),那么 net5.0
项目会失败(请参阅下面的消息)并且 v4.7.2
可以正确加载。
[MSB3644] The reference assemblies for .NETFramework,Version=v5.0 were not found. To
resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version
or retarget your application. You can download .NET Framework Developer Packs
at https://aka.ms/msbuild/developerpacks at (1193:5)
如果我选择 16.0 (SDK),那么 net5.0
项目会正确加载,但 v4.7.2
会失败:
[MSB3644] The reference assemblies for .NETFramework,Version=v4.7.2 were not found.
To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework
version or retarget your application. You can download .NET Framework Developer Packs
at https://aka.ms/msbuild/developerpacks at (1216:5)
如何解决此问题,以便同一解决方案中的 net5.0
和 v4.7.2
项目在 Ubuntu 上的 Rider 中加载时不会出现引用错误?
您必须将参考程序集安装到以 net472
(或任何其他)完整框架为目标的 .NET 项目中。更具体地说,这个 NuGet 包:
https://www.nuget.org/packages/Microsoft.NETFramework.ReferenceAssemblies/
有关更多信息,您可以阅读一篇关于 .net 参考程序集的文章,例如这篇文章:
https://andrewlock.net/using-reference-assemblies-to-build-net-framework-libararies-on-linux-without-mono/
我有一个包含 net5.0
和 v4.7.2
项目的 .NET 解决方案。它在 Windows 上按预期在 Visual Studio 中打开。但是当我在 Ubuntu 上的 Rider 中打开它时,我从一个或另一个框架中得到了装配错误。 (Ubuntu 20.04.2 LTS 上的 Rider 2021.1.3 从 Snap Store 安装。)
我已经根据 https://www.mono-project.com/download/stable/#download-lin-ubuntu
安装了最新的 Stable Mono$ mono --version
Mono JIT compiler version 6.12.0.122 (tarball Mon Feb 22 17:33:28 UTC 2021)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: amd64
Disabled: none
Misc: softdebug
Interpreter: yes
LLVM: yes(610)
Suspend: hybrid
GC: sgen (concurrent by default)
我已经从 Snap 商店安装了最新的稳定版 .NET SDK。
$ dotnet --version
5.0.301
在 Rider 中,我可以在 MSBuild 15.0(来自 /usr/lib/mono)或 16.0(来自 /snap/dotnet-sdk)之间进行选择。此设置会影响解决方案中的所有项目。
如果我选择 15.0(单声道),那么 net5.0
项目会失败(请参阅下面的消息)并且 v4.7.2
可以正确加载。
[MSB3644] The reference assemblies for .NETFramework,Version=v5.0 were not found. To
resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version
or retarget your application. You can download .NET Framework Developer Packs
at https://aka.ms/msbuild/developerpacks at (1193:5)
如果我选择 16.0 (SDK),那么 net5.0
项目会正确加载,但 v4.7.2
会失败:
[MSB3644] The reference assemblies for .NETFramework,Version=v4.7.2 were not found.
To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework
version or retarget your application. You can download .NET Framework Developer Packs
at https://aka.ms/msbuild/developerpacks at (1216:5)
如何解决此问题,以便同一解决方案中的 net5.0
和 v4.7.2
项目在 Ubuntu 上的 Rider 中加载时不会出现引用错误?
您必须将参考程序集安装到以 net472
(或任何其他)完整框架为目标的 .NET 项目中。更具体地说,这个 NuGet 包:
https://www.nuget.org/packages/Microsoft.NETFramework.ReferenceAssemblies/
有关更多信息,您可以阅读一篇关于 .net 参考程序集的文章,例如这篇文章: https://andrewlock.net/using-reference-assemblies-to-build-net-framework-libararies-on-linux-without-mono/