решено - Почему мой Nuget-lib недоступен в .NetStandard 2.0? - PullRequest
0 голосов
/ 06 октября 2019

Я создал Nuget "Uplink.NET" со следующим Nuspec:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/01/nuspec.xsd">
  <metadata>
    <id>uplink.NET</id>
    <version>1.3.1</version>
    <title>Connector to the storj-network</title>
    <authors>TopperDEL,Storj Labs Inc.</authors>
    <owners>TopperDEL,Storj Labs Inc.</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <projectUrl>https://github.com/TopperDEL/uplink.net</projectUrl>
    <iconUrl>https://storj.io/press-kit/Storj-symbol.png</iconUrl>
    <description>This library provides access to the secure and decentralised Storj-network. It allows you to:
- create and delete buckets
- upload and download files

It is - like Storj itself - open source and developed on GitHub.</description>
    <releaseNotes>Initial release</releaseNotes>
    <copyright>(c) 2019 TopperDEL, Storj Labs Inc.</copyright>
    <tags>storj tardigrade storage decentralised secure bucket file xamarin android</tags>
    <repository type="git" url="https://github.com/TopperDEL/uplink.net.git" />

    <contentFiles>
      <files include="uplink.NET\bin\release\netstandard2.0\storj_uplink.dll" buildAction="None" copyToOutput="true" flatten="true" />
    </contentFiles>
  </metadata>
  <files>
    <file src="uplink.NET.targets" target="build\uplink.NET.targets" />
    <file src="uplink.NET.Droid\bin\Release\uplink.NET.Droid.dll" target="lib\MonoAndroid7.0\uplink.NET.Droid.dll" />
    <file src="uplink.NET.Droid\bin\Release\uplink.NET.Droid.dll" target="lib\MonoAndroid7.1\uplink.NET.Droid.dll" />
    <file src="uplink.NET.Droid\bin\Release\uplink.NET.Droid.dll" target="lib\MonoAndroid8.0\uplink.NET.Droid.dll" />
    <file src="uplink.NET.Droid\bin\Release\uplink.NET.Droid.dll" target="lib\MonoAndroid8.1\uplink.NET.Droid.dll" />
    <file src="uplink.NET.Droid\bin\Release\uplink.NET.Droid.dll" target="lib\MonoAndroid9.0\uplink.NET.Droid.dll" />
    <file src="uplink.NET\bin\Release\netstandard2.0\uplink.NET.dll" target="lib\netstandard2.0\uplink.NET.dll" />
    <file src="uplink.NET\bin\Release\netstandard2.0\uplink.NET.dll" target="netstandard2.0\uplink.NET.dll" />
    <file src="uplink.NET\bin\Release\netstandard2.0\uplink.NET.dll" target="lib\uap10.0.16299\uplink.NET.dll" />
    <file src="uplink.NET\storj_uplink.dll" target="storj_uplink.dll" />
  </files>
</package>

Я могу добавить его в библиотеку классов NetStandard2.0, но он добавляется в виде PackageReference со следующимзаписи:

<PackageReference Include="uplink.NET" Version="1.3.1">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>

Теперь я не могу получить доступ к объектам в моей библиотеке. Но тот же Nuget работает с Xamarin.Android и UWP.

Может кто-нибудь помочь с этим?

1 Ответ

1 голос
/ 07 октября 2019

Да, когда пакет является зависимостью для разработки, как наши документы NuGet говорят :

С PackageReference (NuGet 4.8+), этот флаг также означает, что он исключитресурсы времени компиляции из компиляции.

A связанная страница дополнительно объясняет:

, когда для пакета developmentDependency задано значение true, затем установите для PrivateAssets значение All и ExcludeAssets. скомпилировать элемент PackageReference в проекте, в то время как:

  • Установка пакета через VS NuGet UI или PMC
  • Выполнение команды добавления пакета dotnet Перенос существующего проекта из packages.config в PackageReference

Несмотря на то, что developmentDependency имеет значение true, ни в коем случае не обрабатывайте его как обычную PackageReference, в то время как:

  • Добавление элемента PackageReference вручную в проект в проектдобавить пакет
  • Обновление существующего экземпляра VS с предыдущей версии до последней (которая начала поддерживать developmentDependency)
...