Самый простой способ построить Dotnet SDK проект, требующий net461 на MacOS
У меня есть дотнет SDK .sln
(и build.proj
) с участием <TargetFrameworks>netcoreapp2.1;net461</TargetFrameworks>
, Он построен на Windows с использованием Visual Studio и dotnet build
, но я также хотел бы построить как можно больше других мест. Что мне нужно поместить в мой README.md и / или что я могу поместить в файлы проекта, чтобы он строился на Rider и / или на bash на Mac?
2 ответа
(В настоящее время) Самый простой способ создать TFM для.NET Framework при работе в MacOS или Linux с использованием CLI.NET Core- это использовать пакеты Nuget для пакета.NET Framework Targeting Pack от Microsoft (в настоящее время в режиме предварительного просмотра):
Эти пакеты позволяют создавать проекты.NET Framework на любом компьютере, на котором установлен хотя бы MSBuild или.NET Core SDK.
Следующие сценарии и преимущества включены для проектов.NET Framework:
- Выполните сборку, не требуя операций администратора для установки необходимых компонентов, таких как пакеты таргетинга для Visual Studio или.NET Framework.
- Сборка библиотек в любой операционной системе, поддерживаемой.NET Core SDK.
- Создавайте моно-проекты.
Вы можете включить метапакет https://www.nuget.org/packages/Microsoft.NETFramework.ReferenceAssemblies/; или используйте только конкретный пакет, который в вашем случае является https://www.nuget.org/packages/Microsoft.NETFramework.ReferenceAssemblies.net461/.
Добавьте пакет в *.csproj
или ваш Directory.Build.props
:
<Project>
<ItemGroup>
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0-preview.2" PrivateAssets="All" />
</ItemGroup>
</Project>
Обратите внимание PrivateAssets
Атрибут управляет тем, какие активы зависимостей будут использоваться, но не будут передаваться в родительский проект. Смотрите документы.
Для сборки через bash на ванильном Mac минимальные шаги:
- Установите Mono 6.0 (рекомендуется 5.2 для взаимодействия с VS Mac, меня это не волнует, и взаимодействие Mono 6.0 с ядром Dotnet лучше)
- Установите dotnet SDK 2.2 (не обязательно, но у меня это работает)
- Поместите это в файл Directory.build.props (открытый для улучшений, если у кого-то есть)
<Project> <PropertyGroup> <IsOSX Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))'== 'true'">true</IsOSX> </PropertyGroup> <PropertyGroup Condition=" '$(IsOSX)' == 'true' "> <FrameworkPathOverride>/Library/Frameworks/Mono.framework/Versions/Current/Commands/../lib/mono/4.6.1-api</FrameworkPathOverride> </PropertyGroup> </Project>
- Bash:
dotnet build SolutionFileName.sln
теперь должен работать - Установите Rider 2019.1 или новее
- Rider: должен просто работать (он должен автоматически определять msbuild 16.0 в разделе инструментов сборки)