Jestem nowy w Nuget i próbuję wymyślić załadowanie mojego pierwszego pakietu. Jak dotąd wszystko poszło gładko. Jednak próbuję ustawić CopyToOutputDirectory na niektórych plikach zawartości, które chcę żyć w podfolderze Lib. Mój katalog wygląda następująco:Nuget - Ustawianie CopyToOutputDirectory dla zawartości w podfolderach
│ Readme.txt
│ MyPackage.nupkg
│ MyPackage.nuspec
│
├───content
│ └───Lib
│ native1.dll
│ native2.dll
│ native3.dll
│ native4.dll
│
├───lib
│ MyActualAssembly.dll
│
└───tools
Install.ps1
Od czytania this StackOverflow question i jakiegoś dodatkowego czytania, mam ułożyła Install.ps1, który wygląda tak:
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 wysadzanej różne operacje Sprawdź, czy pomogło mi to zrozumieć problem, ale w rzeczywistości jest tak samo, jak w przypadku tej odpowiedzi.
Z moich testów Install.ps1 ma problem ze znalezieniem samych plików. Kiedy biegnie po zainstalowaniu pakietu, otrzymuję następujące błędy:
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
I, jak można się spodziewać, wszystkie pliki mają ich ustawienie CopyToOutputDirectory ustawiony jako nie kopiuj, domyślny.
Jak rozwiązać ten problem? Czy istnieje inna składnia dostępu do podfolderów w skryptach ps? Czy całkowicie brakuje mi punktu tych komunikatów o błędach?
Przepraszam za ten ostatni komentarz, po prostu ponownie przeczytałem twoją odpowiedź i przegapiłem pierwszy kawałek, w którym najpierw dostałeś Lib, a potem dll po. Od grania w konsolę PM za pomocą tego projektu typu "get-project", wygląda na to, że jest poprawny. Spróbuję teraz naprawdę! –
Bingo! Po fałszywym uruchomieniu programu Visual Studio informującym, że wykonanie skryptu zostało wyłączone, uruchomiłem ponownie i teraz import działa płynnie, a pliki mają poprawnie ustawioną właściwość. Dziękuję Ci. –