Sono nuovo di Nuget e sto cercando di capire di caricare il mio primo pacchetto. Finora, tutto è andato liscio. Tuttavia, sto cercando di impostare CopyToOutputDirectory su alcuni file di contenuto che voglio vivere in una sottocartella Lib. La mia directory assomiglia a questo:Nuget - Impostazione CopyToOutputDirectory sul contenuto in sottocartelle
│ Readme.txt
│ MyPackage.nupkg
│ MyPackage.nuspec
│
├───content
│ └───Lib
│ native1.dll
│ native2.dll
│ native3.dll
│ native4.dll
│
├───lib
│ MyActualAssembly.dll
│
└───tools
Install.ps1
Dalla lettura this StackOverflow question e qualche lettura in più, ho messo insieme un Install.ps1 che assomiglia a questo:
param($installPath, $toolsPath, $package, $project)
$project.ProjectItems.Item("Lib\native1.dll").Properties.Item("CopyToOutputDirectory").Value = 1
$project.ProjectItems.Item("Lib\native2.dll").Properties.Item("CopyToOutputDirectory").Value = 1
$project.ProjectItems.Item("Lib\native3.dll").Properties.Item("CopyToOutputDirectory").Value = 1
$project.ProjectItems.Item("Lib\native4.dll").Properties.Item("CopyToOutputDirectory").Value = 1
I 1-allineati alle varie operazioni da vedi se mi ha aiutato a capire il problema, ma è praticamente la stessa di quella risposta altrimenti.
Dai miei test, Install.ps1 ha qualche problema nel trovare i file stessi. Quando viene eseguito dopo aver installato il pacchetto, ottengo i seguenti errori:
Exception calling "Item" with "1" argument(s): "The parameter is incorrect. (Exception from HRESULT: 0x80070057
(E_INVALIDARG))"
At C:\...\tools\Install.ps1:3 char:1
+ $project.ProjectItems.Item("Lib\native1.dll").Properties.Item("CopyToOutputDirect ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
Exception calling "Item" with "1" argument(s): "The parameter is incorrect. (Exception from HRESULT: 0x80070057
(E_INVALIDARG))"
At C:\...\tools\Install.ps1:4 char:1
+ $project.ProjectItems.Item("Lib\native2.dll").Properties.Item("Copy ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
Exception calling "Item" with "1" argument(s): "The parameter is incorrect. (Exception from HRESULT: 0x80070057
(E_INVALIDARG))"
At C:\...\tools\Install.ps1:5 char:1
+ $project.ProjectItems.Item("Lib\native3.dll").Properties.Item("CopyToOutputDirec ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
Exception calling "Item" with "1" argument(s): "The parameter is incorrect. (Exception from HRESULT: 0x80070057
(E_INVALIDARG))"
At C:\...\tools\Install.ps1:6 char:1
+ $project.ProjectItems.Item("Lib\native4.dll").Properties.Item("CopyToOut ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
E, come ci si aspetta, tutti i file hanno la loro impostazione CopyToOutputDirectory impostato come Non copiare, l'impostazione predefinita.
Come si risolve? C'è una sintassi diversa per accedere alle sottocartelle negli script ps? O mi manca completamente il punto di questi messaggi di errore?
Scusa l'ultimo commento, ho solo riletto la tua risposta e ho perso il primo punto in cui hai ottenuto prima la Lib e poi la dll. Dal giocare nella console PM usando l'idea del progetto get, sembra che sia corretto. Ora lo proverò per davvero! –
Bingo! Dopo un falso avvio con Visual Studio che mi diceva che l'esecuzione dello script era disabilitata, ho riavviato e ora l'importazione funziona senza problemi e i file hanno la loro proprietà impostata correttamente. Grazie. –