Я создал пакет NuGet libtidy
, который помещается в фид Team Services.Не удалось добавить пакет NuGet
При попытке установки через консоль NuGet я получаю ошибку
Не удалось добавить ссылку на «libtidy»
Я прочитал это Stack Overflow post где OP имеет подобную проблему, но я не смогли решить эту проблему - я пробовал:
- Удаление всех папок внутри папки пакетов и обновления
- Выполнение
regsvr32 "C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\VsLangproj.olb"
из командной строки с повышенными - Doing
Uninstall-Package libtidy -force
из консоли менеджера пакетов (это не работает, поскольку пакет не установлен git clean -dfx
- кэш клиринг NuGet
- вручную удаляя libtidy каталог в .nuget каталоге
EDIT
Имея сделал небольшое исследование, может ли это быть связано с тем, что libtidy.dll не управляется кодом? Infact это ANSI-C. В нашем приложении мы используем TidyManaged, как оболочку, которая управляется и успешно устанавливается через nuget. В настоящее время, если мы вручную скопируем файл libtidy.dll в bin, он отлично работает, но было бы лучше, если бы процесс сборки вытащил в libtidy.dll, возможно, как часть Tidymanaged install, которого нет в настоящее время.
EDIT2
param($installPath, $toolsPath, $package, $project)
$file = $project.ProjectItems.Item("libtidy.dll");
If ($file -eq $null)
{
$project.ProjectItems.AddFromFile("libtidy.dll");
$file = $project.ProjectItems.Item("libtidy.dll");
}
$file.Properties.Item("CopyToOutputDirectory").Value = [int]1;
EDIT3
Edit 3:
Я
а) размещения libtidy.dll
и Install.ps1
в директории под названием nuget-libtidy
в манифесте, порожденный nuget spec
У меня есть:
<?xml version="1.0"?>
<package >
<metadata>
<id>nuget-libtidy</id>
<version>1.0.0</version>
<authors>Name</authors>
<owners>Name</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>nuget-libtidy</description>
<copyright>Copyright 2016</copyright>
<tags>nuget-libtidy</tags>
</metadata>
<files>
<file src="libtidy.dll" target="content" />
<file src="Install.ps1" target="tools" />
</files>
</package>
Когда я бегу nuget pack
я получаю следующее предупреждение:
WARNING: 1 issue(s) found with package 'nuget-libtidy2'.
Issue: Assembly outside lib folder.
Description: The assembly 'content\libtidy.dll' is not inside the 'lib' folder and hence it won't be added as reference when the package is installed into a project.
Solution: Move it into the 'lib' folder if it should be referenced.
б) Когда мы строим приложение libtidy.dll помещается в корневой каталог проекта (не в ящике) & получить следующее сообщение об ошибке в окне вывода:
Added package 'nuget-libtidy' to 'packages.config'
Executing script file <path>\nuget-libtidy\tools\Install.ps1'...
Cannot add a link to the file libtidy.dll. There is already a file of the same name in this folder.
At <path>\nuget-libtidy\tools\Install.ps1:7 char:5
+ $project.ProjectItems.AddFromFile("libtidy.dll");
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
Successfully installed 'nuget-libtidy' to <Namepace>
Укажите, пожалуйста, версию vs и что такое пакет обновления? – toha