public override bool Execute() { NuGetVersion version; if (!NuGetVersion.TryParse(PackageVersion, out version)) { throw new ArgumentException(string.Format( CultureInfo.CurrentCulture, Strings.InvalidPackageVersion, PackageVersion)); } var symbolPackageFormat = PackArgs.GetSymbolPackageFormat(MSBuildStringUtility.TrimAndGetNullForEmpty(SymbolPackageFormat)); var nupkgFileName = PackCommandRunner.GetOutputFileName(PackageId, version, isNupkg: true, symbols: false, symbolPackageFormat: symbolPackageFormat); var nuspecFileName = PackCommandRunner.GetOutputFileName(PackageId, version, isNupkg: false, symbols: false, symbolPackageFormat: symbolPackageFormat); var outputs = new List <ITaskItem>(); outputs.Add(new TaskItem(Path.Combine(PackageOutputPath, nupkgFileName))); outputs.Add(new TaskItem(Path.Combine(NuspecOutputPath, nuspecFileName))); if (IncludeSource || IncludeSymbols) { var nupkgSymbolsFileName = PackCommandRunner.GetOutputFileName(PackageId, version, isNupkg: true, symbols: true, symbolPackageFormat: symbolPackageFormat); var nuspecSymbolsFileName = PackCommandRunner.GetOutputFileName(PackageId, version, isNupkg: false, symbols: true, symbolPackageFormat: symbolPackageFormat); outputs.Add(new TaskItem(Path.Combine(PackageOutputPath, nupkgSymbolsFileName))); outputs.Add(new TaskItem(Path.Combine(NuspecOutputPath, nuspecSymbolsFileName))); } OutputPackItems = outputs.ToArray(); return(true); }
public PackArgs GetPackArgs(IPackTaskRequest <IMSBuildItem> request) { var packArgs = new PackArgs { InstallPackageToOutputPath = request.InstallPackageToOutputPath, OutputFileNamesWithoutVersion = request.OutputFileNamesWithoutVersion, OutputDirectory = request.PackageOutputPath, Serviceable = request.Serviceable, Tool = request.IsTool, Symbols = request.IncludeSymbols, SymbolPackageFormat = PackArgs.GetSymbolPackageFormat(request.SymbolPackageFormat), BasePath = request.NuspecBasePath, NoPackageAnalysis = request.NoPackageAnalysis, NoDefaultExcludes = request.NoDefaultExcludes, WarningProperties = WarningProperties.GetWarningProperties(request.TreatWarningsAsErrors, request.WarningsAsErrors, request.NoWarn), PackTargetArgs = new MSBuildPackTargetArgs() }; packArgs.Logger = new PackCollectorLogger(request.Logger, packArgs.WarningProperties); if (request.MinClientVersion != null) { Version version; if (!Version.TryParse(request.MinClientVersion, out version)) { throw new PackagingException(NuGetLogCode.NU5022, string.Format( CultureInfo.CurrentCulture, Strings.InvalidMinClientVersion, request.MinClientVersion)); } packArgs.MinClientVersion = version; } InitCurrentDirectoryAndFileName(request, packArgs); InitNuspecOutputPath(request, packArgs); PackCommandRunner.SetupCurrentDirectory(packArgs); if (!string.IsNullOrEmpty(request.NuspecFile)) { if (request.NuspecProperties != null && request.NuspecProperties.Any()) { packArgs.Properties.AddRange(ParsePropertiesAsDictionary(request.NuspecProperties)); if (packArgs.Properties.ContainsKey("version")) { packArgs.Version = packArgs.Properties["version"]; } } } else { // This only needs to happen when packing via csproj, not nuspec. packArgs.PackTargetArgs.AllowedOutputExtensionsInPackageBuildOutputFolder = InitOutputExtensions(request.AllowedOutputExtensionsInPackageBuildOutputFolder); packArgs.PackTargetArgs.AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder = InitOutputExtensions(request.AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder); packArgs.PackTargetArgs.TargetPathsToAssemblies = InitLibFiles(request.BuildOutputInPackage); packArgs.PackTargetArgs.TargetPathsToSymbols = InitLibFiles(request.TargetPathsToSymbols); packArgs.PackTargetArgs.AssemblyName = request.AssemblyName; packArgs.PackTargetArgs.IncludeBuildOutput = request.IncludeBuildOutput; packArgs.PackTargetArgs.BuildOutputFolder = request.BuildOutputFolders; packArgs.PackTargetArgs.TargetFrameworks = ParseFrameworks(request); if (request.IncludeSource) { packArgs.PackTargetArgs.SourceFiles = GetSourceFiles(request, packArgs.CurrentDirectory); packArgs.Symbols = request.IncludeSource; } var contentFiles = ProcessContentToIncludeInPackage(request, packArgs); packArgs.PackTargetArgs.ContentFiles = contentFiles; } return(packArgs); }
public override void ExecuteCommand() { var packArgs = new PackArgs(); packArgs.Logger = Console; packArgs.Arguments = Arguments; packArgs.OutputDirectory = OutputDirectory; packArgs.BasePath = BasePath; packArgs.MsBuildDirectory = new Lazy <string>(() => MsBuildUtility.GetMsBuildDirectoryFromMsBuildPath(MSBuildPath, MSBuildVersion, Console).Value.Path); if (!string.IsNullOrEmpty(PackagesDirectory)) { packArgs.PackagesDirectory = Path.GetFullPath(PackagesDirectory); } if (!string.IsNullOrEmpty(SolutionDirectory)) { packArgs.SolutionDirectory = Path.GetFullPath(SolutionDirectory); } // Get the input file packArgs.Path = PackCommandRunner.GetInputFile(packArgs); // Set the current directory if the files being packed are in a different directory PackCommandRunner.SetupCurrentDirectory(packArgs); Console.WriteLine(LocalizedResourceManager.GetString("PackageCommandAttemptingToBuildPackage"), Path.GetFileName(packArgs.Path)); if (!string.IsNullOrEmpty(MinClientVersion)) { if (!System.Version.TryParse(MinClientVersion, out _minClientVersionValue)) { throw new CommandLineException(LocalizedResourceManager.GetString("PackageCommandInvalidMinClientVersion")); } } if (!string.IsNullOrEmpty(SymbolPackageFormat)) { packArgs.SymbolPackageFormat = PackArgs.GetSymbolPackageFormat(SymbolPackageFormat); } packArgs.Deterministic = Deterministic; packArgs.Build = Build; packArgs.Exclude = Exclude; packArgs.ExcludeEmptyDirectories = ExcludeEmptyDirectories; packArgs.IncludeReferencedProjects = IncludeReferencedProjects; switch (Verbosity) { case Verbosity.Detailed: { packArgs.LogLevel = LogLevel.Verbose; break; } case Verbosity.Normal: { packArgs.LogLevel = LogLevel.Information; break; } case Verbosity.Quiet: { packArgs.LogLevel = LogLevel.Minimal; break; } } packArgs.MinClientVersion = _minClientVersionValue; packArgs.NoDefaultExcludes = NoDefaultExcludes; packArgs.NoPackageAnalysis = NoPackageAnalysis; if (Properties.Any()) { packArgs.Properties.AddRange(Properties); } packArgs.Suffix = Suffix; packArgs.Symbols = Symbols; packArgs.Tool = Tool; packArgs.InstallPackageToOutputPath = InstallPackageToOutputPath; packArgs.OutputFileNamesWithoutVersion = OutputFileNamesWithoutVersion; if (!string.IsNullOrEmpty(Version)) { NuGetVersion version; if (!NuGetVersion.TryParse(Version, out version)) { throw new PackagingException(NuGetLogCode.NU5010, string.Format(CultureInfo.CurrentCulture, NuGetResources.InstallCommandPackageReferenceInvalidVersion, Version)); } packArgs.Version = version.ToFullString(); } var packCommandRunner = new PackCommandRunner(packArgs, ProjectFactory.ProjectCreator); packCommandRunner.BuildPackage(); }