целевые рамки структуры с пакетами Nuget? - PullRequest
0 голосов
/ 05 июня 2018

Я довольно новичок в процессе создания пакетов NuGet.Я недавно создал пакет NuGet через NuGetPackageExplorer.В представлении «Метаданные пакета» есть раздел «Ссылки на сборку платформы» со значением «Microsoft.CSharp (Any, Verion = 0.0)».Вот как выглядит файл nuspec:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata>
    <id>My.Cool.NuGet.Package</id>
    <version>1.0.2</version>
    <title></title>
    <authors>John Smith</authors>
    <owners>John Smith</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>My cool NuGet package</description>
    <frameworkAssemblies>
      <frameworkAssembly assemblyName="Microsoft.CSharp" />
    </frameworkAssemblies>
  </metadata>
</package>

Можете ли вы объяснить взаимосвязи, зависимости и ограничения для следующих измерений:

  • Версия Target Framework исходного проекта .NETдля пакета NuGet
  • frameworkAssemblies раздела nuspec-файла
  • Target Framework версия проекта, которая устанавливает пакет NuGet

Значение frameworkAssembly в приведенном выше nuspec:отображается в NuGetPackageExplorer следующим образом:

Имя сборки: Microsoft.CSharp

Поддерживаемые платформы: Любые, Версия = v0.0

Означает ли эточто пакет NuGet предназначен для независимой от .NET Framework версии?Существуют ли сценарии, в которых я хотел бы явно указать конкретную версию (версии) в этом разделе?Причина, по которой я спрашиваю, состоит в том, что я вчера установил пакет NuGet в проект MVC, и у меня было странное поведение.В частности:

  • Пакет NuGet показывался как установленный и отображался в списке ссылок
  • Мне удалось добавить директиву using в пространство имен пакета NuGet

Однако, когда я попытался запустить приложение, компилятор отобразил ошибку «тип пространства имен не найден» для них с помощью директив.Но затем ошибки компилятора исчезли, но приложение не запускало b / c из предыдущих ошибок компилятора.После того, как я поработал с настройками версии в проекте MVC и исходном проекте пакета NuGet, я смог обойти эту ошибку.Так что теперь я пытаюсь понять более мелкие детали того, что мне нужно рассмотреть и настроить в отношении целевых структур.

1 Ответ

0 голосов
/ 06 июня 2018

TargetFamework исходного проекта для пакета NuGet должна быть самой низкой версией фреймворка, необходимой для проектов, которые его установят.Например, если вы знаете, что у вас будут проекты в рамках 4.5 и 4.6, вы создадите исходный код для пакета 4.5.Вы также можете поместить несколько сборок для нескольких каркасов в пакет.Вот документация об этом.

TargetFramework для проектов, устанавливающих пакет, должен быть больше или равен версии пакета.Поскольку более высокие версии фреймворка совместимы с более низкими версиями.Он не должен позволять вам устанавливать пакет, который не поддерживает платформу, которую вы используете в проекте.

Разделы FrameworkAssemblies просто определяет, какие сборки платформы использует пакет, поэтому ссылки добавляются автоматически.Проверьте документацию для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...