Ho creato un pacchetto NuGet libtidy
che viene trasferito a un feed Servizi team.Impossibile aggiungere il pacchetto NuGet
Quando provo l'installazione tramite la console NuGet ottengo l'errore
Impossibile aggiungere il riferimento a 'libtidy'
Ho letto questo Stack Overflow post in cui l'OP ha un problema simile, ma io non ho potuto risolvere il problema - Ho provato:
- Cancellare tutte le cartelle all'interno della cartella dei pacchetti e aggiornare
- Esecuzione
regsvr32 "C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\VsLangproj.olb"
da un prompt dei comandi con privilegi elevati - Facendo
Uninstall-Package libtidy -force
dalla console gestore di pacchetti (questo non funziona come il pacchetto non è installato git clean -dfx
- cache di compensazione NuGet
- rimuovere manualmente la directory libtidy nella directory .nuget
EDIT
Avere fatto un po 'di ricerca, potrebbe essere a che fare con il fatto che libtidy.dll non è un codice gestito? Infatti è ANSI-C. Nella nostra applicazione utilizziamo TidyManaged, come un wrapper, che è gestito e installato con successo tramite nuget. Attualmente se copiamo manualmente in libtidy.dll in bin, funziona bene, ma sarebbe meglio se il processo di compilazione tirasse in libtidy.dll, forse come parte dell'installazione di Tidymanaged, che al momento non fa.
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:
Sono
a) mettendo libtidy.dll
e Install.ps1
in una directory chiamata nuget-libtidy
nel manifesto generato da nuget spec
ho:
<?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>
Quando eseguo nuget pack
ricevo il seguente avviso:
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.
b) Quando costruiamo l'applicazione libtidy.dll viene collocato nella radice del progetto (non il contenitore) & ottenere il seguente errore nella finestra di output:
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>
, fornire la versione vs e qual è il service pack? – toha