Как правильно определить пакет NuGet для сборки, в которой имя файла dll отличается от имени сборки?

#nuget

#nuget

Вопрос:

Мне пришлось упаковать портативную версию Newtonsoft.Json как внутренний пакет NuGet под другим именем ( Newtonsoft.SL5.Json ). Причина в том, что мы встраиваемся в общий каталог bin, и я не хочу, чтобы версия Silverlight перезаписывала полную .Сетевая версия. (Да, у нас все еще есть Silverlight и да, portable Json.Сетевая версия недостаточно хороша для имеющегося у нас кода, отличного от Silverlight)

  • Имя файла пакета Newtonsoft.SL5.Json.8.0.1.19229.nupkg
  • Внутри него есть Newtonsoft.SL5.Json.nuspec
  • Внутри него есть libsl5Newtonsoft.SL5.Json.dll

Содержимое файла nuspec является:

 <?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  <metadata>
    <id>Newtonsoft.SL5.Json</id>
    <version>8.0.1.19229</version>
    <authors>Newtonsoft</authors>
    <owners>Newtonsoft</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Json.NET Portable .NET 4.0</description>
    <copyright>Copyright © James Newton-King 2008</copyright>
  </metadata>
</package>
  

Теперь я что-то делаю неправильно, потому что в результате при добавлении зависимости в Visual Studio ссылка, которую она создает, является:

 <Reference Include="Newtonsoft.SL5.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
  <HintPath>....packagesNewtonsoft.SL5.Json.8.0.1.19229libsl5Newtonsoft.SL5.Json.dll</HintPath>
  <Private>True</Private>
</Reference>
  

И, конечно же, такой сборки не существует Newtonsoft.SL5.Json . Это должно быть Newtonsoft.Json .

Итак, я делаю что-то не так. Как я должен изменить пакет NuGet, чтобы он использовал правильное имя сборки, т. е. Newtonsoft.Json ? Потому что, хотя я изменил имя файла, имя сборки осталось тем же.

Ответ №1:

при добавлении ссылки IDE принимает dll-файлы, которые включены в пакет (lib/{platform}/). Если вы переименуете эти файлы, добавленные и упакованные в nupkg file -> они должны быть добавлены в element.

Комментарии:

1. Извините, я не понял вашего ответа. Не могли бы вы уточнить?

2. если у вас есть libsl5Newtonsoft.SL5.Json.dll в пакете, то на этот файл будет ссылка в VS. Можете ли вы вывести другое имя файла при упаковке?

3. Нет, мне нужно, чтобы он был назван таким образом, чтобы избежать столкновения с версией, отличной от Silverlight.