NuGet добавить внешнюю ссылку
У меня есть .файл nuspec для моего проекта, который ссылается на стороннюю DLL, на которую должен ссылаться проект, включая мой пакет.
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>Locked against log4net 1.2 - less than 1.2.11 which has breaking changes</releaseNotes>
<copyright>Copyright 2012 blah blah</copyright>
<dependencies>
<dependency id="log4net" version="[1.2,1.2.11)" />
<dependency id="My.Other.Project" />
</dependencies>
<references>
<reference file="Third.Party.dll" />
</references>
Если я попытаюсь запустить nuget.exe пакет Мой.Проект.csproj из каталога с .csproj и the .файл nuspec, я получаю
неверная ссылка на сборку третьего.Вечеринка.в DLL'. Убедитесь, что файл с именем ' Third.Вечеринка.dll " существует в каталоге lib.
Я создал .библиотека .бинотладкиЛиб . objlib
и файл во всех трех местах. Где он действительно хочет папку lib?
2 ответов
этой ссылки> элемент определяет ссылки, которые будут добавлены в проект при установке пакета. То, что вам не хватает, это часть, которая определяет файлы, которые являются частью вашего пакета, который выполняется с помощью файлы> элемент. Так твой .файл nuspec должен выглядеть примерно так:
<?xml version="1.0"?>
<package>
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>Locked against log4net 1.2 - less than 1.2.11 which has breaking changes</releaseNotes>
<copyright>Copyright 2012 blah blah</copyright>
<dependencies>
<dependency id="log4net" version="[1.2,1.2.11)" />
<dependency id="My.Other.Project" />
</dependencies>
<references>
<reference file="Third.Party.dll" />
</references>
</metadata>
<files>
<file src="lib\Third.Party.dll" target="lib"/>
</files>
</package>
единственное отличие-элемент files после элемента metadata.
У меня была такая же проблема и вот как я ее решал. Мне показалось странным, но похоже, что это работает, и мне не нужно создавать пакет nuget для моей сторонней сборки таким образом.
мой .nuspec выглядит так:
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>Some release notes</releaseNotes>
<copyright>Copyright 2012</copyright>
<tags>some,tags</tags>
<references>
<reference file="thirdparty.dll"></reference>
<reference file="ThisAssemblyName.dll"></reference>
</references>
</metadata>
<files>
<file src="web.config.transform" target="content"/>
<file src="lib\net40\thirdparty.dll" target="lib\net40"/>
</files>
</package>
Как вы можете видеть-мне пришлось добавить узел файла, чтобы скопировать мою библиотеку dll thirdparty в целевую папку lib\net40 (в моем случае). Затем мне пришлось добавить" ссылочные " узлы для обеих сторон.dll, а также сборка, которую создавал этот пакет NuGet. Я почувствуйте, как решение Мэтта Уорда должны правильно, но он не работал для меня, пока я не добавил (избыточный) ссылочный узел.
надеюсь, это поможет!
спасибо
Мустафа