Ответ 1
nuget push поддерживает подстановочные знаки, поэтому вы можете сделать что-то вроде этого:
REM delete existing nuget packages
del *.nupkg
nuget pack MyProject.csproj
nuget push *.nupkg
Мне нужно потратить время на создание пакета script для того, чтобы упаковать и нажимать полученный файл .nupkg
до моего личного фида nuget. Я могу назвать pack
просто отлично, но я не знаю, как разбирать имя nupkg из результирующего вывода, чтобы сделать push
. К сожалению, номер версии автоматически увеличивается, поэтому я не могу просто сделать предположение о том, как будет назван результирующий файл.
FWIW, я использую myget.org для своего частного хостинга, но это можно легко применить к любому хосту (включая nuget.org).
nuget push поддерживает подстановочные знаки, поэтому вы можете сделать что-то вроде этого:
REM delete existing nuget packages
del *.nupkg
nuget pack MyProject.csproj
nuget push *.nupkg
это заняло больше времени, чем я хотел, но в итоге я упаковываю сборку в папку с именем bin\nuget_build
, так как она находится в bin
, она не будет проверена в исходном элементе управления. script каждый раз удаляет и создает bin\nuget_build
, поэтому мы можем перебирать содержимое каталога и nuget push
каждого файла до вашего узла nuget. Таким образом, вам не нужно беспокоиться о разборе вывода из команды pack
и всегда иметь правильный номер версии).
Убедитесь, что вы изменили:
Вот script, который я проверяю в исходном контроле и вызове с моей машины сборки.
REM This file is used to package projects and publish them to MyGet
REM This file should sit in the same directory as the csproj file you want to package
REM nuget.exe should be in a directory called ".nuget" one directory up
REM You can get nuget.exe to install by turning on nuget package restore
set config=%1
set PackageVersion=%2
if "%config%" == "" (
set config=Debug
)
set version=
if not "%PackageVersion%" == "" (
set version=-Version %PackageVersion%
)
set nuget=..\.nuget\nuget.exe
REM Make sure there is only one file in the package directory because we're going to push everything to myget
del /F /Q bin\nuget_build
mkdir bin\nuget_build
REM ** Pack the Project **
REM Changing package title/id/description can be done by modifying [AssemblyTitle] and [AssemblyDescription]
REM in the AssemblyInfo.cs file in the project (see: http://stackoverflow.com/info/22208542/nuget-pack-someproject-csproj-wont-let-me-change-title-or-description/22208543#22208543)
cmd /c %nuget% pack "Company.Project.Web.csproj" -IncludeReferencedProjects -o bin\nuget_build -p Configuration=%config% %version%
REM ** Push the file to myget **
REM There should only be a single file in the
for /f %%l in ('dir /b /s bin\nuget_build\*.nupkg') do (
cmd /c %nuget% push %%l 55555555-5555-5555-5555-555555555555 -Source https://www.myget.org/F/some_company_feed/api/v2/package
)