diff --git a/ILRepack.Lib.MSBuild.Task/ILRepack.Config.props b/ILRepack.Lib.MSBuild.Task/ILRepack.Config.props index 197bc60..b00e580 100644 --- a/ILRepack.Lib.MSBuild.Task/ILRepack.Config.props +++ b/ILRepack.Lib.MSBuild.Task/ILRepack.Config.props @@ -1,6 +1,6 @@  - - $(ProjectDir)$(TargetName).snk - + + $(ProjectDir)$(TargetName).snk + \ No newline at end of file diff --git a/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.csproj b/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.csproj index 9446896..e306c98 100644 --- a/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.csproj +++ b/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.csproj @@ -1,51 +1,51 @@  - - net472 - 2.0.22 - + + net472 + 2.0.22 + - - - - - + + + + + - - - - - - + + + + + + - - - + + + - - - $(MSBuildThisFileDirectory)build\ILRepack.Lib.MSBuild.Task.nuspec - $(OutDir)ILRepack.Lib.MSBuild.Task.$(Version).nupkg - - + + + $(MSBuildThisFileDirectory)build\ILRepack.Lib.MSBuild.Task.nuspec + $(OutDir)ILRepack.Lib.MSBuild.Task.$(Version).nupkg + + - - - + + + \ No newline at end of file diff --git a/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.targets b/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.targets index b2416b6..1c6fc63 100644 --- a/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.targets +++ b/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.targets @@ -1,39 +1,39 @@  - + - - $(ProjectDir)ILRepack.targets - + + $(ProjectDir)ILRepack.targets + - - - - - - - + + + + + + + - - - - - - - - $([System.IO.Directory]::GetFiles("%(Directories.Identity)", "*", System.IO.SearchOption.AllDirectories).get_Length()) - - - - + + + + + + + + $([System.IO.Directory]::GetFiles("%(Directories.Identity)", "*", System.IO.SearchOption.AllDirectories).get_Length()) + + + + \ No newline at end of file diff --git a/ILRepack.Lib.MSBuild.Task/ILRepack.cs b/ILRepack.Lib.MSBuild.Task/ILRepack.cs index d16d8a4..da6cdc3 100644 --- a/ILRepack.Lib.MSBuild.Task/ILRepack.cs +++ b/ILRepack.Lib.MSBuild.Task/ILRepack.cs @@ -1,43 +1,10 @@ -/** - * Copyright (c) 2004, Evain Jb (jb@evain.net) - * Modified 2007 Marcus Griep (neoeinstein+boo@gmail.com) - * Modified 2013 Peter Sunde (peter.sunde@gmail.com) - * Modified 2016-2024 Ravi Patel (rbsoft.org) - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - Neither the name of Evain Jb nor the names of its contributors may - * be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - *****************************************************************************/ - -using System.Collections.Generic; using System; +using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using ILRepacking; using Microsoft.Build.Framework; -using System.Diagnostics; namespace ILRepack.Lib.MSBuild.Task { @@ -58,7 +25,7 @@ public class ILRepack : Microsoft.Build.Utilities.Task, IDisposable #region Fields /// - /// Specifies a keyfile to sign the output assembly. + /// Specifies a key file to sign the output assembly. /// public virtual string KeyFile { @@ -67,7 +34,7 @@ public virtual string KeyFile } /// - /// Specifies a KeyContainer to use. + /// Specifies a key container to use. /// public virtual string KeyContainer { @@ -76,7 +43,7 @@ public virtual string KeyContainer } /// - /// Specifies a logfile to output log information. + /// Specifies a log file to output log information. /// public virtual string LogFile { @@ -85,17 +52,17 @@ public virtual string LogFile } /// - /// Merges types with identical names into one. + /// Merges types with identical names into one. /// public virtual bool Union { get; set; } /// - /// Enable/disable symbol file generation. + /// Enable/disable symbol file generation. /// public virtual bool DebugInfo { get; set; } /// - /// Take assembly attributes from the given assembly file. + /// Take assembly attributes from the given assembly file. /// public virtual string AttributeFile { @@ -104,17 +71,17 @@ public virtual string AttributeFile } /// - /// Copy assembly attributes (by default only the primary assembly attributes are copied). + /// Copy assembly attributes (by default only the primary assembly attributes are copied). /// public virtual bool CopyAttributes { get; set; } /// - /// Allows multiple attributes (if type allows). + /// Allows multiple attributes (if type allows). /// public virtual bool AllowMultiple { get; set; } /// - /// Target assembly kind (Exe|Dll|WinExe|SameAsPrimaryAssembly). + /// Target assembly kind (Exe|Dll|WinExe|SameAsPrimaryAssembly). /// public virtual string TargetKind { @@ -123,7 +90,7 @@ public virtual string TargetKind { if (Enum.IsDefined(typeof(ILRepacking.ILRepack.Kind), value)) { - _targetKind = (ILRepacking.ILRepack.Kind) Enum.Parse(typeof(ILRepacking.ILRepack.Kind), value); + _targetKind = (ILRepacking.ILRepack.Kind)Enum.Parse(typeof(ILRepacking.ILRepack.Kind), value); } else { @@ -136,43 +103,43 @@ public virtual string TargetKind } /// - /// Target platform (v1, v1.1, v2, v4 supported). + /// Target platform (v1, v1.1, v2, v4 supported). /// public virtual string TargetPlatformVersion { get; set; } /// - /// Path of Directory where target platform is located. + /// Path of Directory where the target platform is located. /// public virtual string TargetPlatformDirectory { get; set; } /// - /// Merge assembly xml documentation. + /// Merge assembly XML documentation. /// public bool XmlDocumentation { get; set; } /// - /// List of paths to use as "include directories" when attempting to merge assemblies. + /// List of paths to use as "include directories" when attempting to merge assemblies. /// public virtual ITaskItem[] LibraryPath { get; set; } = new ITaskItem[0]; /// - /// Set all types but the ones from the first assembly 'internal'. + /// Set all types but the ones from the first assembly 'internal'. /// public virtual bool Internalize { get; set; } /// - /// Rename all internalized types (to be used when Internalize is enabled). + /// Rename all internalized types (to be used when Internalize is enabled). /// public virtual bool RenameInternalized { get; set; } /// - /// If Internalize is set to true, any which match these regular expressions will not be internalized. - /// If internalize is false, then this property is ignored. + /// If Internalize is set to true, any which match these regular expressions will not be internalized. + /// If Internalize is false, then this property is ignored. /// public virtual ITaskItem[] InternalizeExclude { get; set; } /// - /// Output name for merged assembly. + /// Output name for the merged assembly. /// [Required] public virtual string OutputFile @@ -182,61 +149,62 @@ public virtual string OutputFile } /// - /// List of assemblies that will be merged. + /// List of assemblies that will be merged. /// [Required] public virtual ITaskItem[] InputAssemblies { get; set; } = new ITaskItem[0]; /// - /// Set the keyfile, but don't sign the assembly. + /// Set the key file, but don't sign the assembly. /// public virtual bool DelaySign { get; set; } /// - /// Allows to duplicate resources in output assembly (by default they're ignored). + /// Allows duplicating resources in the output assembly (by default they're ignored). /// public virtual bool AllowDuplicateResources { get; set; } /// - /// Allows the specified namespaces for being duplicated in to input assemblies. + /// Allows the specified namespaces from being duplicated into input assemblies. + /// Multiple namespaces are delimited by ",". /// public virtual string AllowedDuplicateNamespaces { get; set; } /// - /// Allows assemblies with Zero PeKind (but obviously only IL will get merged). + /// Allows assemblies with Zero PeKind (but obviously only IL will get merged). /// public virtual bool ZeroPeKind { get; set; } /// - /// Use as many CPUs as possible to merge the assemblies. + /// Use as many CPUs as possible to merge the assemblies. /// public virtual bool Parallel { get; set; } = true; /// - /// Pause execution once completed (good for debugging). + /// Pause execution once completed (good for debugging). /// public virtual bool PauseBeforeExit { get; set; } /// - /// Additional debug information during merge that will be outputted to LogFile. + /// Additional debug information during the merge that will be outputted to LogFile. /// public virtual bool Verbose { get; set; } /// - /// Does not add the embedded resource 'ILRepack.List' with all merged assembly names. + /// Does not add the embedded resource 'ILRepack.List' with all merged assembly names. /// public virtual bool NoRepackRes { get; set; } /// - /// Allows (and resolves) file wildcards (e.g. `*`.dll) in input assemblies. + /// Allows (and resolves) file wildcards (e.g., `*.dll`) in input assemblies. /// public virtual bool Wildcards { get; set; } /// - /// Name of an attribute. Members in InputAssemblies marked with this attribute will be - /// dropped during merging. + /// Name of an attribute (optional). Members in input assemblies marked with this attribute will be dropped during merging. /// public string RepackDropAttribute { get; set; } + #endregion #region Public methods @@ -275,9 +243,10 @@ public override bool Execute() RepackDropAttribute = RepackDropAttribute }; - repackOptions.AllowedDuplicateNameSpaces.AddRange(ParseDuplicateNamespacesOption(AllowedDuplicateNamespaces)); + repackOptions.AllowedDuplicateNameSpaces.AddRange( + ParseDuplicateNamespacesOption(AllowedDuplicateNamespaces)); - Logger logger = new Logger + var logger = new Logger { ShouldLogVerbose = repackOptions.LogVerbose }; @@ -285,7 +254,7 @@ public override bool Execute() try { // Attempt to create output directory if it does not exist. - var outputPath = Path.GetDirectoryName(OutputFile); + string outputPath = Path.GetDirectoryName(OutputFile); if (outputPath != null && !Directory.Exists(outputPath)) { try @@ -301,7 +270,7 @@ public override bool Execute() // Assemblies to be merged. var assemblies = new string[InputAssemblies.Length]; - for (int i = 0; i < InputAssemblies.Length; i++) + for (var i = 0; i < InputAssemblies.Length; i++) { assemblies[i] = InputAssemblies[i].ItemSpec; if (string.IsNullOrEmpty(assemblies[i])) @@ -323,7 +292,7 @@ public override bool Execute() var internalizeExclude = new string[InternalizeExclude.Length]; if (Internalize) { - for (int i = 0; i < InternalizeExclude.Length; i++) + for (var i = 0; i < InternalizeExclude.Length; i++) { internalizeExclude[i] = InternalizeExclude[i].ItemSpec; if (string.IsNullOrEmpty(internalizeExclude[i])) @@ -347,7 +316,7 @@ public override bool Execute() repackOptions.InputAssemblies = assemblies; // Path that will be used when searching for assemblies to merge. - var searchPath = new List {"."}; + var searchPath = new List { "." }; searchPath.AddRange(LibraryPath.Select(iti => BuildPath(iti.ItemSpec))); repackOptions.SearchDirectories = searchPath.ToArray(); @@ -356,7 +325,7 @@ public override bool Execute() InputAssemblies.Length, InputAssemblies.Length != 1 ? "ies" : "y", _outputFile); // Measure performance - Stopwatch stopWatch = new Stopwatch(); + var stopWatch = new Stopwatch(); stopWatch.Start(); if (logger.Open(repackOptions.LogFile)) @@ -364,7 +333,7 @@ public override bool Execute() repackOptions.Log = true; } - ILRepacking.ILRepack ilRepack = new ILRepacking.ILRepack(repackOptions, logger); + var ilRepack = new ILRepacking.ILRepack(repackOptions, logger); ilRepack.Repack(); stopWatch.Stop(); @@ -388,19 +357,17 @@ public override bool Execute() #region Private methods /// - /// Parses the command line options for AllowedDuplicateNameSpaces. + /// Parses the command line options for AllowedDuplicateNameSpaces. /// /// The given options. /// A collection of all allowed namespace duplicates. private static IEnumerable ParseDuplicateNamespacesOption(string value) { - if (string.IsNullOrEmpty(value)) return new string[0]; - - return value.Split(','); + return string.IsNullOrEmpty(value) ? Array.Empty() : value.Split(','); } /// - /// Converts empty string to null. + /// Converts empty string to null. /// /// String to check for emptiness /// @@ -410,13 +377,13 @@ private static string ConvertEmptyToNull(string str) } /// - /// Returns path respective to current working directory. + /// Returns path respective to current working directory. /// /// Relative path to current working directory /// - private string BuildPath(string path) + private static string BuildPath(string path) { - var workDir = Directory.GetCurrentDirectory(); + string workDir = Directory.GetCurrentDirectory(); return string.IsNullOrEmpty(path) ? null : Path.Combine(workDir, path); } @@ -435,4 +402,4 @@ public void Dispose() #endregion } -} +} \ No newline at end of file diff --git a/ILRepack.Lib.MSBuild.Task/Logger.cs b/ILRepack.Lib.MSBuild.Task/Logger.cs index 1fd78e2..cb00ac2 100644 --- a/ILRepack.Lib.MSBuild.Task/Logger.cs +++ b/ILRepack.Lib.MSBuild.Task/Logger.cs @@ -4,16 +4,39 @@ namespace ILRepack.Lib.MSBuild.Task { - class Logger : ILogger + internal class Logger : ILogger { private string _outputFile; private StreamWriter _writer; public bool ShouldLogVerbose { get; set; } + public void Error(string msg) + { + Log($"ERROR: {msg}"); + } + + public void Warn(string msg) + { + Log($"WARN: {msg}"); + } + + public void Info(string msg) + { + Log($"INFO: {msg}"); + } + + public void Verbose(string msg) + { + if (ShouldLogVerbose) + { + Log($"VERBOSE: {msg}"); + } + } + public void Log(object str) { - string logStr = str.ToString(); + var logStr = str.ToString(); Console.WriteLine(logStr); _writer?.WriteLine(logStr); } @@ -21,7 +44,10 @@ public void Log(object str) public bool Open(string file) { if (string.IsNullOrEmpty(file)) + { return false; + } + _outputFile = file; _writer = new StreamWriter(_outputFile); return true; @@ -30,36 +56,18 @@ public bool Open(string file) public void Close() { if (_writer == null) + { return; + } + _writer.Close(); _writer = null; } - public void Error(string msg) - { - Log($"ERROR: {msg}"); - } - - public void Warn(string msg) - { - Log($"WARN: {msg}"); - } - - public void Info(string msg) - { - Log($"INFO: {msg}"); - } - - public void Verbose(string msg) - { - if (ShouldLogVerbose) - Log($"VERBOSE: {msg}"); - } - public void DuplicateIgnored(string ignoredType, object ignoredObject) { // TODO: put on a list and log a summary //INFO("Ignoring duplicate " + ignoredType + " " + ignoredObject); } } -} +} \ No newline at end of file diff --git a/ILRepack.Lib.MSBuild.Task/build/ILRepack.Lib.MSBuild.Task.nuspec b/ILRepack.Lib.MSBuild.Task/build/ILRepack.Lib.MSBuild.Task.nuspec index fab6159..d97fd68 100644 --- a/ILRepack.Lib.MSBuild.Task/build/ILRepack.Lib.MSBuild.Task.nuspec +++ b/ILRepack.Lib.MSBuild.Task/build/ILRepack.Lib.MSBuild.Task.nuspec @@ -1,23 +1,23 @@  - - ILRepack.Lib.MSBuild.Task - 2.0.22 - ILRepack.Lib.MSBuild.Task - RBSoft - rbsoft - false - MIT - https://github.com/ravibpatel/ILRepack.Lib.MSBuild.Task - MSBuild task for ILRepack which is an open-source alternative to ILMerge. This library uses ILRepack.lib so it is easier to upgrade. - MSBuild task for ILRepack which is an open-source alternative to ILMerge. - https://github.com/ravibpatel/ILRepack.Lib.MSBuild.Task/releases - RBSoft - en-US - ILRepack,MSBuild,ILMerge alternative,merge assemblies - - - - - + + ILRepack.Lib.MSBuild.Task + 2.0.22 + ILRepack.Lib.MSBuild.Task + RBSoft + rbsoft + false + MIT + https://github.com/ravibpatel/ILRepack.Lib.MSBuild.Task + MSBuild task for ILRepack which is an open-source alternative to ILMerge. This library uses ILRepack.Lib so it is easier to upgrade. + MSBuild task for ILRepack which is an open-source alternative to ILMerge. + https://github.com/ravibpatel/ILRepack.Lib.MSBuild.Task/releases + RBSoft + en-US + ILRepack,MSBuild,ILMerge alternative,merge assemblies + + + + + diff --git a/LICENSE.md b/LICENSE.md index eb82b3c..c369526 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,9 +1,10 @@ License ======= + - Copyright (c) 2004, Evain Jb (jb@evain.net) - Modified 2007 Marcus Griep (neoeinstein+boo@gmail.com) - Modified 2013 Peter Sunde (peter.sunde@gmail.com) -- Modified 2016 Ravi Patel (www.rbsoft.org) +- Modified 2016-2024 Ravi Patel (rbsoft.org) All rights reserved. @@ -13,7 +14,7 @@ modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the + notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of Evain Jb nor the names of its contributors may be used to endorse or promote products derived from this software diff --git a/README.md b/README.md index 1582197..0c48513 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,8 @@ MSBuild task for [ILRepack](https://github.com/gluck/il-repack) which is an open ## Usage -You just need to install NuGet package to merge all your project dependencies. If you want to customize the process then you can create a file named "ILRepack.targets" in your project folder. You can create it like shown below. +You just need to install NuGet package to merge all your project dependencies. If you want to customize the process then +you can create a file named "ILRepack.targets" in your project folder. You can create it like shown below. ### Example "ILRepack.targets" @@ -47,7 +48,8 @@ You just need to install NuGet package to merge all your project dependencies. I ## Configuration -You need to create "ILRepack.Config.props" file in your project folder to configure the behavior of ILRepack.Lib.MSBuild.Task. +You need to create "ILRepack.Config.props" file in your project folder to configure the behavior of +ILRepack.Lib.MSBuild.Task. ```xml @@ -57,11 +59,13 @@ You need to create "ILRepack.Config.props" file in your project folder to config ``` -You can specify following options inside the <PropertyGroup> element to configure the behavior of the ILRepack task. +You can specify following options inside the <PropertyGroup> element to configure the behavior of the ILRepack +task. ### Specify your custom Targets file path -If you don't want to add "ILRepack.targets" file in your project folder then you can specify your targets file path as shown below. +If you don't want to add "ILRepack.targets" file in your project folder then you can specify your targets file path as +shown below. ```xml $(SolutionDir)ILRepack.targets @@ -69,7 +73,8 @@ If you don't want to add "ILRepack.targets" file in your project folder then you ### Specify Key File to use for signing -You can specify the path of the SNK file you want to use for signing your assembly as shown below. This configuration option only applies if you are using default targets file provided in NuGet package. +You can specify the path of the SNK file you want to use for signing your assembly as shown below. This configuration +option only applies if you are using default targets file provided in NuGet package. ```xml $(ProjectDir)ILRepack.snk @@ -77,7 +82,8 @@ You can specify the path of the SNK file you want to use for signing your assemb ### Specify whether to clear directory after merging -If you are using default targets file then you may notice that it clears Output directory after merging dependencies. You can turn this functionality off by setting ClearOutputDirectory to False as shown below. +If you are using default targets file then you may notice that it clears Output directory after merging dependencies. +You can turn this functionality off by setting ClearOutputDirectory to False as shown below. ```xml False @@ -87,9 +93,9 @@ If you are using default targets file then you may notice that it clears Output | Option | Description | |----------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------| -| KeyFile | Specifies a KeyFile to sign the output assembly. | -| KeyContainer | Specifies a KeyContainer to use. | -| LogFile | Specifies a logfile to output log information. | +| KeyFile | Specifies a key file to sign the output assembly. | +| KeyContainer | Specifies a key container to use. | +| LogFile | Specifies a log file to output log information. | | Union | Merges types with identical names into one. | | DebugInfo | Enable/disable symbol file generation. | | AttributeFile | Take assembly attributes from the given assembly file. | @@ -105,11 +111,12 @@ If you are using default targets file then you may notice that it clears Output | InternalizeExclude | If Internalize is set to true, any which match these regular expressions will not be internalized. If Internalize is false, then this property is ignored. | | OutputFile | Output name for the merged assembly. | | InputAssemblies | List of assemblies that will be merged. | -| DelaySign | Set the keyfile, but don't sign the assembly. | +| DelaySign | Set the key file, but don't sign the assembly. | | AllowDuplicateResources | Allows duplicating resources in the output assembly. | -| AllowedDuplicateNamespaces | Allows the specified namespaces for being duplicated into input assemblies. Multiple namespaces are delimited by ",". | +| AllowedDuplicateNamespaces | Allows the specified namespaces from being duplicated into input assemblies. Multiple namespaces are delimited by ",". | | ZeroPeKind | Allows assemblies with Zero PeKind (but obviously only IL will get merged). | | Parallel | Use as many CPUs as possible to merge the assemblies. | +| PauseBeforeExit | Pause execution once completed (good for debugging). | | Verbose | Additional debug information during the merge that will be outputted to LogFile. | | NoRepackRes | Does not add the embedded resource 'ILRepack.List' with all merged assembly names. | | Wildcards | Allows (and resolves) file wildcards (e.g., `*.dll`) in input assemblies. | diff --git a/appveyor.yml b/appveyor.yml index f322021..d0a6000 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -9,22 +9,22 @@ clone_folder: c:\projects\ILRepack.Lib.MSBuild.Task platform: Any CPU configuration: Release install: -- nuget install secure-file -ExcludeVersion + - nuget install secure-file -ExcludeVersion before_build: -- cmd: nuget restore -- secure-file\tools\secure-file -decrypt "c:\projects\ILRepack.Lib.MSBuild.Task\ILRepack.Lib.MSBuild.Task\ILRepack.Lib.MSBuild.Task.snk.enc" -secret %my_secret% + - cmd: nuget restore + - secure-file\tools\secure-file -decrypt "c:\projects\ILRepack.Lib.MSBuild.Task\ILRepack.Lib.MSBuild.Task\ILRepack.Lib.MSBuild.Task.snk.enc" -secret %my_secret% artifacts: -- path: ILRepack.Lib.MSBuild.Task\bin\Release\net472\ILRepack.Lib.MSBuild.Task.%my_version%.nupkg - name: ILRepack.Lib.MSBuild.Task.%my_version%.nupkg + - path: ILRepack.Lib.MSBuild.Task\bin\Release\net472\ILRepack.Lib.MSBuild.Task.%my_version%.nupkg + name: ILRepack.Lib.MSBuild.Task.%my_version%.nupkg deploy: -- provider: NuGet - api_key: - secure: niHgnyEf7tXImWdR3VEJ38p/3gaV7OiSijx0YUmycHTkh12id6zMKkTS+S2XjF2J - skip_symbols: false - artifact: ILRepack.Lib.MSBuild.Task.%my_version%.nupkg - on: - branch: master # release from master branch only - appveyor_repo_tag: true # deploy on tag push only + - provider: NuGet + api_key: + secure: niHgnyEf7tXImWdR3VEJ38p/3gaV7OiSijx0YUmycHTkh12id6zMKkTS+S2XjF2J + skip_symbols: false + artifact: ILRepack.Lib.MSBuild.Task.%my_version%.nupkg + on: + branch: master # release from master branch only + appveyor_repo_tag: true # deploy on tag push only