Ни PackageIcon, ни PackageIconUrl не работают в сборке dotnet - PullRequest
0 голосов
/ 10 октября 2019

Я использую Visual Studio 2017. У меня есть проект, для которого я хотел бы создать нюгет с иконкой. Если я использую

...
<PackageIconUrl>http://blabla/icon.png</PackageIconUrl>

, я получаю следующую ошибку:

error NU5048: The 'PackageIconUrl'/'iconUrl' element is deprecated. Consider using the 
'PackageIcon'/'icon' element instead. Learn more at https://aka.ms/deprecateIconUrl 
[D:\myproject.csproj]

Хорошо, поэтому я изменяю свой проект на что-то вроде:

...
    <PackageIcon>core.png</PackageIcon>
...
    <Content Include="..\Shared\core.png" Link="core.png" Pack="true" PackagePath="\" >
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>

Когда ясоздать свой проект сейчас (dotnet build Myproject.csproj) Я не получаю никаких ошибок компиляции. Однако, когда я хочу просмотреть сгенерированный nupkg в «Исследователе пакетов Nuget». Я получаю сообщение об ошибке:

The element 'metadata' in namespace 'http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd' 
has invalid child elment 'icon' in namespace 'http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd'.
List of possible elements expected : 'contentFiles, desription, licenseUrl, projectUrl, language, 
releaseNotes, frameworkAssemblies, summary, iconUrl, packageTypes, dependencies, copyright, 
developmentDependency, repositoru, tags, references, title, serviceable' in namespace 
'http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd'.

(так что кажется, что сгенерированный встроенный nuspec имеет неправильное пространство имен xml - я понятия не имею, как заставить его генерировать новое пространство имен) Это Catch-22. Таким образом, кажется, что единственный вариант - оставить иконку вне.

(у меня также есть Visual Studio 2019 и недавно установленный .net core 3.0.100 SDK)

Ответы [ 2 ]

3 голосов
/ 10 октября 2019

Переход от <iconUrl> / <PackageIconUrl> к <icon> / <PackageIcon> является довольно новым. Хотя nuget.org поддерживает синтаксический анализ пакетов, которые используют <icon>, а не <iconUrl>, некоторые другие серверы пакетов еще не делают.

Похоже, вы просто просматриваете каталог с помощью NuGet Package Explorer, поэтомувозможно, причина в том, что он еще не понимает <icon>.

Хотя <iconUrl> устарело, я обнаружил, что он все еще работает на nuget.org, поэтому вы должны иметь возможность продолжать его использоватьпока остальная часть инструмента не догонит. В качестве альтернативы, если вы не на самом деле заботитесь о просмотре пакетов, хранящихся в локальном каталоге, и просто заботитесь о nuget.org, то вы можете начать использовать <icon>.

Возможно, вы даже сможетеиспользовать оба - я не проверял.

0 голосов
/ 11 октября 2019

По крайней мере, я думаю, что сейчас вы можете свободно использовать PackageIconUrl, как упоминалось выше в кантоне7, этот шаг довольно новый. Вы можете рассматривать это как доброе напоминание.

Для последней версии VS2019 версии 16.3.3 его шаблон проекта по-прежнему поддерживает PackageIconUrl по умолчанию. Для .net core и .net standard проекта библиотеки классов, если мы Right-click project=>Package tab, мы видим:

enter image description here

И это эквивалентно <PackageIconUrl>http://xxx/icon.png</PackageIconUrl>в xx.csproj, так что я думаю, что вы можете просто проигнорировать это предупреждение или использовать <NoWarn>NU5048</NoWarn>.

...