Ссылка на стандартный пакет Nuget в 4.7.2 Project Mono - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь сослаться на стандартный пакет Nuget .net в моем .Net 4.7.2 проекте в Mono.Сборка работает нормально в Windows, однако под Ubuntu 18.04 я получаю следующую ошибку при использовании атрибута из библиотеки.

  DataClassThing.cs(7, 10): [CS0012] The type 'Attribute' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.

Я следовал этой инструкции и установил следующий пакет nuget:

<package id="NETStandard.Library" version="2.0.3" targetFramework="net472" />

Я также пробовал:

<package id="NETStandard.Library" version="2.0.0" targetFramework="net472" />

Но ошибка не устранена.

Полный Nuget packages.configсгенерированный nuget выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.NETCore.Platforms" version="1.1.0" targetFramework="net472" />
  <package id="MyMagicLibrary" version="1.0.25" />
  <package id="NETStandard.Library" version="2.0.3" targetFramework="net472" />
</packages>

MyMagicLibrary взят из частного фида Nuget и предназначен только для .net standard 2.0.

Кажется, что библиотека Netstandard устанавливается правильно, добавляя цели сборкив мой файл csproj в следующем разделе:

<Import Project="..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets')" />
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105.The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NETStandard.Library.2.0.0\build\netstandard2.0\NETStandard.Library.targets'))" />
    <Error Condition="!Exists('..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets'))" />
  </Target>
  <Import Project="..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" />

Я проверил, и все файлы там, как и ожидалось.

Это моя моно версия:

Mono JIT compiler version 5.18.0.209 (tarball Sat Nov 24 08:46:26 UTC 2018)

Установлено из 5.18.0 Preview (5.18.0.209) (https://www.mono -project.com / download / preview / )

Обновление

Я попытался добавить

  <ItemGroup>
    <Reference Include="netstandard"/>
  </ItemGroup>

в мой файл csproj, что привело к следующей ошибке:

Target ResolveAssemblyReferences:
    Primary reference "netstandard".
    /usr/lib/mono/msbuild/15.0/bin/Microsoft.Common.CurrentVersion.targets(2127,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "netstandard". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
            For SearchPath "{TargetFrameworkDirectory}".
            Considered "/usr/lib/mono/xbuild-frameworks/.NETFramework/v4.7.2/netstandard.winmd", but it didn't exist.
            Considered "/usr/lib/mono/xbuild-frameworks/.NETFramework/v4.7.2/netstandard.dll", but it didn't exist.
            Considered "/usr/lib/mono/xbuild-frameworks/.NETFramework/v4.7.2/netstandard.exe", but it didn't exist.
            For SearchPath "{GAC}".
            Considered "netstandard", which was not found in the GAC.
            For SearchPath "{RawFileName}".
            Considered treating "netstandard" as a file name, but it didn't exist.
            For SearchPath "bin/Debug/".
            Considered "bin/Debug/netstandard.winmd", but it didn't exist.
            Considered "bin/Debug/netstandard.dll", but it didn't exist.
            Considered "bin/Debug/netstandard.exe", but it didn't exist.
...