static int Main(string[] args) { try { var merge = new ILMerge { OutputFile = "RavenDb.exe", TargetKind = ILMerge.Kind.SameAsPrimaryAssembly, Version = new Version(4, 0) }; merge.SetInputAssemblies( new[] { @"Raven.Server.exe", @"Raven.Database.dll", @"Esent.Interop.dll", @"ICSharpCode.NRefactory.dll", @"Lucene.Net.dll", @"log4net.dll", @"Newtonsoft.Json.dll", }); merge.SetTargetPlatform("4", Path.GetDirectoryName(typeof(object).Assembly.Location)); merge.Merge(); return 0; } catch (Exception e) { Console.WriteLine(e); return -1; } }
public void LinkLibrary() { ILMerge merger = new ILMerge(); merger.OutputFile = _outputFile; _inputAssemblies.Insert(0, _inputFile); merger.SetInputAssemblies((string[])_inputAssemblies.ToArray()); merger.SetSearchDirectories(new string[] { "..\\runtime", "..\\library" }); merger.TargetKind = ILMerge.Kind.Dll; merger.Merge(); }
private static void Merge(string outputFile, string[] inputAssemblies) { var merge = new ILMerge { OutputFile = outputFile, TargetKind = ILMerge.Kind.SameAsPrimaryAssembly, Version = new Version(4, 0), }; merge.SetInputAssemblies(inputAssemblies); merge.SetTargetPlatform("4", Path.GetDirectoryName(typeof(object).Assembly.Location)); merge.Merge(); }
private static void Main(string[] args) { try { var commandLineProcessor = new CommandLineProcessor(); var options = commandLineProcessor.Process(args); var semanticVersionAnalyzer = new SemanticVersionAnalyzer(); var result = semanticVersionAnalyzer.Analyze(options.PreviousAssembly, options.CurrentAssembly, options.ProposedVersionNumber); if (result.BreakingChangesDetected) { var dynamicAssembly = new CodeGenerator().GenerateVersionDetailsDynamicAssembly(options.CurrentAssembly, result.VersionNumber, result.VersionNumber, result.VersionNumber); var ilMerge = new ILMerge { TargetKind = ILMerge.Kind.Dll, AttributeFile = dynamicAssembly, OutputFile = options.OutputFile }; ilMerge.SetInputAssemblies(new[] { options.CurrentAssembly } ); ilMerge.Merge(); Console.WriteLine("##teamcity[buildNumber '" + result.VersionNumber + "']"); } } catch (Exception exception) { var aggregateException = exception as AggregateException; if (aggregateException != null) { foreach (var e in aggregateException.InnerExceptions) { Console.WriteLine(e.Message); } } else { Console.WriteLine(exception.Message); } } }
protected virtual void MergeStaticProxyFactoryWithProxies(Assembly staticProxyAssembly, Assembly proxyAssembly, Assembly[] referenceAssemblies, string outputPath) { ILMerge merger = new ILMerge(); List<string> searchDirectories = new List<string>(referenceAssemblies.Length); foreach(Assembly referenceAssembly in referenceAssemblies ) { string searchDirectory = Path.GetDirectoryName(referenceAssembly.Location); if (!searchDirectories.Contains(searchDirectory)) { searchDirectories.Add(searchDirectory); } } merger.SetSearchDirectories(searchDirectories.ToArray()); merger.SetInputAssemblies(new string[] { staticProxyAssembly.Location, proxyAssembly.Location }); merger.OutputFile = outputPath; merger.Merge(); }
/// <summary> /// Performs packing. /// </summary> public void Run() { // Steps // 1) Mono.Cecil: Determine assembly dependencies // 2) ILMerge: Merge exe into a single assembly // 3) Mono.Linker var includeMergeListRegex = new string[] { @"SharpDX\..*" }; // Step 1 : Mono.Cecil: Determine assembly dependencies var assembly = AssemblyDefinition.ReadAssembly(MainAssembly); var corlib = (AssemblyNameReference)assembly.MainModule.TypeSystem.Corlib; bool isNet40 = corlib.Version.Major == 4; var paths = new List<string>(); var fromDirectory = Path.GetDirectoryName(assembly.MainModule.FullyQualifiedName); // Load SharpDX assemblies AddAssemblies(assembly, paths, fromDirectory, includeMergeListRegex); // Load assemblies to link foreach (var assemblyToLinkName in AssembliesToLink) { var assemblyToLink = AssemblyDefinition.ReadAssembly(assemblyToLinkName); paths.Add(assemblyToLink.MainModule.FullyQualifiedName); } // Step 2: ILMerge: Merge exe into a single assembly var merge = new ILMerge(); String[] files = paths.ToArray(); if (!Directory.Exists(OutputDirectory)) Directory.CreateDirectory(OutputDirectory); //Here we get the first file name (which was the .exe file) and use that // as the output String strOutputFile = System.IO.Path.GetFileName(files[0]); merge.OutputFile = OutputDirectory + "\\" + strOutputFile; merge.SetInputAssemblies(files); merge.DebugInfo = false; merge.CopyAttributes = true; merge.AllowMultipleAssemblyLevelAttributes = true; merge.XmlDocumentation = false; // Special case for v4 framework // See http://research.microsoft.com/en-us/people/mbarnett/ilmerge.aspx if (isNet40) { // Retrieve the install root path for the framework string installRoot = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\.NetFramework", false).GetValue("InstallRoot").ToString(); var directorties = Directory.GetDirectories(installRoot, "v4.*"); if (directorties.Length == 0) UsageError(string.Format(System.Globalization.CultureInfo.InvariantCulture, "Cannot found any .Net 4.0 directory from [{0}] ", installRoot)); merge.SetTargetPlatform("v4", directorties[0]); } merge.Merge(); // Step 3: Mono.Linker if (!NoLinker) { var pipeline = GetStandardPipeline(); var context = new LinkContext(pipeline) {CoreAction = AssemblyAction.Skip, OutputDirectory = OutputDirectory}; context.OutputDirectory = OutputDirectory; var mainAssemblyDirectory = new DirectoryInfo(Path.GetDirectoryName(Path.GetFullPath(MainAssembly))); context.Resolver.AddSearchDirectory(mainAssemblyDirectory.FullName); // Load assembly merged previously by ILMerge var mergedAssemblyDefinition = context.Resolve(merge.OutputFile); // Create Mono.Linker default pipeline pipeline = GetStandardPipeline(); pipeline.PrependStep(new ResolveFromAssemblyStep(mergedAssemblyDefinition)); // Add custom step for ComObject constructors pipeline.AddStepBefore(typeof (SweepStep), new ComObjectStep()); pipeline.Process(context); } Console.WriteLine("Assembly successfully packed to [{0}]", merge.OutputFile); }
private static void CreateSignedParser(string gherkinParserFullPath, Version version, string keyFullPath, string outputFileFullPath) { Console.WriteLine("Generating signed parser..."); ILMerge ilMerge = new ILMerge(); ilMerge.KeyFile = keyFullPath; ilMerge.Version = version; ilMerge.SetInputAssemblies(new[] { gherkinParserFullPath }); ilMerge.OutputFile = outputFileFullPath; ilMerge.TargetKind = ILMerge.Kind.Dll; ilMerge.Log = true; ilMerge.Merge(); Console.WriteLine(); }
static void Main(string[] args) { #if !DEBUG Version networkCommsVersion = new Version(Assembly.ReflectionOnlyLoad("NetworkCommsDotNet").FullName. Split(','). Where(s => s.Split('=').Length == 2). ToDictionary(s => s.Split('=')[0].Trim(), s => s.Split('=')[1].Trim())["Version"]); string targetPlatform = "v2"; string msCoreLibDirectory = @"C:\Windows\Microsoft.NET\Framework\v2.0.50727"; bool coreBuildEnabled = false; bool completeBuildEnabled = true; #region Merge Core if (coreBuildEnabled) { Directory.CreateDirectory("MergedCore"); File.Delete(@"MergedCore\MergeLog.txt"); ILMerge coreMerge = new ILMerge(); List<string> coreAssembles = new List<string>(); coreAssembles.Add("NetworkCommsDotNet.dll"); coreAssembles.Add("protobuf-net.dll"); coreAssembles.Add("ProtobufSerializer.dll"); coreMerge.SetInputAssemblies(coreAssembles.ToArray()); coreMerge.Version = networkCommsVersion; coreMerge.TargetKind = ILMerge.Kind.Dll; coreMerge.SetTargetPlatform(targetPlatform, msCoreLibDirectory); coreMerge.XmlDocumentation = true; coreMerge.KeyFile = "networkcomms.net.snk"; coreMerge.OutputFile = @"MergedCore\NetworkCommsDotNetCore.dll"; coreMerge.Log = true; coreMerge.LogFile = @"MergedCore\MergeLog.txt"; coreMerge.Merge(); } #endregion #region Merge Complete if (completeBuildEnabled) { Directory.CreateDirectory("MergedComplete"); File.Delete(@"MergedComplete\MergeLog.txt"); ILMerge completeMerge = new ILMerge(); List<string> completeAssembles = new List<string>(); completeAssembles.Add("NetworkCommsDotNet.dll"); completeAssembles.Add("protobuf-net.dll"); completeAssembles.Add("ProtobufSerializer.dll"); completeAssembles.Add("ICSharpCode.SharpZipLib.dll"); completeAssembles.Add("SharpZipLibCompressor.dll"); //completeAssembles.Add("QuickLZCompressor.dll"); completeAssembles.Add("InTheHand.Net.Personal.dll"); completeMerge.SetInputAssemblies(completeAssembles.ToArray()); completeMerge.Version = networkCommsVersion; completeMerge.TargetKind = ILMerge.Kind.Dll; completeMerge.SetTargetPlatform(targetPlatform, msCoreLibDirectory); completeMerge.XmlDocumentation = true; completeMerge.KeyFile = "networkcomms.net.snk"; completeMerge.OutputFile = @"MergedComplete\NetworkCommsDotNetComplete.dll"; completeMerge.Log = true; completeMerge.LogFile = @"MergedComplete\MergeLog.txt"; completeMerge.Merge(); } #endregion #endif }
static void Main(string[] args) { #if !DEBUG Version networkCommsVersion = new Version(Assembly.ReflectionOnlyLoad("NetworkCommsDotNet").FullName. Split(','). Where(s => s.Split('=').Length == 2). ToDictionary(s => s.Split('=')[0].Trim(), s => s.Split('=')[1].Trim())["Version"]); string targetPlatform = "v4"; string msCoreLibDirectory = @"C:\Windows\Microsoft.NET\Framework\v4.0.30319"; bool coreBuildEnabled = false; bool completeBuildEnabled = true; #region Merge Core if (coreBuildEnabled) { Directory.CreateDirectory("MergedCore"); File.Delete(@"MergedCore\MergeLog.txt"); ILMerge coreMerge = new ILMerge(); List <string> coreAssembles = new List <string>(); coreAssembles.Add("NetworkCommsDotNet.dll"); coreAssembles.Add("protobuf-net.dll"); coreAssembles.Add("ProtobufSerializer.dll"); coreMerge.SetInputAssemblies(coreAssembles.ToArray()); coreMerge.Version = networkCommsVersion; coreMerge.TargetKind = ILMerge.Kind.Dll; coreMerge.SetTargetPlatform(targetPlatform, msCoreLibDirectory); coreMerge.XmlDocumentation = true; coreMerge.KeyFile = "networkcomms.net.snk"; coreMerge.OutputFile = @"MergedCore\NetworkCommsDotNetCore.dll"; coreMerge.Log = true; coreMerge.LogFile = @"MergedCore\MergeLog.txt"; coreMerge.Merge(); } #endregion #region Merge Complete if (completeBuildEnabled) { Directory.CreateDirectory("MergedComplete"); File.Delete(@"MergedComplete\MergeLog.txt"); ILMerge completeMerge = new ILMerge(); List <string> completeAssembles = new List <string>(); completeAssembles.Add("NetworkCommsDotNet.dll"); completeAssembles.Add("protobuf-net.dll"); completeAssembles.Add("ProtobufSerializer.dll"); completeAssembles.Add("ICSharpCode.SharpZipLib.dll"); completeAssembles.Add("SharpZipLibCompressor.dll"); completeAssembles.Add("QuickLZCompressor.dll"); completeAssembles.Add("InTheHand.Net.Personal.dll"); completeAssembles.Add("JSONSerializer.dll"); completeAssembles.Add("Newtonsoft.Json.dll"); completeAssembles.Add("DistributedFileSystem.dll"); completeAssembles.Add("RemoteProcedureCalls.dll"); completeMerge.SetInputAssemblies(completeAssembles.ToArray()); completeMerge.Version = networkCommsVersion; completeMerge.TargetKind = ILMerge.Kind.Dll; completeMerge.SetTargetPlatform(targetPlatform, msCoreLibDirectory); completeMerge.XmlDocumentation = true; completeMerge.KeyFile = "networkcomms.net.snk"; completeMerge.OutputFile = @"MergedComplete\NetworkCommsDotNetComplete.dll"; completeMerge.Log = true; completeMerge.LogFile = @"MergedComplete\MergeLog.txt"; completeMerge.Merge(); } #endregion #endif }
/// <summary> /// Performs packing. /// </summary> public void Run() { // Steps // 1) Mono.Cecil: Determine assembly dependencies // 2) ILMerge: Merge exe into a single assembly // 3) Mono.Linker var includeMergeListRegex = new string[] { @"SharpDX\..*" }; // Step 1 : Mono.Cecil: Determine assembly dependencies var assembly = AssemblyDefinition.ReadAssembly(MainAssembly); var corlib = (AssemblyNameReference)assembly.MainModule.TypeSystem.CoreLibrary; bool isNet40 = corlib.Version.Major == 4; var paths = new List <string>(); var fromDirectory = Path.GetDirectoryName(assembly.MainModule.FullyQualifiedName); // Load SharpDX assemblies AddAssemblies(assembly, paths, fromDirectory, includeMergeListRegex); // Load assemblies to link foreach (var assemblyToLinkName in AssembliesToLink) { var assemblyToLink = AssemblyDefinition.ReadAssembly(assemblyToLinkName); paths.Add(assemblyToLink.MainModule.FullyQualifiedName); } // Step 2: ILMerge: Merge exe into a single assembly var merge = new ILMerge(); String[] files = paths.ToArray(); if (!Directory.Exists(OutputDirectory)) { Directory.CreateDirectory(OutputDirectory); } //Here we get the first file name (which was the .exe file) and use that // as the output String strOutputFile = System.IO.Path.GetFileName(files[0]); merge.OutputFile = OutputDirectory + "\\" + strOutputFile; merge.SetInputAssemblies(files); merge.DebugInfo = false; merge.CopyAttributes = true; merge.AllowMultipleAssemblyLevelAttributes = true; merge.XmlDocumentation = false; // Special case for v4 framework // See http://research.microsoft.com/en-us/people/mbarnett/ilmerge.aspx if (isNet40) { // Retrieve the install root path for the framework string installRoot = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\.NetFramework", false).GetValue("InstallRoot").ToString(); var directorties = Directory.GetDirectories(installRoot, "v4.*"); if (directorties.Length == 0) { UsageError(string.Format(System.Globalization.CultureInfo.InvariantCulture, "Cannot found any .Net 4.0 directory from [{0}] ", installRoot)); } merge.SetTargetPlatform("v4", directorties[0]); } merge.Merge(); // Step 3: Mono.Linker if (!NoLinker) { var pipeline = GetStandardPipeline(); var context = new LinkContext(pipeline) { CoreAction = AssemblyAction.Skip, OutputDirectory = OutputDirectory }; context.OutputDirectory = OutputDirectory; var mainAssemblyDirectory = new DirectoryInfo(Path.GetDirectoryName(Path.GetFullPath(MainAssembly))); context.Resolver.AddSearchDirectory(mainAssemblyDirectory.FullName); // Load assembly merged previously by ILMerge var mergedAssemblyDefinition = context.Resolve(merge.OutputFile); // Create Mono.Linker default pipeline pipeline = GetStandardPipeline(); pipeline.PrependStep(new ResolveFromAssemblyStep(mergedAssemblyDefinition)); // Add custom step for ComObject constructors pipeline.AddStepBefore(typeof(SweepStep), new ComObjectStep()); pipeline.Process(context); } Console.WriteLine("Assembly successfully packed to [{0}]", merge.OutputFile); }
static void Main(string[] args) { #if !DEBUG Version networkCommsVersion = new Version(Assembly.ReflectionOnlyLoad("NetworkCommsDotNet").FullName. Split(','). Where(s => s.Split('=').Length == 2). ToDictionary(s => s.Split('=')[0].Trim(), s => s.Split('=')[1].Trim())["Version"]); string targetPlatform = "v4"; string msCoreLibDirectory = @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v4.4"; bool coreBuildEnabled = false; bool completeBuildEnabled = false; #region Merge Core if (coreBuildEnabled) { Directory.CreateDirectory("MergedCore"); File.Delete(@"MergedCore\MergeLog.txt"); ILMerge coreMerge = new ILMerge(); List <string> coreAssembles = new List <string>(); coreAssembles.Add("NetworkCommsDotNet.dll"); coreAssembles.Add("protobuf-net.dll"); coreAssembles.Add("ProtobufSerializer.dll"); coreMerge.SetInputAssemblies(coreAssembles.ToArray()); coreMerge.Version = networkCommsVersion; coreMerge.TargetKind = ILMerge.Kind.Dll; coreMerge.SetTargetPlatform(targetPlatform, msCoreLibDirectory); coreMerge.XmlDocumentation = true; coreMerge.KeyFile = "networkcomms.net.snk"; coreMerge.OutputFile = @"MergedCore\NetworkCommsDotNetCore.dll"; coreMerge.Log = true; coreMerge.LogFile = @"MergedCore\MergeLog.txt"; coreMerge.Merge(); } #endregion #region Merge Complete if (completeBuildEnabled) { Directory.CreateDirectory("MergedComplete"); File.Delete(@"MergedComplete\MergeLog.txt"); ILMerge completeMerge = new ILMerge(); List <string> completeAssembles = new List <string>(); completeAssembles.Add("NetworkCommsDotNet.dll"); completeAssembles.Add("protobuf-net.dll"); completeAssembles.Add("ProtobufSerializer.dll"); completeMerge.SetInputAssemblies(completeAssembles.ToArray()); completeMerge.Version = networkCommsVersion; completeMerge.TargetKind = ILMerge.Kind.Dll; completeMerge.SetTargetPlatform(targetPlatform, msCoreLibDirectory); completeMerge.XmlDocumentation = true; completeMerge.KeyFile = "networkcomms.net.snk"; completeMerge.OutputFile = @"MergedComplete\NetworkCommsDotNetComplete.dll"; completeMerge.Log = true; completeMerge.LogFile = @"MergedComplete\MergeLog.txt"; completeMerge.Merge(); } #endregion #endif }
private void btnMerge_Click(object sender, EventArgs e) { if (!IsValidateInput()) { return; } merge.Log = this.chkLog.Checked; merge.LogFile = Path.Combine(Application.StartupPath, "log.txt"); List <string> lstInputFiles = new List <string>(); string primaryInputFile = this.txtMainAsm.Text; lstInputFiles.Add(primaryInputFile);//The first element of the array is considered to be the primary assembly. foreach (ListBoxItem item in this.listBox.Items) { lstInputFiles.Add(item.FullFileName); } merge.SetInputAssemblies(lstInputFiles.ToArray()); string outPutfile = Path.Combine(txtOutPath.Text, txtOutFileName.Text); FileInfo fiPrimeray = new FileInfo(primaryInputFile); string ext = fiPrimeray.Extension; FileInfo fi = new FileInfo(outPutfile); if (string.IsNullOrEmpty(fi.Extension)) { outPutfile += ext; fi = new FileInfo(outPutfile); } merge.OutputFile = outPutfile; string targetPlatform = "v4"; foreach (Control ctrl in groupBox2.Controls) { RadioButton rdo = ctrl as RadioButton; if (rdo != null) { targetPlatform = rdo.Text; break; } } merge.SetTargetPlatform(targetPlatform, string.Empty);//// merge.TargetKind = ILMerge.Kind.SameAsPrimaryAssembly; var errors = 0; Thread t = new Thread(() => { this.BeginInvoke(new Action(() => { progressBar1.Visible = true; })); try { merge.Merge(); } catch (Exception ex) { errors++; Loghelper.BugLog(this.GetType().ToString(), ex.Message, ex.StackTrace); } this.BeginInvoke(new Action(() => { progressBar1.Visible = false; MessageBox.Show("合并完成!" + (errors > 0 ? (" 过程中有" + errors + "处异常,请查看日志。") : ""), "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); })); }); t.IsBackground = true; t.Start(); }
private static void CreateSignedParser(string gherkinParserFullPath, Version version, string keyFullPath, string outputFileFullPath) { Console.WriteLine("Generating signed parser..."); ILMerge ilMerge = new ILMerge(); ilMerge.KeyFile = keyFullPath; ilMerge.Version = version; string simpleJsonPath = Path.Combine(Path.GetDirectoryName(gherkinParserFullPath), "com.googlecode.json-simple-json-simple.dll"); string base46Path = Path.Combine(Path.GetDirectoryName(gherkinParserFullPath), "net.iharder-base64.dll"); ilMerge.SetInputAssemblies(new[] { gherkinParserFullPath, simpleJsonPath, base46Path }); ilMerge.OutputFile = outputFileFullPath; ilMerge.TargetKind = ILMerge.Kind.Dll; ilMerge.Log = true; ilMerge.Merge(); Console.WriteLine(); }
static void Main(string[] args) { ReadConfiguration(); ParseArguments(args); var providerOptions = new Dictionary<string, string>(); providerOptions.Add("CompilerVersion", "v3.5"); CSharpCodeProvider cp = new CSharpCodeProvider(providerOptions); CompilerParameters cparams = new CompilerParameters(); cparams.GenerateExecutable = true; cparams.OutputAssembly = "Setup_Temp.exe"; cparams.ReferencedAssemblies.AddRange(FrwkAssemblyRefs.Concat(ExtAssemblyRefs).ToArray()); cparams.EmbeddedResources.Add(PackageFile); string libpathstr = string.Empty; foreach (var path in LibPaths) { libpathstr += "\"" + path + "\" "; } if (LibPaths.Length > 0) { cparams.CompilerOptions = String.Format("/lib:{0}", libpathstr); } // Add modules if (ModuleRefs.Length > 0) { StringBuilder sb = new StringBuilder(); sb.Append("/addmodule:"); foreach ( var mr in ModuleRefs ) { sb.Append(mr + " "); } cparams.CompilerOptions += sb.ToString(); } CompilerResults cr = cp.CompileAssemblyFromFile(cparams, Sources); cr.Errors.OfType<CompilerError>().ToList() .ForEach((e) => Console.WriteLine((e.IsWarning ? "Warning : " : "Error : ") + e.ErrorText)); foreach ( CompilerError r in cr.Errors ) { if (!r.IsWarning) { return; } } // Merge the IL to create a single assembly ILMerge merger = new ILMerge(); merger.OutputFile = "Setup.exe"; string[] primaryAssembly = new string[] { "Setup_Temp.exe" }; string[] assemblies = primaryAssembly.Concat(ExtAssemblyRefs).ToArray(); merger.SetInputAssemblies(assemblies); merger.Merge(); File.Delete("Setup_Temp.exe"); }
protected override void ExecuteTask() { ILMerge = new ILMerge(); ILMerge.AttributeFile = m_attributeFile; ILMerge.Closed = m_closed; ILMerge.CopyAttributes = m_copyAttributes; ILMerge.DebugInfo = m_debugInfo; ILMerge.ExcludeFile = m_excludeFile; ILMerge.Internalize = m_internalize; ILMerge.LogFile = m_logFile; ILMerge.Log = m_log; ILMerge.OutputFile = m_outputFile; ILMerge.KeyFile = m_keyFile; switch (m_targetKind.ToLower()) { case "winexe": ILMerge.TargetKind = ILMerge.Kind.WinExe; break; case "exe": ILMerge.TargetKind = ILMerge.Kind.Exe; break; case "dll": ILMerge.TargetKind = ILMerge.Kind.Dll; break; case "sameasprimary": ILMerge.TargetKind = ILMerge.Kind.SameAsPrimaryAssembly; break; default: throw new BuildException( "TargetKind should be [exe|dll|winexe|sameasprimary]"); } string[] assemblies = new string[m_assemblies.FileNames.Count + 1]; if (this.m_primaryAssembly.FileNames.Count != 1) { this.Log(Level.Error, "Only one primary assembly is allowed in the <primaryassembly> fileset, but found {0}.", this.m_primaryAssembly.FileNames.Count); return; } assemblies[0] = this.m_primaryAssembly.FileNames[0]; for (int i = 1; i < assemblies.Length; i++) { assemblies[i] = m_assemblies.FileNames[i-1]; } ILMerge.SetInputAssemblies(assemblies); List<string> searchPath = new List<string>(); searchPath.Add("."); if (LibraryPath != null) { foreach (string libpath in LibraryPath.FileNames) { searchPath.Add(libpath); } } ILMerge.SetSearchDirectories(searchPath.ToArray()); try { this.Log(Level.Info, "Merging {0} assembl{1} to '{2}'.", this.m_assemblies.FileNames.Count, (this.m_assemblies.FileNames.Count != 1) ? "ies" : "y", this.m_outputFile); ILMerge.Merge(); } catch (Exception e) { throw new BuildException("Failed to merge assemblies", e); } }