#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.