В настоящее время я работаю над библиотекой .NET Core, которую я собираюсь использовать в качестве пакета NuGet в другом проекте.Автоматический пакет Nuget Push With .NetCore RC2
Я смог успешно упаковать проект, используя команду «dotnet pack» в каталоге проекта и загрузить этот пакет в MyGet.
Я бы предпочел автоматизировать этот процесс нажатия на пакет NuGet с помощью команды «nuget push».
Моя проблема заключается в том, что свойство «scripts», определенное в файле project.json, похоже, не выполняется в пакете или сборке. Я ожидал, что эти скрипты будут выполняться, когда произойдет соответствующее событие, но они, похоже, не имеют никакого эффекта, поскольку я не вижу ничего вывода на консоль при создании, с или без его подробного тега.
Я понимаю, что MyGet может обновлять корм для пакетов на основе репозитория Git, но я хотел бы понять, есть ли проблема с выполнением скрипта, использующего в настоящее время project.json. В идеале я хочу использовать команду nuget push после успешного завершения пакета.
Вот мой project.json файл:
{
"version": "0.0.1",
"scripts": {
"postbuild": [ "echo build" ],
"prebuild": "echo build",
"postpack": "echo build",
"postpublish": "echo build",
"postrestore": "echo build",
"prepack": "echo build",
"prepare": "echo build",
"prepublish": "echo build",
"prerestore": "echo build"
},
"dependencies": {
"NETStandard.Library": "1.5.0-rc2-24027"
},
"frameworks": {
"netstandard1.5": {
}
},
"buildOptions": {
"allowUnsafe": false,
"debugType": "portable",
"emitEntryPoint": false,
"xmlDoc": false
},
"commands": { },
"packOptions": {
"files": {
"include": "%project:Directory%/bin/release/*.nupkg"
}
},
"configurations": {
"Debug": {
"buildOptions": {
"define": [ "DEBUG", "TRACE" ]
}
},
"Release": {
"buildOptions": {
"define": [ ]
}
}
}
}
Как вы можете использовать это и обходить множество фреймворков? Если у вас несколько фреймворков, посткомпиляция запускается после компиляции каждой структуры, поэтому первая выполняется, пакеты (все фреймворки, но только первая структура была перекомпилирована) и толкает, вторая запускает пакеты (все фреймворки), но теперь не будет push, потому что этот пакет версии уже существует ... – Adam
У меня есть несколько библиотек, предназначенных для сетей net461 и netstandard1.5, и это толкает пакет. Единственное предостережение в том, что я нажимаю на локальную общую папку, а не на nuget, поэтому я должен знать, что произойдет, если я буду настаивать на nuget. – DazFahy
Вы должны будете использовать файл сценария и протестировать правильную структуру перед запуском nuget push.Переменная контекста, которую вы ищете, составляет% compile: TargetFramework% или% compile: FullTargetFramework% У меня есть полный список переменных контекста здесь: http://stackoverflow.com/a/38339463/1112558 – Erikest