mono C # multi-target 4.7.1 дает мне ошибку netstandard 2.0 - PullRequest
0 голосов
/ 30 октября 2019

У меня есть приложение Sample C #, работающее под Windows, но не работающее на Mac OSX, которое я пытаюсь собрать с помощью 'сборки dotnet', но у меня возникает такая проблема:

Program.cs (18,21): ошибка CS0012: тип 'Enum' определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку 'netstandard, Version = 2.0.0.0, Culture = нейтральный, PublicKeyToken = cc7b13ffcd2ddd51'. [/Users/paolo/unity/industrial/Projects/PublisherSample/PublisherSample.csproj]

Я использую последнюю версию Mono 6.4 и ориентируюсь на версию .NETFramework 4.7.1

Я добавилEnableFrameworkPathOverride, чтобы найти каркас 4.7.1 в Mono, используя:

<PropertyGroup>
    <!-- When compiling .NET SDK 2.0 projects targeting .NET 4.x on Mono using 'dotnet build' you -->
    <!-- have to teach MSBuild where the Mono copy of the reference asssemblies is -->
    <IsMac>$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))</IsMac>
    <TargetIsMono Condition="$(IsMac)">true</TargetIsMono>
    <!-- Look in the standard install locations -->
    <BaseFrameworkPathOverrideForMono Condition="'$(BaseFrameworkPathOverrideForMono)' == '' AND '$(TargetIsMono)' == 'true' AND EXISTS('/Library/Frameworks/Mono.framework/Versions/Current/lib/mono')">/Library/Frameworks/Mono.framework/Versions/Current/lib/mono</BaseFrameworkPathOverrideForMono>
    <!-- If we found Mono reference assemblies, then use them -->
    <FrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != ''">$(BaseFrameworkPathOverrideForMono)/4.7.1-api</FrameworkPathOverride>
    <EnableFrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != ''">true</EnableFrameworkPathOverride>
  </PropertyGroup>
...