public void WithAssemblyInformationalVersion_WithVersion_BuildsCorrectAssemblyInfo()
        {
            var builder = new AssemblyInfoBuilder(new CSharpCodeProvider());
            builder.WithAssemblyInformationalVersion("4.3.2.1 Beta 4");
            var assemblyInfo = builder.Build();

            Assert.Contains("[assembly: System.Reflection.AssemblyInformationalVersionAttribute(\"4.3.2.1 Beta 4\")]", assemblyInfo);
        }
        public void WithAssemblyInformationalVersion_WithSpecialChars_BuildsCorrectAssemblyInfo()
        {
            var builder = new AssemblyInfoBuilder(new CSharpCodeProvider());
            builder.WithAssemblyInformationalVersion("4.3.2.1 code-named \"Maverick\"");
            var assemblyInfo = builder.Build();

            Assert.Contains("[assembly: System.Reflection.AssemblyInformationalVersionAttribute(\"4.3.2.1 code-named \\\"Maverick\\\"\")]", assemblyInfo);
        }
        public void WithAssemblyInformationalVersion_CanBeCalledMoreThanOnce()
        {
            var builder = new AssemblyInfoBuilder(new CSharpCodeProvider());
            builder
                .WithAssemblyInformationalVersion("4.3.2.1 code-named \"Maverick\"")
                .WithAssemblyInformationalVersion("3.0 code-named \"Maverick\"");
            var assemblyInfo = builder.Build();

            Assert.Contains("[assembly: System.Reflection.AssemblyInformationalVersionAttribute(\"3.0 code-named \\\"Maverick\\\"\")]", assemblyInfo);
        }
        /// <summary>
        /// Executes the task.
        /// </summary>
        /// <returns>
        /// <see langword="true"/> if the task was executed successfully; otherwise, <see langword="false"/>.
        /// </returns>
        public override bool Execute()
        {
            CodeDomProvider provider = CodeDomProvider.CreateProvider(Language);
            AssemblyInfoBuilder generator = new AssemblyInfoBuilder(CodeDomProvider.CreateProvider(Language));

            if (CLSCompliant)
            {
                Log.LogMessage("Adding CLSCompliantAttribute.");
                generator.WithCLSCompliant(true);
            }

            if (!string.IsNullOrWhiteSpace(AssemblyVersion))
            {
                Log.LogMessage("Adding AssemblyVersionAttribute ({0}).", AssemblyVersion);
                generator.WithAssemblyVersion(new Version(AssemblyVersion));
            }

            if (!string.IsNullOrWhiteSpace(AssemblyFileVersion))
            {
                Log.LogMessage("Adding AssemblyFileVersionAttribute ({0}).", AssemblyFileVersion);
                generator.WithAssemblyFileVersion(new Version(AssemblyFileVersion));
            }

            if (!string.IsNullOrWhiteSpace(AssemblyInformationalVersion))
            {
                Log.LogMessage("Adding AssemblyInformationalVersionAttribute ({0}).", AssemblyInformationalVersion);
                generator.WithAssemblyInformationalVersion(AssemblyInformationalVersion);
            }

            generator.Save(FileName);
            Log.LogMessage("AssemblyInfo file saved to '{0}'.", FileName);

            return true;
        }