diff --git a/doc/ChangeLog.template.html b/doc/ChangeLog.template.html
new file mode 100644
index 00000000000..1f4fab202e4
--- /dev/null
+++ b/doc/ChangeLog.template.html
@@ -0,0 +1,1018 @@
+
+
+ SharpDevelop ChangeLog
+
+
+
+ SharpDevelop $INSERTVERSION$ ($INSERTDATE$)
+
+ - Update IronRuby to version 1.1
+ - Update NUnit to version 2.5.7
+
+
+
+
+
+
+ SharpDevelop 3.2 [3.2.0.5777] (05/08/2010)
+
+ - Update NUnit to 2.5.5.10112
+
+ - Bug fixes
+
+
+
+
+ SharpDevelop 3.2 RC2 [3.2.0.5698] (4/14/2010)
+
+ - IronRuby 1.0 support
+ - IronPython 2.6.1 support
+ - NUnit 2.5.4 support
+ - SDR: Runtime-modifiable reports
+
+
+
+
+ SharpDevelop 3.2 RC 1 [3.2.0.5505] (2/14/2010)
+
+ - IronRuby 1.0 RC2 support
+ - IronPython 2.6.1 RC1 support
+ - Microsoft F#, February 2010 CTP support
+ - SHFB 1.8.0.3 support
+ - SDR: Absolute and relative filenames for images
+ - SDR: Zoom in Report Viewer
+ - Fixed issue when building solution that had a mix of different project configurations
+
+ - Setup: SHFB and WiX help files no longer shipping with SharpDevelop
+
+
+
+
+ SharpDevelop 3.2 CTP [3.2.0.5396] (1/13/2010)
+
+ - IronRuby 1.0 RC1 support
+ - SharpDevelop Reports (SDR) re-integrated
+ - Update Boo to 0.9.3.3457
+
+
+
+
+ SharpDevelop 3.1.1 [3.1.1.5327] (12/12/2009)
+
+
+ - IronPython 2.6 support
+ - Smart indenting for Python
+ - Update to NUnit 2.5.3.9345
+ - Backports of debugger fixes
+ - NRefactory and code completion fixes
+
+
+
+
+ SharpDevelop 3.1 [3.1.0.4977] (09/21/2009)
+
+ - Update to NUnit 2.5.2
+
+ - Disable IME when ICSharpCode.TextEditor is used in .NET 4.0
+ - NRefactory fixes: show members from COM Interop assembly, inner classes inside generic classes
+
+
+
+
+ SharpDevelop 3.1 RC 2 [3.1.0.4890] (09/06/2009)
+
+ - Create new projects as x86 by default Blog Post
+ - Python support improved (forms designer and code converter). Note: Forms designer has no project resources support in 3.1.
+ - Rename ProjectTypeGuids.cs to work around bug in Visual Studio. Discussion Thread
+
+ - Update to PartCover 2.3
+ - Update to Boo 0.9.2.3383
+ - Update to SharpSvn 1.6004.1329
+
+
+
+
+ SharpDevelop 3.1 RC 1 [3.1.0.4545] (07/26/2009)
+
+ - Improved Python Windows Forms Designer and Code Conversion
+ - Debugging of Python application
+ - Basic support for profiling Unit Tests
+
+ - Small UI enhancements (e.g. "Open in explorer" context menu command for directories in project browser)
+ - Bugfixes
+ - Update Mono.Cecil revision 134535, NUnit 2.5.1, WiX 3.0 (3.0.5419), IronPython 2.0.2, F# May 2009 CTP
+
+
+
+
+ SharpDevelop 3.1 Beta 1 [3.1.0.4077] (05/14/2009)
+
+ - IronPython Windows Forms Designer
+ - Profiler for Managed Applications
+ - Subversion 1.6
+
+ - Update to Boo 0.9.1.3287
+ - Update to WiX 3.0.5301
+
+
+
+
+
+ SharpDevelop 3.0 Final [3.0.0.3800] (02/10/2009)
+
+ - F# project options fixed
+ - FormsDesigner assembly is strong-named
+ - Update to Boo 0.9.0.3203
+ - Lazy-loading of XML documentation for code completion
+
+ - Translation updates
+
+
+
+
+
+ SharpDevelop 3.0 Release Candidate [3.0.0.3775] (01/22/2009)
+
+ - F# addin improved on “F# not installed”
+ - Performance improvements for code conversion
+ - Improved auto-detection of FxCop
+ - NRefactory fixes
+ - Update Mono.Cecil to revision 122476
+
+ - Updated to WiX 3.0.4917.0
+ - Update to Boo 0.9.0.3153
+
+
+
+
+
+ SharpDevelop 3.0 Beta 3 [3.0.0.3683] (12/15/2008)
+
+ - IronPython 2.0 final included
+ - F# addin updated for September 2008 CTP
+ - Updated to WiX 3.0.4714
+ - Installer now checks that .NET 3.5 SP1 is installed
+ - Breaking NRefactory changes
+ - Text Editor memory and performance improvements
+ - VB.NET formatting strategy partially rewritten
+
+ - Full support for project resources in the Windows Forms designer
+ - Improved support for FxCop 1.36
+ - Debugger: Watch pad is implemented
+ - Debugger: Conditional breakpoints
+ - Improved exception reporting
+ - Add "SharpDevelop.exe /addindir:path" command line argument to allow testing addins without having to install them
+
+
+
+
+
+ SharpDevelop 3.0 Beta 2 [3.0.0.3437] (8/22/2008)
+
+ - StyleCop addin included
+ - Read-only project support
+ - Hex editor addin included
+ - Reflector addin included
+ - SharpRefactoring addin included
+
+ - Debugger: Console Pad (expression evaluation)
+ - Debugger: Attach to process
+ - Remove Windows.Forms dependency from ICSharpCode.Core
+ - Update to WiX 3.0.4415
+ - Update to IronPython 2.0 beta 4
+ - Update to SHFB 1.7
+ - Update NUnit to 2.4.8
+ - Update Boo to 0.8.2
+ - Remove unfinished Addins: SettingsEditor and WorkflowDesigner
+ - Removed SharpServerTools
+
+
+
+
+ SharpDevelop 3.0 Beta 1 [3.0.0.2970] (2/19/2008)
+
+ - Parallel build support for multi-core machines
+ - IronPython language support has been added
+
+ - F# language support has been added
+ - C# 3.0 code completion is implemented
+ - The debugger infrastructure has been rewritten
+ - Performance and stability work
+ - NDoc has been replaced with Sandcastle
+ - NCover has been replaced with PartCover
+ - WiX 3.0 has been integrated
+ - Mono and NAnt support no longer shipping in setup
+
+
+
+
+ SharpDevelop 2.2.1.2648 (8/8/2007)
+
+ - Bug fix: When creating a new project, ${USER} ${DATE} in the standard header etc. was not replaced with values.
+
+
+
+
+ SharpDevelop 2.2.1.2639 (8/8/2007)
+
+ - Includes SDR 2.2.0.235 (fixes wizard exception)
+ - NUnit updated to 2.4.2
+ - Bug fixes
+
+
+
+
+ SharpDevelop 2.2.0.2595 (6/28/2007)
+
+ - Additional and improved templates
+ - Boo support updated to version 0.7.8
+ - NUnit support updated to version 2.4.1
+ - WiX support updated to version 2.0.5325
+ - Cecil updated to version 0.5
+ - SharpDevelop Reports 2.2 included
+
+ - SharpDbTools has been removed from the 2.x series
+
+
+
+
+ SharpDevelop 2.1.0.2429 (3/7/2007 - Final)
+
+ - Bug fixes
+ - SharpDevelop Reports 2.1.0.125
+
+
+
+
+ SharpDevelop 2.1.0.2376 (2/9/2007 - RC1)
+
+ - Bug fixes
+ - WiX 2.0.4820.0
+ - NSvn 1.0.0.2727
+ - SharpDevelop Reports 2.1.0.105
+
+
+
+
+
+ SharpDevelop 2.1.0.2201 (12/23/2006 - Beta 3)
+
+ - Unit Testing News: Support for .NET 1.1
+ - Unit Testing News: STA support and more
+ - PDF Export support in SharpReport
+ - XML Editor has a visual editing environment (tree view)
+ - Solution configuration editor added
+ - Custom tool support implemented
+ - Change: MSBuild libraries are used instead of own implementation
+ - Change: Asynchronous wait dialog added
+ - Change: .NET 1.0 support dropped
+
+
+
+
+
+ SharpDevelop 2.1.0.2006 (11/2/2006 - Beta 2)
+
+ - Text editor performance improvements
+ - Code completion useable in standalone text editor control
+ - Resource toolkit added
+ - Widgets assembly created
+ - SharpReport reverse integration
+ - Updated to NUnit 2.2.8
+ - Updated to WiX 2.0.4415.0
+ - Updated to boo-0.7.6.2351
+ - Removed: Html export feature, Tip of the day dialog
+ - Namespace cleanup, file header fixing
+
+
+
+
+ SharpDevelop 2.1.0.1825 (9/19/2006 - Beta 1)
+
+
+ - FxCop Support
+ - Component Inspector
+ - WiX Support
+ - Incremental Search
+ - Code Navigation History
+ - List Data Sources in SharpReport
+ - XPath Queries
+ - Code Completion for Different Frameworks
+ - GoTo XML Schema Definition
+ - Targeting Different Frameworks
+ - Hosting of SharpDevelop in 3rd Party Applications
+
+
+
+
+ SharpDevelop 2.0.1.1710 (8/24/2006)
+
+
+
+
+ SharpDevelop 2.0.0.1591 (7/17/2006 - RTW)
+
+
+
+
+ SharpDevelop 2.0.0.1462 (6/5/2006 - RC2)
+
+
+
+
+ SharpDevelop 2.0.0.1413 (5/17/2006)
+
+ - Debugger improvements
+ - SharpDevelop2 always runs as a 32 Bit process
+ - Bug fixes in project subsystem and other areas
+
+
+
+
+
+ SharpDevelop 2.0.0.1291 (4/12/2006)
+
+ - Improvements: Debugger, Boo support, Project subsystem
+ - Added: ASP.NET templates
+ - Focus for Beta 3: Bug fixes
+
+
+
+
+
+ #develop 1.1.0.2124 (2/14/2006)
+
+
+
+
+ SharpDevelop 2.0.0.1135 (2/12/2006)
+
+ - Code Coverage
+ - Right-to-left fixes
+ - Support for Mono's GAC
+ - Beta 1 (12/19/2005) feature set improved and polished
+
+
+
+
+
+ #develop 1.1.0.2118 (12/12/2005)
+
+ - SharpReport refactoring
+ - IME fixes
+ - Start Page: link buttons replace JavaScript to run in High Security settings
+ - CloseView fixes
+
+
+
+
+ #develop 1.1.0.2081 (9/25/2005)
+
+ - SharpReport is separated out into a library
+ - NAnt tenplate added
+ - Bug fixes in code conversion
+ - Setting saving improved
+
+
+
+
+ #develop 1.1.0.2019 (8/7/2005)
+
+ - Updated WiX to v2.0.3116.0
+ - Selection & scrolling support in console addin
+ - Sortable Task View
+ - Netmodules support
+ - #report improvements
+ - Forms Designer bug fixes
+
+
+
+
+ #develop 1.1.0.1964 (5/19/2005)
+
+ - Command window addin
+ - #report localized
+ - Help 2.0 improvements
+ - Editor fixes (selection issues, freezing)
+ - Web References now async
+ - Updated Mono support
+
+
+
+
+ #develop 1.1.0.1913 (4/28/2005)
+
+ - NAnt Addin
+ - Help 2.0-compliant Help Addin
+ - XML Editor Addin (highlighting, completion and more)
+ - PInvoke Addin
+ - Web References
+ - #report Addin
+ - Read-only line manager (used for InitializeComponent)
+ - Updates to the WiX backend binding
+ - Third party tools updated to latest revisions
+
+
+
+
+
+ #develop 1.0.3.1761 (12/21/2004)
+
+ - NDoc updated to v1.3
+ - Code completion performance improvements
+ - Referenced assemblies are no longer locked
+ - Bug fixes across the board
+
+
+
+
+ #develop 1.0.2.1709a (11/30/2004)
+
+
+ - Forms designer bug fixed (InitializeComponent method code mangling)
+ - SharpZipLib moved to a separate repository
+ - Project converter fixes
+ - C++ linker invocation fix
+ - Flickering of new view content fixed
+ - NRefactory removed
+
+
+
+
+ #develop 1.0.2.1709 (11/10/2004)
+
+ - Loading of MC++ assemblies works (DirectX now has code completion)
+ - Resource handling improvements when importing VS.NET projects
+ - Improvements for the Addin Scout
+ - New Ctrl+Mousewheel text zoom feature
+ - Font selection now directly implemented in the General tab for text editor options
+ - Fix for "No form designer tab when combine name contains a space"
+
+
+
+
+ #develop 1.0.1.1649 (10/07/2004)
+
+ - Setup: GAC registration / deregistration now handled properly
+ - Setup: User settings are no longer removed on uninstall (starting with 1.0.1)
+ - UI: 20 languages are now shipping with #develop
+ - Internal: all assemblies now receive appropriate version information on build
+ - Tools: NProf 0.9alpha added
+ - Tools: VB.DOC integration updated to 0.4
+ - CC: Various fixes, please see ChangeLog.xml
+ - UI: Toolbox and editor window scrollbars are now sized properly
+ - Setup: Cleanup in tools
+
+
+
+
+
+ #develop 1.0.0.1550 (9/12/2004)
+
+ - Bug fix in output / task pane for compilation
+ - Translation updates
+
+
+
+
+ #develop 1.0.0.1543 (9/11/2004)
+
+ - Ctrl+Space for VB.NET
+ - Direct import of VS.NET .csproj and .vbproj files
+ - Code converter improvements
+ - NUnit 2.2 integrated
+ - Bug fixes
+
+
+
+
+
+ #develop Fidalgo RC3 (8/23/2004)
+
+ - Configuration selection added to toolbar
+ - New Class Wizard rewrite
+ - C# to VB.NET conversion (and vice versa) fixes
+ - Bug fixes across the board
+
+
+
+
+ #develop Fidalgo RC2 (6/27/2004)
+
+
+ - Bug fixes (details see Subversion change log)
+ - Code completion: bug fixing, regression checks
+ - Setup: register file types, GAC assembly install, size
+
+
+
+
+ #develop Fidalgo RC1 (6/16/2004)
+
+ - Entire project conversion VB.NET to C# and vice versa
+ - Project import now works for ASP.NET projects
+ - Bug fixes (details see Subversion change log)
+ - Performance improvements (details see Subversion change log)
+ - New setup: OS restrictions are enforced (Windows 2000+)
+
+
+
+
+
+
+ #develop Fidalgo Beta 1 (5/5/2004)
+
+ - Ctrl+Space completion
+ - Folding fully integrated
+ - NUnit integration (via a pad)
+ - Assembly Analyzer
+ - C++.NET, ILAsm, WiX backend bindings
+ - Mini Class Browser panel added to source views
+ - VB.NET to C# converter included
+ - Alt+Ins code generator revamped (formerly Ctrl+W)
+ - Improvements to File Templates
+ - Improvements to VS.NET exporter/importer (VB.NET especially)
+ - Printing support added
+ - New DockPanel Suite integrated, Magic library entirely removed
+
+
+
+
+
+ 0.99b Beta (3/3/2004)
+
+ - Improvements of C# and VB.NET Forms Designers
+ - Improvements to VB.NET Code Completion
+ - Improvements of the VS.NET Import/Export Feature
+ - Install/Uninstall batch files for Nunit and NProf
+ - C# Project Options Dialog Changed
+
+
+
+
+ 0.99 Beta (2/20/2004)
+
+
+ - VB.NET Forms Designer
+ - VB.NET Code Completion
+ - Database scout for exploring databases (needs current MDAC on your machine!)
+ - C# code completion improvements (eg externs and array return types)
+ - Various forms designer related issues fixed such as main menu bugs
+ - Tool updates: NAnt, NUnit, NProf, NSIS installer
+
+
+
+
+ 0.98 Beta (10/23/2003)
+
+ - Rewrite of the text editor
+ - Syntax hightlighting definition editor added
+ - Code completion db wizard cycles #develop on initial startup (better performance)
+ - Improvements to #assembly and assembly scout
+ - Icons for menus and toolbars have been changed (in general: lots of UI improvements)
+ - Code completion improvements
+
+
+
+
+ 0.97 Beta (09/12/2003)
+
+ - MagicLibrary menus removed for stability and performance reasons
+ - UtilityLibrary toolbars removed and exchanged with CommandBars library
+ - Improved #coco parser generator
+ - Improved lexer layer
+ - Type resolver improved
+ - Lots of missing localizations added
+ - CSharpParser.dll replaced with #refactory
+ - Switched from multiple layout manager to SDI
+ - NUnit 2.1 integration
+ - NProf integration
+ - Forms Designer bug fixes
+ - Option panel and project property dialog boxes sport common look and feel
+ - IViewContent changes for documents with multiple views
+ - Directory layout changes
+
+
+
+
+ 0.96 Beta (08/23/2003)
+
+ - Faster loading
+ - Forms Designer menu editor added
+ - C# to VB.NET converter
+ - User controls are automatically reloaded in referencing project (on build)
+ - Before and After Build scripts added
+ - Component selection dropdown added to property grid
+ - Property grid context menu
+ - Tooltips in task pane
+ - File reload (Ctrl+U) prompts for reload
+ - Sidebar configuration dialog
+ - Assembly Scout reworked
+
+
+
+
+ 0.95 Beta (04/30/2003)
+
+ - New exception dialog
+ - "Module" is now a compile target for both C# and VB.NET
+ - Various class browser fixes
+ - Improvements in the RegExTk
+
+
+
+
+ 0.94b Beta (02/03/2003)
+
+ - Works on Windows 98 again (FileSystemWatcher is optional)
+ - Keys which are reached via AltGr work now ("@-Bug")
+ - Toolbox fixed when multiple forms are open
+ - Localized help files work (ms-help URI issue)
+ - Core compiles on Mono
+
+
+
+
+ 0.94 Beta (01/30/2003)
+
+ - Added Code AutoInsert feature (Ctrl+W)
+ - Events can now be added via the forms designer
+ - .NET Framework SDK help and DirectX 9 help can now be integrated (Markus Palme)
+ - Custom controls option for the #develop forms designer (Denis Erchoff)
+ - Added Xml Documentation preview feature (Ctrl+Q)
+ - Included initial version of a VS.NET solution importer
+ - The #develop core has been split out into a separate assembly
+ - Basic HTML Editor implemented
+ - #Refactory and #ZipLib included in the #develop project
+ - Updates to #Unit
+ - Project templates expanded to support creating of full-featured combines
+ - New Start Page has been added
+ - Added Projects and Combines option panel
+ - Expanded the toolbar with new icons and design
+
+
+
+
+ 0.93 Beta (12/19/2002)
+
+ - Assembly scout (object browser) thoroughly reworked by Georg Brandl
+ - Regular Expression toolkit allows to generate assemblies (Markus Palme)
+ - More templates have been added
+ - Bookmark fixes
+ - Chinese translations added (traditional & simplified)
+ - New Register file types panel in the Options dialogbox
+ - Gutter reworked (look & feel)
+ - RTF Cut/Copy/Paste
+ - Forms Designer: control sizing bugs fixed
+ - Lots of small bug fixes
+
+
+
+
+ 0.92 Beta (10/25/2002)
+
+ - Forms designer refactored
+ - Included new NDoc version
+ - 'Long delay' bug when opening large non C# projects fixed
+ - Enum code completion crash bug fixed
+ - The cursor+tab keys now work in the forms designer (Cut/Copy/Paste too)
+ - The core now recognizes a load sequence
+ - Bugfixes in the COM reference import code
+ - New VBFormattingStrategy
+ - Forms Designer: new XmlGenerator - XML Form format changed
+ - Java/VB.NET project structures refactored
+ - Removed #cvs and #ziplib from the source tree (SharpCvs no longer supported)
+
+
+
+
+ 0.91 Beta (9/22/2002)
+
+ - Improvements to the forms designer (Cut/Copy/Paste works, Format menu, selection, context menus)
+ - Improvements to the type resolver for code completion
+ - Setting the startup project works
+ - Search & Replace has been refactored
+ - Find in Files added
+ - Wildcard search strategy added
+ - COM Reference panel fixed
+ - Observed file save methods implemented
+ - Regular Expressions Toolkit (see Tools menu)
+ - VB.DOC integration (Markus Palme)
+
+
+
+
+ 0.90 Beta (9/5/2002)
+
+ - Code Completion and Method Insight added
+ - Improvements to the Forms Designer: C# and VB.NET code generation
+ - COM References are integrated, thanks to Poul Staugaard
+ - Reflection Parser Layer and persistence
+ - Added IME support, thanks to Shinsaku Nakagawa
+ - Help browser is improved, now shipping with #ziplib help too
+ - Code Completion Database Wizard added
+ - Changed the csc/vbc exe path get routine (used to use the registry)
+ - Ambiences added
+ - IsValidFileName added to FileUtilityService
+ - Option dialogs and wizards changed in style and size
+ - Text area control refactoring
+
+
+
+
+ 0.89 Beta (8/18/2002)
+
+ - Initial implementation of a Windows Forms Designer (help appreciated)
+ - Support for Mono: you can now choose either csc.exe or mcs.exe, as well as the execution environment
+ - Folding is re-integrated
+ - XML formatting strategy
+ - Object browser was refactored by Markus Palme
+ - #develop help is integrated with a help browser
+ - Project options dialog redesigned
+ - Toolbar is now more functional
+ - C# backend binding: treat warnings as errors passed to csc.exe
+ - Parser refactoring and new parser data structures
+
+ - NDoc works reliably in exe and source distributions
+ - Namespace cleanups
+ - Project browser refactoring allows for more varied backend bindings
+ - Project file format changed to match new project subsystem
+
+
+
+
+ 0.88b Beta (5/29/2002)
+
+ - Limit of 2178 lines per file is removed
+ - GAC assemblies correctly included in build runs
+ - Tool Scout reworked
+ - Read-only attributes on files or backup copies no longer throw exceptions
+ - Save dirty files bug fixed for SDI
+ - GAC assemblies correctly display in object browser
+ - Search in open files and project fixed
+
+
+
+
+ 0.88a Beta (4/24/2002)
+
+ - Regular expression search added
+ - Code completion and Class Scout are back for C#
+ - Path dependency removed - C# compiler is automatically located
+ - Load/Save options panel (line terminators for other platforms now supported)
+ - #unit has been integrated (powerful unit testing framework)
+
+
+
+
+ 0.87c Beta (2/20/2002)
+
+
+ - Setup program for SharpDevelop (thanks to Brent R. Matzelle)
+ - New Class Wizard from Donald Kackman
+ - New SDI layout preview (try it in Tools/Options/Menu Style)
+ - Bug fixes (details in ChangeLog.txt)
+
+
+
+
+ 0.87b Beta (2/3/2002)
+
+ - The "state" of text files is saved & restored. (bookmarks, caret, highlighting, etc.)
+ - External tools working on all OS's
+ - PHP and C++ syntax highlighting added
+ - Bugs fixed that were present in .87a
+
+
+
+
+
+ 0.87a Beta (1/22/2002)
+
+ - New internal TextRepresentation data structure
+ - New search & replace data structure
+ - Preview of add-in infrastructure
+
+
+
+
+ 0.85 Milestone (12/14/2001)
+
+ - Class Browser reintroduced
+
+ - Export project to HTML (see samples here)
+ - NANT included to build SharpDevelop
+ - Visual CVS preview
+ - UI changes: VS.NET-style flat status bar added, standard UI to internal Web browser
+ - Bug fixes: fixed many exception-generating scenarios
+
+
+
+
+ 0.80 Milestone (9/28/2001)
+
+ - New options dialog boxes (IDE and project)
+ - 'Deploy Project' functionality added
+ - Side bar with drag&drop support (actually called Toolbar)
+
+ - Included DOC.NET, a documentation generator for C# programs
+ - Linked with the Alexandria library for new GUI features
+ - SharpDevelop configuration is now saved in user's Application Data folder instead of My Documents
+ - For more detailed changes, see ChangeLog.txt in the docs folder
+
+
+
+
+ 0.75 Beta, Interim Beta (8/3/2001)
+
+ - Preview of Code Completion (works with Framework classes only)
+ - Testing framework compatible with NUnit integrated
+ - Integrated CVS support via NetCvsLib
+ - Translations for German, French, Spanish and more (see docs/languages/ folder)
+ - Workspace state is now saved with project
+ - Combines ("super projects") added (can contain other projects)
+ - Comment tag inserter added (use /* or /// comments and you'll see)
+
+ - Unicode now supported
+ - Performance enhancements
+ - Volume labels are displayed in the File Scout
+ - Reloading files from disk works with Ctrl+U
+ - All Yes/No/Cancel dialog boxes are gone
+ - For more detailed changes, see ChangeLog.txt in the docs folder
+
+
+
+
+ 0.70 Beta, .NET SDK Beta 2 Release (6/20/2001)
+
+ - Entirely new File and Project Template architecture
+ - Localization of the UI to German, Italian and Portugese
+ - Language Modules, supporting C# and VB.NET
+ - Standard, Office 2000 and VS.NET-style menus
+ - Docking toolbar/window support
+
+ - Reference browser
+ - Internal Web browser
+ - Bugfixes, more exception handling code
+
+
+
+
+ 0.60beta Milestone 1 (2/7/2001)
+
+ - File Scout added
+ - Class Scout added
+ - Replace dialog is working
+ - HTML/XML viewer included
+ - Dialogs for New File & New Project
+ - Rudimentary resource file editor included
+ - Syntax coloring for "embedded" languages
+
+ - Tons of bugfixes
+
+
+
+
+ 0.52beta (12/15/2000)
+
+ - file filter is now configurable
+ - form start positions are now saved in the config file
+ - some minor bug fixing & spell checking ...
+
+
+
+
+ 0.51beta
+
+
+ - Tip of the day box added
+ - Options became one menu item (the seperate options aren't removed, because I tested this not thoroughly ...)
+
+
+
+
+ 0.5beta
+
+ - some syntax highlighting bugs fixed
+ - line number view is a separate class / bookmarks are shown when line numbers are turned off
+ - Menu item icons (very important for stability & speed and it looks fine)
+
+
+
+
+ 0.41beta - some bugfixes :
+
+ - project loading bug fixed
+ - empty file load bug fixed
+ - window menu bug fixed
+ - some more bugs fixed, which I can't remember
+ - new word count dialog, menu item descriptions
+
+
+
+
+ 0.4beta
+
+ - new/updated event system, same base class for : MenuActions, EditActions and Plugins
+ - basic plugin support
+ - XML definitions for MenuActions / EditActions
+
+ - the paths in your project file are now relative, you can copy your project to any location,
+ from now on the Sharp Develop project file is part of the distribution.
+ (old projects are converted automatically)
+
+
+
+
+
+ 0.3beta
+
+ - More complex syntax highlighting, now supports highlighting for HTML and XML
+ and is able to support a wide range of highlighting schemes.
+
+ - faster scrolling routines
+ - Mouse wheel support
+ - FileWatcher added (the prompt for reload thing, when a file has been changed)
+ - HTML exporter
+ - In the Project Explorer should now work:
+
+ - adding a new directory (isn't created until you put a file in it)
+ - renaming files/directories
+ - adding files
+
+
+
+
+
+
+ 0.2alpha
+
+ - Customizeable Tool menu
+ - Updates in: Project Explorer, Find dialog
+ - Bookmarks
+ - Code templates
+ - XML files for config / projects
+ - Default libraries (the compiler doesn't notability slow down if I
+ include ALL (I hope) DLL's, no more "which DLL do I need ?" questions
+
+ - Compile error output window - now you can see (and jump to)
+ your erros in the IDE itself
+
+ - many various little menu options & bugfixes
+
+ - Syntax highlighting is now configurable (through XML file options/Syntax.xml)
+
+
+
+
+ 09/11/2000 - Project Start
+
+
+
\ No newline at end of file
diff --git a/src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml b/src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml
index d8d60444761..f827b613273 100644
--- a/src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml
+++ b/src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml
@@ -74,9 +74,7 @@
Grid.Row="2"
Padding="4,0,4,0"
TextWrapping="WrapWithOverflow">
- Copyright ©
- IC#SharpCode
+ Copyright ©
diff --git a/src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml.cs b/src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml.cs
index d6c26954968..6fac805891c 100644
--- a/src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml.cs
+++ b/src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml.cs
@@ -11,6 +11,7 @@
using System.Windows.Controls;
using ICSharpCode.Core;
+using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.StartPage
{
@@ -27,8 +28,8 @@ public StartPageControl()
List entries = items.ConvertAll(control => new BoxEntry { Control = control } );
startPageItems.ItemsSource = entries;
- var aca = (AssemblyCopyrightAttribute)typeof(StartPageControl).Assembly.GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false)[0];
- copyrightYearRange.Text = aca.Copyright.Substring(0, 9);
+ var aca = (AssemblyCopyrightAttribute)typeof(CommonAboutDialog).Assembly.GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false)[0];
+ copyrightText.Text = aca.Copyright;
}
sealed class BoxEntry
diff --git a/src/Automated.proj b/src/Automated.proj
index a245663ff10..a7c18388078 100644
--- a/src/Automated.proj
+++ b/src/Automated.proj
@@ -11,7 +11,7 @@
$(ProjectDir)\src
$(ProjectDir)\bin
$(MSBuildProjectDirectory)\Tools\MSBuildCommunityTasks
- SharpDevelop_4.0.0.
+ SharpDevelop_
$(MSBuildProjectDirectory)\Tools\NUnit
$(SharpDevelopBin)\Tools\x86NUnit
$(SharpDevelopSrc)\AddIns\Misc\Profiler
@@ -57,13 +57,11 @@
Targets="PrepareRelease"
Properties="Configuration=Release"/>
-
-
-
-
-
-
-
+
+
+
+
-
-
diff --git a/src/Main/Base/Project/Resources/CommonAboutDialog.xfrm b/src/Main/Base/Project/Resources/CommonAboutDialog.xfrm
index 24e163c1e1b..c23922536ae 100644
--- a/src/Main/Base/Project/Resources/CommonAboutDialog.xfrm
+++ b/src/Main/Base/Project/Resources/CommonAboutDialog.xfrm
@@ -26,7 +26,7 @@
-
+
diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/CommonAboutDialog.cs b/src/Main/Base/Project/Src/Gui/Dialogs/CommonAboutDialog.cs
index b382e2fb38b..7595db9518e 100644
--- a/src/Main/Base/Project/Src/Gui/Dialogs/CommonAboutDialog.cs
+++ b/src/Main/Base/Project/Src/Gui/Dialogs/CommonAboutDialog.cs
@@ -7,8 +7,9 @@
using System;
using System.Drawing;
+using System.Reflection;
+using System.Text.RegularExpressions;
using System.Windows.Forms;
-
using ICSharpCode.Core.WinForms;
using ICSharpCode.SharpDevelop.Gui.XmlForms;
@@ -132,6 +133,8 @@ public class CommonAboutDialog : XmlForm
public CommonAboutDialog()
{
SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.CommonAboutDialog.xfrm"));
+ var aca = (AssemblyCopyrightAttribute)typeof(CommonAboutDialog).Assembly.GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false)[0];
+ ControlDictionary["copyrightLabel"].Text = "Copyright " + aca.Copyright;
}
protected override void SetupXmlLoader()
diff --git a/src/Main/Core/Project/ICSharpCode.Core.csproj b/src/Main/Core/Project/ICSharpCode.Core.csproj
index a5e7a419629..6d32033051e 100644
--- a/src/Main/Core/Project/ICSharpCode.Core.csproj
+++ b/src/Main/Core/Project/ICSharpCode.Core.csproj
@@ -140,4 +140,8 @@
..\src\Tools\UpdateAssemblyInfo\bin\Debug\UpdateAssemblyInfo.exe
+
+
+
+
\ No newline at end of file
diff --git a/src/Main/GlobalAssemblyInfo.template b/src/Main/GlobalAssemblyInfo.template
index 5ddb81e4f99..791a1c132aa 100644
--- a/src/Main/GlobalAssemblyInfo.template
+++ b/src/Main/GlobalAssemblyInfo.template
@@ -20,7 +20,7 @@ using System.Reflection;
[assembly: System.Runtime.InteropServices.ComVisible(false)]
[assembly: AssemblyCompany("ic#code")]
[assembly: AssemblyProduct("SharpDevelop")]
-[assembly: AssemblyCopyright("2000-2010 AlphaSierraPapa")]
+[assembly: AssemblyCopyright("2000-$INSERTYEAR$ AlphaSierraPapa for the SharpDevelop Team")]
[assembly: AssemblyVersion(RevisionClass.FullVersion)]
[assembly: NeutralResourcesLanguage("en-US")]
@@ -29,7 +29,7 @@ internal static class RevisionClass
public const string Major = "4";
public const string Minor = "0";
public const string Build = "0";
- public const string Revision = "-INSERTREVISION-";
+ public const string Revision = "$INSERTREVISION$";
public const string MainVersion = Major + "." + Minor;
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
diff --git a/src/Setup/Files.wxs b/src/Setup/Files.wxs
index 8eac25972d3..bb9fe81f412 100644
--- a/src/Setup/Files.wxs
+++ b/src/Setup/Files.wxs
@@ -442,6 +442,7 @@
+
diff --git a/src/Setup/SharpDevelop.Setup.wixproj.user b/src/Setup/SharpDevelop.Setup.wixproj.user
deleted file mode 100644
index cef0184e869..00000000000
--- a/src/Setup/SharpDevelop.Setup.wixproj.user
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- 1
- PRODUCTBUILDVERSION=$(SetupProductBuildVersion)
-
-
\ No newline at end of file
diff --git a/src/Setup/SharpDevelop.Setup.wixproj.user.template b/src/Setup/SharpDevelop.Setup.wixproj.user.template
index 16d4aba0823..a5901a87e90 100644
--- a/src/Setup/SharpDevelop.Setup.wixproj.user.template
+++ b/src/Setup/SharpDevelop.Setup.wixproj.user.template
@@ -1,6 +1,6 @@
- $INSERTPRODUCTBUILDVERSION$
+ $INSERTREVISION$
PRODUCTBUILDVERSION=$(SetupProductBuildVersion)
\ No newline at end of file
diff --git a/src/Setup/buildSetup.bat b/src/Setup/buildSetup.bat
index 12bccf14610..93a566be4d8 100755
--- a/src/Setup/buildSetup.bat
+++ b/src/Setup/buildSetup.bat
@@ -1,4 +1,4 @@
del "bin\SharpDevelop.msi"
-"..\Tools\UpdateSetupInfo\bin\UpdateSetupInfo.exe"
+"..\Tools\UpdateAssemblyInfo\bin\Debug\UpdateAssemblyInfo.exe"
%windir%\microsoft.net\framework\v4.0.30319\msbuild SharpDevelop.Setup.sln "/p:SharpDevelopBinPath=%CD%\..\..\bin"
@IF %ERRORLEVEL% NEQ 0 PAUSE
\ No newline at end of file
diff --git a/src/Tools/SVNChangeLogToXml/Main.cs b/src/Tools/SVNChangeLogToXml/Main.cs
deleted file mode 100644
index 2850a2a693c..00000000000
--- a/src/Tools/SVNChangeLogToXml/Main.cs
+++ /dev/null
@@ -1,118 +0,0 @@
-using System;
-using System.ComponentModel;
-using System.Globalization;
-using System.IO;
-using System.Reflection;
-using System.Text;
-using System.Text.RegularExpressions;
-using System.Windows.Forms;
-using System.Xml;
-using System.Xml.Xsl;
-
-using SharpSvn;
-
-class MainClass
-{
- public static int Main(string[] args)
- {
- Console.WriteLine("Initializing changelog application...");
- try {
- if (!File.Exists("SharpDevelop.sln")) {
- if (File.Exists(@"..\..\..\..\..\SharpDevelop.sln")) {
- Directory.SetCurrentDirectory(@"..\..\..\..\..");
- }
- }
- if (!File.Exists("SharpDevelop.sln")) {
- Console.WriteLine("Working directory must be 'SharpDevelop'");
- return 2;
- }
-
- int start = 2;
- for(int i = 0; i < args.Length; i++)
- {
- if(args[i] == "--REVISION")
- {
- CreateRevisionFile();
- }
- else if(args[i] == "--START") {
- Int32.TryParse(args[i + 1], out start);
- }
- }
- ConvertChangeLog(start);
- return 0;
- } catch (Exception ex) {
- Console.WriteLine(ex);
- return 1;
- }
- }
-
- static void CreateRevisionFile()
- {
- Console.Write("Writing revision to file: ");
-
- long rev = 0;
- string filename = Path.GetFullPath(".");
- SvnWorkingCopyClient client = new SvnWorkingCopyClient();
- SvnWorkingCopyVersion version;
- if (client.GetVersion(filename, out version)) {
- rev = version.Start;
- }
- Console.WriteLine(rev);
- using (StreamWriter writer = new StreamWriter("REVISION")) {
- writer.Write(rev.ToString());
- }
- }
-
- static void ConvertChangeLog(int startRevision)
- {
- Console.WriteLine("Reading SVN changelog, this might take a while...");
-
- SvnClient client = new SvnClient();
-
- StringWriter writer = new StringWriter();
- XmlTextWriter xmlWriter = new XmlTextWriter(writer);
- xmlWriter.Formatting = Formatting.Indented;
- xmlWriter.WriteStartDocument();
- xmlWriter.WriteStartElement("log");
- int progressCount = 0;
- client.Log(
- Environment.CurrentDirectory,
- new SvnLogArgs {
- // retrieve log in reverse order
- Start = SvnRevision.Base,
- End = new SvnRevision(startRevision)
- },
- delegate(object sender, SvnLogEventArgs e) {
- if (++progressCount == 10) {
- Console.Write(".");
- progressCount = 0;
- }
- xmlWriter.WriteStartElement("logentry");
- xmlWriter.WriteAttributeString("revision", e.Revision.ToString(CultureInfo.InvariantCulture));
- xmlWriter.WriteElementString("author", e.Author);
- xmlWriter.WriteElementString("date", e.Time.ToUniversalTime().ToString("MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture));
- xmlWriter.WriteElementString("msg", e.LogMessage);
- xmlWriter.WriteEndElement();
- }
- );
- xmlWriter.WriteEndDocument();
-
- Console.WriteLine();
-
- XmlTextReader input = new XmlTextReader(new StringReader(writer.ToString()));
-
- XslCompiledTransform xsl = new XslCompiledTransform();
- xsl.Load(Path.Combine(Path.GetDirectoryName(typeof(MainClass).Assembly.Location), "SVNChangelogToXml.xsl"));
-
- StreamWriter tw = new StreamWriter(@"doc\ChangeLog.xml", false, Encoding.UTF8);
- xmlWriter = new XmlTextWriter(tw);
- xmlWriter.Formatting = Formatting.Indented;
- xsl.Transform(input, xmlWriter);
- xmlWriter.Close();
- tw.Close();
-
- client.Dispose();
-
- Console.WriteLine("Finished");
- }
-}
diff --git a/src/Tools/SVNChangeLogToXml/SVNChangelogToXml.csproj b/src/Tools/SVNChangeLogToXml/SVNChangelogToXml.csproj
deleted file mode 100644
index cbd378e2c51..00000000000
--- a/src/Tools/SVNChangeLogToXml/SVNChangelogToXml.csproj
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
- Debug
- AnyCPU
- 8.0.40607
- 2.0
- {c6159c5e-f6ef-4a63-b152-0e49159b6059}
- SVNChangelogToXml
- SVNChangelogToXml
- Exe
- False
- False
- OnSuccessfulBuild
- False
- Auto
- 4194304
- x86
- 4096
- 4
- 1607
- --REVISION --START 100
- C:\Users\Daniel\AppData\Roaming\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis
- v2.0
-
-
- true
- True
- bin\Debug\
- False
- False
- false
- Full
-
-
- False
- True
- False
- False
- bin\Release\
- true
-
-
-
- ..\..\Libraries\SharpSvn\SharpSvn.dll
-
-
-
-
-
-
-
-
-
-
-
-
- Always
-
-
-
-
\ No newline at end of file
diff --git a/src/Tools/SVNChangeLogToXml/SVNChangelogToXml.csproj.user b/src/Tools/SVNChangeLogToXml/SVNChangelogToXml.csproj.user
deleted file mode 100644
index 7ff3943f7c3..00000000000
--- a/src/Tools/SVNChangeLogToXml/SVNChangelogToXml.csproj.user
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/Tools/SVNChangeLogToXml/SVNChangelogToXml.sln b/src/Tools/SVNChangeLogToXml/SVNChangelogToXml.sln
deleted file mode 100644
index 11ff38b8716..00000000000
--- a/src/Tools/SVNChangeLogToXml/SVNChangelogToXml.sln
+++ /dev/null
@@ -1,18 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-# SharpDevelop 4.0.0.4979
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SVNChangelogToXml", "SVNChangelogToXml.csproj", "{c6159c5e-f6ef-4a63-b152-0e49159b6059}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {C6159C5E-F6EF-4A63-B152-0E49159B6059}.Debug|Any CPU.Build.0 = Debug|AnyCPU
- {C6159C5E-F6EF-4A63-B152-0E49159B6059}.Debug|Any CPU.ActiveCfg = Debug|AnyCPU
- {C6159C5E-F6EF-4A63-B152-0E49159B6059}.Release|Any CPU.Build.0 = Release|AnyCPU
- {C6159C5E-F6EF-4A63-B152-0E49159B6059}.Release|Any CPU.ActiveCfg = Release|AnyCPU
- EndGlobalSection
-EndGlobal
diff --git a/src/Tools/SVNChangeLogToXml/SVNChangelogToXml.xsl b/src/Tools/SVNChangeLogToXml/SVNChangelogToXml.xsl
deleted file mode 100644
index 8a5a20b4b78..00000000000
--- a/src/Tools/SVNChangeLogToXml/SVNChangelogToXml.xsl
+++ /dev/null
@@ -1,115 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- Mike Krüger
-
-
- Roman Taranchenko
-
-
- Georg Brandl
-
-
- Andrea Paatz
-
-
- Daniel Grunwald
-
-
- Denis Erchoff
-
-
- Markus Palme
-
-
- Ivo Kovacka
-
-
- John Reilly
-
-
- Christoph Wille
-
-
- Alexandre Semenov
-
-
- Nikola Kavaldjiev
-
-
- Matt Ward
-
-
- Mathias Simmack
-
-
- David Srbecký
-
-
- David Alpert
-
-
- Peter Forstmeier
-
-
- Scott Ferrett
-
-
- Dickon Field
-
-
- Itai Bar-Haim
-
-
- Christian Hornung
-
-
- Justin Dearing
-
-
- Russell Wilkins
-
-
- Robert Pickering
-
-
- Siegfried Pammer
-
-
- Ivan Shumilin
-
-
- Philipp Maihart
-
-
- Martin Koníček
-
-
- Tomasz Tretkowski
-
-
- Sergej Andrejev
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Tools/Tools.build b/src/Tools/Tools.build
index a1cbea64abe..4fdcad2c9a2 100644
--- a/src/Tools/Tools.build
+++ b/src/Tools/Tools.build
@@ -52,16 +52,9 @@
-
-
-
-
-
-
-
-
-
+
+
diff --git a/src/Tools/UpdateAssemblyInfo/Main.cs b/src/Tools/UpdateAssemblyInfo/Main.cs
index fc03c936d32..d2fadcd9044 100644
--- a/src/Tools/UpdateAssemblyInfo/Main.cs
+++ b/src/Tools/UpdateAssemblyInfo/Main.cs
@@ -9,25 +9,50 @@
using System.Diagnostics;
using System.Globalization;
using System.IO;
+using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Text;
using System.Text.RegularExpressions;
-
-using SharpSvn;
using System.Threading;
+using System.Xml.Linq;
namespace UpdateAssemblyInfo
{
// Updates the version numbers in the assembly information.
class MainClass
{
- const string templateFile = "src/Main/GlobalAssemblyInfo.template";
- const string globalAssemblyInfo = "src/Main/GlobalAssemblyInfo.cs";
- const string configTemplateFile = "src/Main/StartUp/Project/app.template.config";
- const string configFile = "src/Main/StartUp/Project/SharpDevelop.exe.config";
- const string configFile2 = "src/Main/ICSharpCode.SharpDevelop.Sda/ICSharpCode.SharpDevelop.Sda.dll.config";
- const string subversionLibraryDir = "src/Libraries/SharpSvn";
+ const string BaseCommit = "f118057b0f20994c272aba765b54db10d5c1c793";
+ const int BaseCommitRev = 6366;
+
+ const string globalAssemblyInfoTemplateFile = "src/Main/GlobalAssemblyInfo.template";
+ static readonly TemplateFile[] templateFiles = {
+ new TemplateFile {
+ Input = globalAssemblyInfoTemplateFile,
+ Output = "src/Main/GlobalAssemblyInfo.cs"
+ },
+ new TemplateFile {
+ Input = "src/Main/StartUp/Project/app.template.config",
+ Output = "src/Main/StartUp/Project/SharpDevelop.exe.config"
+ },
+ new TemplateFile {
+ Input = "src/Main/StartUp/Project/app.template.config",
+ Output = "src/Main/ICSharpCode.SharpDevelop.Sda/ICSharpCode.SharpDevelop.Sda.dll.config"
+ },
+ new TemplateFile {
+ Input = "src/Setup/SharpDevelop.Setup.wixproj.user.template",
+ Output = "src/Setup/SharpDevelop.Setup.wixproj.user"
+ },
+ new TemplateFile {
+ Input = "doc/ChangeLog.template.html",
+ Output = "doc/ChangeLog.html"
+ },
+ };
+
+ class TemplateFile
+ {
+ public string Input, Output;
+ }
public static int Main(string[] args)
{
@@ -54,18 +79,16 @@ public static int Main(string[] args)
Console.WriteLine("Working directory must be SharpDevelop!");
return 2;
}
- FileCopy(Path.Combine(subversionLibraryDir, "SharpSvn.dll"),
- Path.Combine(exeDir, "SharpSvn.dll"));
RetrieveRevisionNumber();
- string versionNumber = GetMajorVersion() + "." + revisionNumber;
- UpdateStartup();
- UpdateRedirectionConfig(versionNumber);
- foreach (string arg in args) {
- if (arg == "--REVISION") {
- using (StreamWriter writer = new StreamWriter("REVISION")) {
- writer.Write(revisionNumber);
- }
- }
+ UpdateFiles();
+ if (args.Contains("--REVISION")) {
+ var doc = new XDocument(new XElement(
+ "versionInfo",
+ new XElement("version", fullVersionNumber),
+ new XElement("revision", revisionNumber),
+ new XElement("commitHash", gitCommitHash)
+ ));
+ doc.Save("REVISION");
}
return 0;
}
@@ -75,58 +98,30 @@ public static int Main(string[] args)
}
}
- static void FileCopy(string source, string target)
- {
- if (File.Exists(target)) {
- // don't copy file if it is up-to-date: repeatedly copying a 3 MB file slows down the build
- if (File.GetLastWriteTimeUtc(source) == File.GetLastWriteTimeUtc(target))
- return;
- }
- File.Copy(source, target, true);
- }
-
- static void UpdateStartup()
+ static void UpdateFiles()
{
- string content;
- using (StreamReader r = new StreamReader(templateFile)) {
- content = r.ReadToEnd();
- }
- content = content.Replace("-INSERTREVISION-", revisionNumber);
- if (File.Exists(globalAssemblyInfo)) {
- using (StreamReader r = new StreamReader(globalAssemblyInfo)) {
- if (r.ReadToEnd() == content) {
- // nothing changed, do not overwrite file to prevent recompilation
- // every time.
- return;
- }
+ foreach (var file in templateFiles) {
+ string content;
+ using (StreamReader r = new StreamReader(file.Input)) {
+ content = r.ReadToEnd();
}
- }
- using (StreamWriter w = new StreamWriter(globalAssemblyInfo, false, Encoding.UTF8)) {
- w.Write(content);
- }
- }
-
- static void UpdateRedirectionConfig(string fullVersionNumber)
- {
- string content;
- using (StreamReader r = new StreamReader(configTemplateFile)) {
- content = r.ReadToEnd();
- }
- content = content.Replace("$INSERTVERSION$", fullVersionNumber);
- if (File.Exists(configFile) && File.Exists(configFile2)) {
- using (StreamReader r = new StreamReader(configFile)) {
- if (r.ReadToEnd() == content) {
- // nothing changed, do not overwrite file to prevent recompilation
- // every time.
- return;
+ content = content.Replace("$INSERTVERSION$", fullVersionNumber);
+ content = content.Replace("$INSERTREVISION$", revisionNumber);
+ content = content.Replace("$INSERTCOMMITHASH$", gitCommitHash);
+ content = content.Replace("$INSERTDATE$", DateTime.Now.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture));
+ content = content.Replace("$INSERTYEAR$", DateTime.Now.Year.ToString());
+ if (File.Exists(file.Output)) {
+ using (StreamReader r = new StreamReader(file.Output)) {
+ if (r.ReadToEnd() == content) {
+ // nothing changed, do not overwrite file to prevent recompilation
+ // every time.
+ continue;
+ }
}
}
- }
- using (StreamWriter w = new StreamWriter(configFile, false, Encoding.UTF8)) {
- w.Write(content);
- }
- using (StreamWriter w = new StreamWriter(configFile2, false, Encoding.UTF8)) {
- w.Write(content);
+ using (StreamWriter w = new StreamWriter(file.Output, false, Encoding.UTF8)) {
+ w.Write(content);
+ }
}
}
@@ -134,7 +129,7 @@ static string GetMajorVersion()
{
string version = "?";
// Get main version from startup
- using (StreamReader r = new StreamReader(templateFile)) {
+ using (StreamReader r = new StreamReader(globalAssemblyInfoTemplateFile)) {
string line;
while ((line = r.ReadLine()) != null) {
string search = "string Major = \"";
@@ -175,60 +170,61 @@ static void SetVersionInfo(string fileName, Regex regex, string replacement)
}
#region Retrieve Revision Number
- static string revisionNumber = "0";
- static string ReadRevisionFromFile()
+ static string revisionNumber;
+ static string fullVersionNumber;
+ static string gitCommitHash;
+
+ static void RetrieveRevisionNumber()
{
- try {
- using (StreamReader reader = new StreamReader(@"REVISION")) {
- return reader.ReadLine();
+ if (revisionNumber == null) {
+ if (Directory.Exists("..\\.git")) {
+ ReadRevisionNumberFromGit();
}
- } catch (Exception e) {
- Console.WriteLine(e.Message);
- Console.WriteLine();
- Console.WriteLine("The revision number of the SharpDevelop version being compiled could not be retrieved.");
- Console.WriteLine();
- Console.WriteLine("Build continues with revision number '0'...");
- return "0";
}
+
+ if (revisionNumber == null) {
+ ReadRevisionFromFile();
+ }
+ fullVersionNumber = GetMajorVersion() + "." + revisionNumber;
}
- static void RetrieveRevisionNumber()
+
+ static void ReadRevisionNumberFromGit()
{
- if (Directory.Exists(".svn")) {
- string oldWorkingDir = Environment.CurrentDirectory;
- try {
- // Change working dir so that the subversion libraries can be found
- Environment.CurrentDirectory = Path.Combine(Environment.CurrentDirectory, subversionLibraryDir);
-
- using (SvnClient client = new SvnClient()) {
- client.Info(
- oldWorkingDir,
- (sender, info) => {
- revisionNumber = info.Revision.ToString(CultureInfo.InvariantCulture);
- });
- }
- } catch (Exception e) {
- Console.WriteLine("Reading revision number with SharpSvn failed: " + e.ToString());
- } finally {
- Environment.CurrentDirectory = oldWorkingDir;
- }
- }
- if (revisionNumber == null || revisionNumber.Length == 0 || revisionNumber == "0") {
- if (Directory.Exists("..\\.git")) {
- ProcessStartInfo info = new ProcessStartInfo("cmd", "/c git log HEAD~20..HEAD --no-color");
- info.RedirectStandardOutput = true;
- info.UseShellExecute = false;
- using (Process p = Process.Start(info)) {
- string output = p.StandardOutput.ReadToEnd();
- var m = Regex.Match(output, @"git-svn-id:.*@(\d+) [0-9a-f]{8}-");
- if (m.Success) {
- revisionNumber = m.Groups[1].Value;
- }
+ ProcessStartInfo info = new ProcessStartInfo("cmd", "/c git rev-list --first-parent " + BaseCommit + "..HEAD");
+ info.RedirectStandardOutput = true;
+ info.UseShellExecute = false;
+ using (Process p = Process.Start(info)) {
+ string line;
+ int revNum = BaseCommitRev;
+ while ((line = p.StandardOutput.ReadLine()) != null) {
+ if (gitCommitHash == null) {
+ // first entry is HEAD
+ gitCommitHash = line;
}
+ revNum++;
}
+ revisionNumber = revNum.ToString();
+ p.WaitForExit();
+ if (p.ExitCode != 0)
+ throw new Exception("git-rev-list exit code was " + p.ExitCode);
}
-
- if (revisionNumber == null || revisionNumber.Length == 0 || revisionNumber == "0") {
- revisionNumber = ReadRevisionFromFile();
+ }
+
+ static void ReadRevisionFromFile()
+ {
+ try {
+ XDocument doc = XDocument.Load("REVISION");
+ revisionNumber = (string)doc.Root.Element("revision");
+ gitCommitHash = (string)doc.Root.Element("commitHash");
+ } catch (Exception e) {
+ Console.WriteLine(e.Message);
+ Console.WriteLine();
+ Console.WriteLine("The revision number of the SharpDevelop version being compiled could not be retrieved.");
+ Console.WriteLine();
+ Console.WriteLine("Build continues with revision number '0'...");
+
+ revisionNumber = "0";
+ gitCommitHash = null;
}
if (revisionNumber == null || revisionNumber.Length == 0) {
revisionNumber = "0";
diff --git a/src/Tools/UpdateAssemblyInfo/Readme.txt b/src/Tools/UpdateAssemblyInfo/Readme.txt
index 96b74528492..a089969917a 100644
--- a/src/Tools/UpdateAssemblyInfo/Readme.txt
+++ b/src/Tools/UpdateAssemblyInfo/Readme.txt
@@ -1 +1,35 @@
-Read doc/technotes/Versioning.html
+Assembly versioning: Please read doc/technotes/Versioning.html
+
+
+Updates the SharpDevelop Setup information
+------------------------------------------
+
+Product Revision (Subversion revision number)
+
+With WiX 3 the package code and product code guids do not need to be generated by
+this tool and can be autogenerated by WiX.
+
+The build server and the buildSetup.bat executes the UpdateSetupInfo tool before
+building SharpDevelop.Setup.sln. The SharpDevelop.Setup project does not use the tool.
+
+Operation
+---------
+
+1) The SharpDevelop.Setup.wixproj.user is is generated each time the tool is run
+based on the SharpDevelop.Setup.wixproj.user.template file. The product revision is inserted
+into the newly generated file.
+
+2) The build server and buildSetup.bat will run the UpdateSetupInfo tool.
+This is not done by the SharpDevelop.Setup project itself intentionally so
+nothing changes when building the project from inside SharpDevelop. The
+modified SharpDevelop.Setup.wixproj.user need not be checked into the
+repository on each build on the build server.
+
+Creating Releases
+-----------------
+
+When creating a release either the setup msi from the build server should be
+used or that generated after running buildSetup.bat. This will revision number
+if the current revision has changed.
+
+
diff --git a/src/Tools/UpdateAssemblyInfo/UpdateAssemblyInfo.csproj b/src/Tools/UpdateAssemblyInfo/UpdateAssemblyInfo.csproj
index 63121d2731e..37a89f20cd4 100644
--- a/src/Tools/UpdateAssemblyInfo/UpdateAssemblyInfo.csproj
+++ b/src/Tools/UpdateAssemblyInfo/UpdateAssemblyInfo.csproj
@@ -1,4 +1,5 @@
-
+
+
Exe
UpdateAssemblyInfo
@@ -9,7 +10,6 @@
False
False
False
- PdbOnly
False
Auto
4194304
@@ -17,10 +17,10 @@
4096
4
false
- false
1607
- v2.0
+ v3.5
C:\Users\Daniel\AppData\Roaming\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis
+ --REVISION
bin\Debug\
@@ -32,14 +32,28 @@
true
TRACE
+
+ Full
+ true
+ Project
+
+
+ None
+ false
+
-
- ..\..\Libraries\SharpSvn\SharpSvn.dll
- False
-
+
+ 3.5
+
+
+ 3.5
+
+
+ 3.5
+
diff --git a/src/Tools/UpdateAssemblyInfo/bin/Debug/UpdateAssemblyInfo.exe b/src/Tools/UpdateAssemblyInfo/bin/Debug/UpdateAssemblyInfo.exe
deleted file mode 100755
index cc8dbb8bc0b..00000000000
Binary files a/src/Tools/UpdateAssemblyInfo/bin/Debug/UpdateAssemblyInfo.exe and /dev/null differ
diff --git a/src/Tools/UpdateSetupInfo/Main.cs b/src/Tools/UpdateSetupInfo/Main.cs
deleted file mode 100644
index 33ed23f861c..00000000000
--- a/src/Tools/UpdateSetupInfo/Main.cs
+++ /dev/null
@@ -1,232 +0,0 @@
-//
-//
-//
-//
-// $Revision$
-//
-
-using System;
-using System.Globalization;
-using System.IO;
-using System.Text;
-
-using SharpSvn;
-
-namespace UpdateSetupInfo
-{
- ///
- /// Creates the SharpDevelop.Setup.wixproj.user file based on the
- /// SharpDevelop.Setup.wixproj.user.template.
- ///
- class UpdateApplication
- {
- ///
- /// Path to the setup project relative to the UpdateSetupInfo.exe file.
- ///
- const string SetupProjectFolderRelativePath = @"..\..\..\Setup";
-
- ///
- /// Name of the setup template file.
- ///
- const string SetupTemplateFileName = "SharpDevelop.Setup.wixproj.user.template";
-
- ///
- /// Name of the setup project user file that will be generated.
- ///
- const string SetupProjectUserFileName = "SharpDevelop.Setup.wixproj.user";
-
- const int SetupTemplateFileNotFoundReturnCode = 1;
- const int UpdateSetupInfoExceptionReturnCode = 2;
-
- ///
- /// The full filename including path to the setup template file.
- ///
- string setupTemplateFullFileName;
-
- ///
- /// The full filename including path to the setup project user file that
- /// will be generated.
- ///
- string setupProjectUserFullFileName;
-
- ///
- /// The folder containing the UpdateSetupInfo application.
- ///
- string applicationFolder;
-
- ///
- /// The file that contains the last revision number used to update the
- /// template.
- ///
- string previousRevisionFileName;
-
- ///
- /// The folder that contains the last revision number used to update the
- /// template.
- ///
- string previousRevisionFolder;
-
- public UpdateApplication()
- {
- // Work out filenames.
- applicationFolder = Path.GetDirectoryName(GetType().Assembly.Location);
- string setupProjectFolder = Path.Combine(applicationFolder, SetupProjectFolderRelativePath);
- setupProjectFolder = Path.GetFullPath(setupProjectFolder);
-
- setupTemplateFullFileName = Path.Combine(setupProjectFolder, SetupTemplateFileName);
- setupProjectUserFullFileName = Path.Combine(setupProjectFolder, SetupProjectUserFileName);
- previousRevisionFolder = Path.Combine(setupProjectFolder, @"bin");
- previousRevisionFileName = Path.Combine(previousRevisionFolder, "REVISION");
-
- FileCopy(Path.Combine(Path.Combine(applicationFolder, subversionLibraryDir), "SharpSvn.dll"),
- Path.Combine(applicationFolder, "SharpSvn.dll"));
-
- // Set current directory to a folder that is in the repository.
- Environment.CurrentDirectory = setupProjectFolder;
- }
-
- static void FileCopy(string source, string target)
- {
- if (File.Exists(target)) {
- // don't copy file if it is up-to-date: repeatedly copying a 3 MB file slows down the build
- if (File.GetLastWriteTimeUtc(source) == File.GetLastWriteTimeUtc(target))
- return;
- }
- File.Copy(source, target, true);
- }
-
- public static int Main(string[] args)
- {
- try {
- UpdateApplication app = new UpdateApplication();
- return app.Run();
- } catch (Exception ex) {
- Console.WriteLine(ex.ToString());
- return UpdateApplication.UpdateSetupInfoExceptionReturnCode;
- }
- }
-
- public int Run()
- {
- // Read setup template contents.
- if (!SetupTemplateFileExists) {
- Console.WriteLine(String.Concat(SetupTemplateFileName, " not found. Unable to update setup information."));
- return SetupTemplateFileNotFoundReturnCode;
- }
- string template = ReadSetupTemplate();
-
- // Get current revision.
- string currentRevision = GetCurrentRevision();
-
- // Populate setup template.
- template = PopulateSetupTemplate(template, currentRevision);
-
- // Create setup user file.
- SaveSetupUserFile(template);
-
- return 0;
- }
-
- bool SetupUserFileExists {
- get { return File.Exists(setupProjectUserFullFileName); }
- }
-
- bool SetupTemplateFileExists {
- get { return File.Exists(setupTemplateFullFileName); }
- }
-
- string ReadSetupTemplate() {
- using (StreamReader reader = new StreamReader(setupTemplateFullFileName, true)) {
- return reader.ReadToEnd();
- }
- }
-
- string PopulateSetupTemplate(string template, string revision)
- {
- return template.Replace("$INSERTPRODUCTBUILDVERSION$", revision);
- }
-
- string GetNewGuid()
- {
- return Guid.NewGuid().ToString().ToUpperInvariant();
- }
-
- void SaveSetupUserFile(string contents)
- {
- using (StreamWriter writer = new StreamWriter(setupProjectUserFullFileName, false, Encoding.UTF8)) {
- writer.Write(contents);
- }
- }
-
- const string subversionLibraryDir = @"..\..\..\Libraries\SharpSvn";
-
- ///
- /// Code taken directly from UpdateAssemblyInfo and the paths slightly modified.
- ///
- ///
- /// The product build version maps to the Subversion revision number.
- ///
- string GetCurrentRevision()
- {
- string revisionNumber = null;
- string oldWorkingDir = Environment.CurrentDirectory;
- try {
- // Set working directory so msvcp70.dll and msvcr70.dll can be found
- Environment.CurrentDirectory = Path.Combine(applicationFolder, subversionLibraryDir);
-
- using (SvnClient client = new SvnClient()) {
- client.Info(
- oldWorkingDir,
- (sender, info) => {
- revisionNumber = info.Revision.ToString(CultureInfo.InvariantCulture);
- });
- }
- } catch (Exception e) {
- Console.WriteLine("Reading revision number with Svn.Net failed: " + e.ToString());
- } finally {
- Environment.CurrentDirectory = oldWorkingDir;
- }
- if (revisionNumber == null || revisionNumber.Length == 0 || revisionNumber == "0") {
- revisionNumber = ReadCurrentRevisionFromFile();
- }
- if (revisionNumber == null || revisionNumber.Length == 0 || revisionNumber == "0") {
- throw new ApplicationException("Error reading revision number");
- }
- return revisionNumber;
- }
-
- string ReadCurrentRevisionFromFile()
- {
- using (StreamReader reader = new StreamReader(Path.Combine(applicationFolder, @"..\..\..\..\REVISION"))) {
- return reader.ReadLine();
- }
- }
-
- ///
- /// Checks that the current revision matches the revision last used to
- /// update the SharpDevelop.Setup.wixproj.user file.
- ///
- bool RevisionExists(string currentRevision)
- {
- // Read previous revision.
- string previousRevision = ReadPreviousRevision();
- if (previousRevision != null) {
- return previousRevision == currentRevision;
- }
- return false;
- }
-
- ///
- /// Reads the previous revision number from the Setup\bin\REVISION file.
- ///
- string ReadPreviousRevision()
- {
- if (File.Exists(previousRevisionFileName)) {
- using (StreamReader reader = new StreamReader(previousRevisionFileName, true)) {
- return reader.ReadLine();
- }
- }
- return null;
- }
- }
-}
diff --git a/src/Tools/UpdateSetupInfo/Readme.txt b/src/Tools/UpdateSetupInfo/Readme.txt
deleted file mode 100644
index 7dcd735ddb1..00000000000
--- a/src/Tools/UpdateSetupInfo/Readme.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-
-Updates the SharpDevelop Setup information
-------------------------------------------
-
-Product Revision (Subversion revision number)
-
-With WiX 3 the package code and product code guids do not need to be generated by
-this tool and can be autogenerated by WiX.
-
-The build server and the buildSetup.bat executes the UpdateSetupInfo tool before
-building SharpDevelop.Setup.sln. The SharpDevelop.Setup project does not use the tool.
-
-Operation
----------
-
-1) The SharpDevelop.Setup.wixproj.user is is generated each time the tool is run
-based on the SharpDevelop.Setup.wixproj.user.template file. The product revision is inserted
-into the newly generated file. The last used revision is written to a REVISION
-file which is put in the Setup\bin folder. This not in the repository and is only
-used to stop the tool from regenerating the product guid if the revision number has not
-changed.
-
-2) The build server and buildSetup.bat will run the UpdateSetupInfo tool.
-This is not done by the SharpDevelop.Setup project itself intentionally so
-nothing changes when building the project from inside SharpDevelop. The
-modified SharpDevelop.Setup.wixproj.user need not be checked into the
-repository on each build on the build server.
-
-Creating Releases
------------------
-
-When creating a release either the setup msi from the build server should be
-used or that generated after running buildSetup.bat. This will revision number
-if the current revision has changed.
-
-
diff --git a/src/Tools/UpdateSetupInfo/UpdateSetupInfo.csproj b/src/Tools/UpdateSetupInfo/UpdateSetupInfo.csproj
deleted file mode 100644
index 67a6c9c828f..00000000000
--- a/src/Tools/UpdateSetupInfo/UpdateSetupInfo.csproj
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
- Exe
- UpdateSetupInfo
- UpdateSetupInfo
- Debug
- AnyCPU
- {75E6D78C-DC66-40F1-90AC-F9F97ADE3506}
- False
- False
- False
- Auto
- 4194304
- x86
- 4096
- 4
- false
- bin
- C:\Users\Daniel\AppData\Roaming\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis
- v2.0
-
-
- obj\Debug\
- False
- DEBUG;TRACE
- true
- Full
- True
-
-
- obj\Release\
- True
- TRACE
- False
- None
- False
-
-
-
- ..\..\Libraries\SharpSvn\SharpSvn.dll
- False
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/Tools/UpdateSetupInfo/UpdateSetupInfo.sln b/src/Tools/UpdateSetupInfo/UpdateSetupInfo.sln
deleted file mode 100644
index 4c9a4ced8d4..00000000000
--- a/src/Tools/UpdateSetupInfo/UpdateSetupInfo.sln
+++ /dev/null
@@ -1,18 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-# SharpDevelop 3.1.0.3932
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UpdateSetupInfo", "UpdateSetupInfo.csproj", "{75E6D78C-DC66-40F1-90AC-F9F97ADE3506}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {75E6D78C-DC66-40F1-90AC-F9F97ADE3506}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {75E6D78C-DC66-40F1-90AC-F9F97ADE3506}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {75E6D78C-DC66-40F1-90AC-F9F97ADE3506}.Release|Any CPU.Build.0 = Release|Any CPU
- {75E6D78C-DC66-40F1-90AC-F9F97ADE3506}.Release|Any CPU.ActiveCfg = Release|Any CPU
- EndGlobalSection
-EndGlobal