161
I Use This!
Inactive

News

Analyzed about 18 hours ago. based on code collected 2 days ago.
Posted over 17 years ago by Laputa
In continuing to list changes to SharpDevelop 3, we are going to talk about the code coverage addin in SharpDevelop 3 "Montferrer" in this blog post. Previously, the addin used NCover for calculating code coverage (this is a metric you gain by ... [More] writing unit tests). However, recently NCover was turned into a commercial product. Because we only include / support tools that are free to use for anyone (commercial or open source / hobby development), we switched to a different tool - PartCover...(read more) [Less]
Posted over 17 years ago by Laputa
An issue that initially came up in 2006 ( Unable to compile #develop: access denied ) "resurfaced" on our contributors mailing list because one of our developers ran into this very problem that McAfee blocks access to our Main\StartUp folder: The ... [More] problem and a workaround is described in McAfee VirusScan and the Startup folder . However, this developer doesn't have the administrative rights to change this setting of McAfee, so he asked whether we are going to rename the folder. My take...(read more) [Less]
Posted over 17 years ago by MattWard
SharpDevelop 3.0 now supports WiX 3.0.There are some changes to how things work compared to the WiX integration in SharpDevelop 2. The differences will be covered in the following sections.WiX Project TemplatesThere are some ... [More] new WiX project templates available. A basic empty project template and a template for each of the standard WiX UI library dialog sequences.Adding WiX ExtensionsWiX extensions are now displayed in the project browser instead of in the project options. They can be added by right clicking the WiX Extensions folder and selecting Add WiX Extension..Project OptionsThe Library and Linking tabs have been removed from the project options since the WiX extensions can now be added from the project browser.The Compiling tab has some new options as shown below.The WiX Variables field can be used to override the standard WiX UI library settings. In the screenshot above the standard licence agreement and dialog background bitmap are being replaced with new ones.The Suppress ICEs field is used to stop WiX from showing errors or warnings for particular Internal Consistency Evaluators (ICEs). After building your installer WiX now validates it against a standard set of rules which saves you from having to use another validation tool such as Orca. Localized string files are no longer specified in the Application's tab. Instead add the file to the project and change its Build action to Embedded Resource.Other EditorsIf you want integration with Visual Studio 2005 or 2008 then please check out Justin Rockwood's Votive.Rob Mensching has a list of WiX editors, including commerical ones, on his blog.It also looks like a future version of Visual Studio will ship with WiX.  [Less]
Posted over 17 years ago by Laputa
Over the past months we made a couple of feature changes in SharpDevelop 3 (currently alpha status). One major change is that we moved NAnt and Mono support from the binary distribution (aka "setup") to the source code distribution. You can find the ... [More] addins ready to build in the \samples directory: What was the reasoning behind this decision? For NAnt, we had taken this decision a long time ago because SharpDevelop itself no longer uses NAnt as the primary build solution, and as such, the...(read more) [Less]
Posted over 17 years ago by MattWard
There have been some fairly large code changes on moving from SharpDevelop 2.2 to 3.0 and addins written for 2.2 are unlikely to work without some modification. We will look at the changes in the core parts of SharpDevelop and then ... [More] look at one way to do the porting.Not all the differences are covered in the next section just those types and methods that are likely to have been used by an addin.ICSharpCode.CoreTypeDescriptionICSharpCode.Core.AddInReferencebool RequirePreload New property that specifies that when a type from an addin is created any addins that are needed by this addin will be preloaded if this flag is set to true. This corresponds to the new requirePreload attribute in an .addin file. <Dependency addin="ICSharpCode.XmlEditor" requirePreload="true"/>ICSharpCode.Core.AddInTreeNode.TopologicalSortType is no longer public.ICSharpCode.Core.FileUtilitybool IsValidPath(string path)New method that determines whether a full or relative path is valid. This replaces the IsValidFileName method.bool IsValidFileName(string fileName)Renamed to IsValidPath.static string NormalizePath(string fileName)New method that gets the normalized version of the filename. Slashes are replaced with backslashes, backreferences "." and ".." are 'evaluated'.ICSharpCode.Core.Propertiesvoid ReadProperties(XmlReader reader, string endElement)Method is no longer public but internal.NRefactoryTypeDescriptionICSharpCode.NRefactory.Ast.ArrayInitializerExpressionReplaced by the CollectionInitializerExpression type.ICSharpCode.NRefactory.Ast.BlockStatementBlockStatement NullThe Null property now returns a BlockStatement instead of a NullStatement type.ICSharpCode.NRefactory.Ast.FieldReferenceExpressionReplaced by the MemberReferenceExpression type.ICSharpCode.NRefactory.Ast.MemberReferenceExpressionReplaces the FieldReferenceExpression type.ICSharpCode.NRefactory.Ast.InvocationExpressionList<TypeReference> TypeArgumentsThis property has been removed.ICSharpCode.NRefactory.Ast.NullArrayInitializerExpressionThis type has been removed.ICSharpCode.NRefactory.Ast.NullBlockStatementNo longer a public type instead it is now internal. ICSharpCode.NRefactory.Ast.NullConstructorInitializerNo longer a public type instead it is now internal. ICSharpCode.NRefactory.Ast.NullEventAddRegionNo longer a public type instead it is now internal. ICSharpCode.NRefactory.Ast.NullEventRaiseStatementNo longer a public type instead it is now internal. ICSharpCode.NRefactory.Ast.NullEventRemoveStatementNo longer a public type instead it is now internal. ICSharpCode.NRefactory.Ast.NullExpressionNo longer a public type instead it is now internal. ICSharpCode.NRefactory.Ast.NullPropertyGetRegionNo longer a public type instead it is now internal. ICSharpCode.NRefactory.Ast.NullPropertySetRegionNo longer a public type instead it is now internal. ICSharpCode.NRefactory.Ast.NullStatementNo longer a public type instead it is now internal.ICSharpCode.NRefactory.IAstVisitorVarious new methods on this interface to support new types.object VisitArrayInitializerExpression(...)Method removed along with the ArrayInitializerExpression type. Replaced by the VisitCollectionInitializerExpression method.object VisitFieldReferenceExpression(...)Method removed along with the ArrayInitializerExpression type. Replaced by the VisitMemberReferenceExpression method.ICSharpCode.NRefactory.Visitors.NodeTrackingAstVisitorAll TrackedVisit methods have been renamed and now include the name of the type being tracked (e.g. TrackedVisitAddHandlerStatement).ICSharpCode.SharpDevelop.DomTypeDescriptionICSharpCode.SharpDevelop.Dom.AbstractAmbiencebool IncludeBodiesReplaced by the new IncludeBody property.bool IncludeBodyReplaces the IncludeBodies property.bool IncludeHTMLMarkupReplaced by the new IncludeHtmlMarkup property.bool IncludeHtmlMarkupReplaces the old IncludeHTMLMarkup property.bool UseFullyQualifiedMemberNamesReplaced by the new UseFullyQualifiedMemberTypeNames property.bool UseFullyQualifiedMemberTypeNamesReplaces the old UseFullyQualifiedMemberNames property.String Convert(ModifierEnum)Method removed.ICSharpCode.SharpDevelop.Dom.AbstractReturnTypeint TypeArgumentCountReplaces the old TypeParameterCount property.int TypeParameterCountReplaced by the new TypeArgumentCount property. ICSharpCode.SharpDevelop.Dom.AttributeArgumentType has been removed.ICSharpCode.SharpDevelop.Dom.ClassFinderThe constructors now take a ParseInformation type instead of a filename.ICSharpCode.SharpDevelop.Dom.ConversionFlagsIncludeBodiesReplaced by IncludeBody.IncludeBodyReplaces IncludeBodies.IncludeHTMLMarkupReplaced by IncludeHtmlMarkup.IncludeHtmlMarkupReplaces IncludeHTMLMarkup.QualifiedNamesOnlyForReturnTypesEnum value removed.UseFullyQualifiedNamesReplaced by two new enums UseFullyQualifiedMemberNames and UseFullyQualifedTypeNames.UseFullyQualifiedMemberNamesReplaces the UseFullyQualifiedNames enum value.UseFullyQualifiedTypeNamesReplaces the UseFullyQualifiedNames enum value.ICSharpCode.SharpDevelop.Dom.CSharpExpressionFinderint LastExpressionStartPositionProperty has been removed.string FindExpressionInternal(string inText, int offset)Method has been removed.ctor(string fileName)Constructor now takes a ParseInformation type instead of the filename.ICSharpCode.SharpDevelop.Dom.CtrlSpaceResolveHelperResolveResult GetResultFromDeclarationLine(IClass callingClass, IMethodOrProperty callingMember, int caretLine, int caretColumn, string expression)Obsolete method removed. Should use the GetResultFromDeclarationLine method that takes an ExpressionResult instead of a string.ICSharpCode.SharpDevelop.Dom.DefaultAttributeint CompareTo(IAttribute attribute)Method removed.string NameProperty has been removed. The attribute name can now be obtained from the Name property of the AttributeReturnType.ICSharpCode.SharpDevelop.Dom.DefaultCompilationUnitList<IClass> GetOuterClasses(int caretLine, int caretColumn)Method removed.ICSharpCode.SharpDevelop.DomRegionint CompareTo(DomRegion region)Method removed and replaced by the Equals method.ctor(Location start, Location end)Replaced by the static FromLocation method.ICSharpCode.SharpDevelop.ExpressionContextbool IsAttributeContextProperty has been removed. Instead compare the ExpressionContext against the ExpressionContext.Attribute.ExpressionContext GetAttribute(IProjectContent projectContent)Method removed. To indicate that an expression is an attribute use the ExpressionContext.Attribute type.ExpressionContext TypeDerivingFrom(IClass baseClass, bool isObjectCreation)Method now requires an IReturnType instead of an IClass type.ICSharpCode.SharpDevelop.ExpressionResultctor(string expression, ExpressionContext context, object tag)Replaced by the new constructor that also takes a DomRegion.ctor(string expression, object tag)Replaced by the new constructor that also takes a DomRegion and ExpressionContext.ICSharpCode.SharpDevelop.GacAssemblyNameType removed. Code should use the DomAssemblyName instead.ICSharpCode.SharpDevelop.GacInteropGacAssemblyName FindBestMatchingAssemblyName(GacAssemblyName name)Method now uses DomAssemblyName types.GacAssemblyName FindBestMatchingAssemblyName(string name)Method now returns a DomAssemblyName type.ICSharpCode.SharpDevelop.GacInterop.AssemblyListEntryType has been removed. Code should now use a DomAssemblyName type.ICSharpCode.SharpDevelop.Dom.IAmbienceString Convert(ModifierEnum)Method removed.ICSharpCode.SharpDevelop.Dom.IAttributestring NameProperty has been removed. The attribute name can now be obtained from the Name property of the AttributeReturnType.ICSharpCode.SharpDevelop.Dom.ICompilationUnitList<IClass> GetOuterClasses(int caretLine, int caretColumn) Method removed. Code should now use the IClass's DeclaringType property. For example: IClass type = callingClass.DeclaringType; while (type != null) { ... type = type.DeclaringType; } ICSharpCode.SharpDevelop.Dom.IProjectContentIClass GetClass(string typeName)Method removed. Code should now use GetClass(string typeName, int typeParameterCount) and pass 0 for the typeParameterCount.ICSharpCode.SharpDevelop.Dom.IResolverArrayList CtrlSpace(int caretLine, int caretColumn, string fileName, string fileContent, ExpressionContext context)Method changed to use a ParseInformation type instead of a filename.ResolveResult Resolve(ExpressionResult expressionResult, int line, int col, string fileName, string fileContent)Method changed to take a ParseInformation type instead of a filename and the line and column parameters have been removed.ICSharpCode.SharpDevelop.Dom.IReturnTypeint TypeArgumentCountReplaces the old TypeParameterCount property.int TypeParameterCountReplaced by the new TypeArgumentCount property.ICSharpCode.SharpDevelop.Dom.MemberLookupHelperIMethod FindOverload(IList<IMethod> methods, IReturnType[] typeParameters, IReturnType[] arguments)Method now has an extra out parameter called resultIsAcceptable. This parameter is true if the resulting method is an acceptable match, false if the resulting method is just a guess and will lead to a compile error.ICSharpCode.SharpDevelop.Dom.NRefactoryResolverbool Initialize(string fileName, int line, int column)Method now takes a ParseInformation type instead of a filename.IClass SearchClass(string name)Method now takes an extra Location parameter which is used to search for a class at a particular location in the file. Code that does not need to specify a location should use Location.Empty.IReturnType DynamicLookup(string identifier)Method now takes an extra Location parameter. Use Location.Empty if no location can be specified.IReturnType SearchMember(IReturnType type, string memberName)Method removed. Instead of using this method call GetMember and then use the IMember's ReturnType.IReturnType SearchType(string name)Method now takes an extra Location parameter. Use Location.Empty if no location can be specified.ResolveResult Resolve(ExpressionResult expressionResult, int line, int column, string fileName, string fileContent)Method now takes a ParseInformation type instead of the filename. The line and column parameters are no longer required.ArrayList CtrlSpace(int caretLine, int caretColumn, string fileName, string fileContent, ExpressionContext context)Method changed to use a ParseInformation type instead of a filename.ICSharpCode.SharpDevelop.Dom.ProjectContentRegistryIProjectContent GetExistingProjectContent(AssemblyName assembly)Obsolete method has been removed. Use the overloaded method that takes a DomAssemblyName type instead.IProjectContent GetExistingProjectContent(string itemInclude, string itemFileName)Method removed. Use the overloaded method that takes a single string parameter.ICSharpCode.SharpDevelop.Dom.ReflectionProjectContentAssemblyName[] ReferencedAssembliesProperty removed and replaced by the ReferencedAssemblyNames property which returns a list of DomAssemblyNames.IList<DomAssemblyName> ReferencedAssemblyNamesReplaces the old ReferencedAssemblies property.ICSharpCode.SharpDevelop.WidgetsTypeDescriptionICSharpCode.SharpDevelop.Widgets.SideBar.SideTabbool IsClipboardRingProperty removed.ICSharpCode.SharpDevelopTypeDescriptionICSharpCode.SharpDevelop.ClassBrowserIconServiceint CombineIndexField removed and replaced with SolutionIndex.ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor.CtrlSpaceCompletionDataProviderbool ForceNewExpressionProperty removed.ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor.SharpDevelopTextEditorPropertiesbool CreateBackupCopyProperty removed.bool UseAntiAliasedFontProperty removed.ICSharpCode.SharpDevelop.FileServiceIWorkbenchWindow GetOpenFile(string fileName)Method now returns an IViewContent type.IWorkbenchWindow NewFile(string defaultName, string language, string content)Method now returns an IViewContent type and the language parameter has been removed.IWorkbenchWindow OpenFile(string fileName)Method now returns an IViewContent type.ICSharpCode.SharpDevelop.Gui.AbstractBaseViewContentClass has been removed.ICSharpCode.SharpDevelop.Gui.AbstractSecondaryViewContentvoid NotifyAfterSave(bool successful)Method removed.void NotifyBeforeSave()Method removed.void NotifyFileNameChanged()Method removed. Code should either use the TitleNameChanged event or the FileNameChanged event on the PrimaryFile.ICSharpCode.SharpDevelop.Gui.AbstractViewContentevent DirtyChangedEvent renamed to IsDirtyChanged.string FileNameProperty renamed to PrimaryFileName.bool IsUntitledProperty removed. The property has been moved to the OpenedFile type which can be accessed via the view content's PrimaryFile property.void Load(string fileName)Method replaced by the Load method that takes an OpenedFile and a Stream.void Load(OpenedFile file, Stream stream)New method that is used to open a file in a view. The OpenedFile type contains information about the file, whilst the stream is the actual file data.event SavedEvent removed.event SavingEvent removed.string UntitledNameProperty removed. The untitled name is now stored as the filename.ICSharpCode.SharpDevelop.Gui.DefaultWorkbenchClass is now private and no longer publicly accessible.ICSharpCode.SharpDevelop.Gui.DriveObjectClass is now private and no longer publicly accessible.ICSharpCode.SharpDevelop.Gui.ExtTreeViewvoid ApplyViewStateString(string state, TreeView tree)Method moved to the TreeViewHelper class.string GetViewStateString(TreeView tree)Method moved to the TreeViewHelper class.ICSharpCode.SharpDevelop.Gui.FileListClass is now private and no longer publicly accessible.ICSharpCode.SharpDevelop.Gui.IBaseViewContent Interface has been removed. Most of the interface has been moved to the IViewContent interface apart from the following methods which no longer exist. void Deselected()void Deselecting()void Selected()void SwitchedTo()ICSharpCode.SharpDevelop.Gui.ICanBeDirtyevent DirtyChangedEvent renamed to IsDirtyChanged.bool IsDirtyProperty setter is no longer defined in the interface. Only the getter is defined.ICSharpCode.SharpDevelop.Gui.IParseableContentInterface removed.ICSharpCode.SharpDevelop.Gui.ISecondaryViewContentInterface removed. All secondary view contents now implement the IViewContent interface.ICSharpCode.SharpDevelop.Gui.IViewContentbool IsDisposedNew property that indicates whether the view has been disposed.bool IsUntitledProperty removed. Code should check the PrimaryFile's Untitled property instead.event SavedEvent removed.bool SupportsSwitchFromThisWithoutSaveLoad(OpenedFile file, IViewContent newView)New method. Determines whether switching without a Save/Load is supported when switching from this view to another view.bool SupportsSwitchToThisWithoutSaveLoad(OpenedFile file, IViewContent oldView)New method. Determines whether switching without a Save/Load is supported when switching to this view from another view.IWorkbenchWindow WorkbenchWindowProperty moved from the now obsolete IBaseViewContent interface. Gives access to the workbench window associated with this view.List<ISecondaryViewContent> SecondaryViewContentsProperty now returns an ICollection instead of a list.event FileNameChangedEvent moved to the OpenedFile class which is accessible via the PrimaryFile property.event SavingEvent removed.OpenedFile PrimaryFileNew property that gives access to information about the primary file associated with this view.IList<OpenedFile> FilesNew property that returns a list of files that are associated with this view.event DisposedNew event raised when the view is disposed.event TabPageTextChangedNew event raised when the tab page text at the bottom of the window is changed.string FileNameThe filename associated with a view is now accessible from the PrimaryFileName property.string TabPageTextGets or sets the tab page text at the bottom of the window. This property was originally on the now obsolete IBaseViewContent interface.string UntitledNameProperty removed. The UntitledName is now the same as the PrimaryFileName.Control ControlGets or sets the control associated with this view. Originally part of the IBaseViewContent interface.void Load(string fileName)Replaced by the Load method that takes an OpenedFile and a Stream.void Load(OpenedFile file, Stream stream)New method that is used to open a file in a view. The OpenedFile type contains information about the file, whilst the stream is the actual file data..void Save()Replaced by the Save method that takes an OpenedFile and a Stream.void Save(string fileName)Replaced by the Save method that takes an OpenedFile and a Stream.void Save(OpenedFile file, Stream stream)New method that is used to save a file in a view.ICSharpCode.SharpDevelop.Gui.IViewContentMementoClass removed.ICSharpCode.SharpDevelop.Gui.IViewContentMementoCreatorClass removed.ICSharpCode.SharpDevelop.Gui.IWorkbenchWindowIBaseViewContent ActiveViewContentThe ActiveViewContent property is now an IViewContent.IViewContent ViewContentProperty removed. Use the ActiveViewContent property instead.ICSharpCode.SharpDevelop.IDisplayBindingbool CanCreateContentForFile(string fileName)Method now takes an OpenedFile type instead of a string.bool CanCreateContentForLanguage(string language)Method removed.ICSharpCode.SharpDevelop.ISecondaryDisplayBindingISecondaryViewContent[] CreateSecondaryViewContent(IViewContent view)Method now returns an IViewContent array since the ISecondaryViewContent interface is obsolete.ICSharpCode.TextEditorTypeDescriptionICSharpCode.TextEditor.CaretPoint PositionThe Position property now uses the ICSharpCode.TextEditor.TextLocation type instead of the System.Drawing.Point type.Point ValidatePosition(Position pos)The method now returns and uses the ICSharpCode.TextEditor.TextLocation type instead of the System.Drawing.Point type.ICSharpCode.TextEditor.Document.Bookmarkevent LineNumberChangedEvent removed.ICSharpCode.TextEditor.Document.BookmarkManagerevent ChangedEvent removed.ICSharpCode.TextEditor.Document.DefaultFormattingStrategyint FormatLine(TextArea textArea, int line, int caretOffset, char charTyped)Method now no longer returns anything.ICSharpCode.TextEditor.Document.DefaultTextEditorPropertiesbool UseAntiAliasedFontProperty removed.ICSharpCode.TextEditor.Document.IDocumentLineSegment GetLineSegment(int line)The default implementation in the DefaultLineSegment class no longer allows the line number to be equal to the number of items in the IDocument's LineSegment collection.Point OffsetToPosition(int offset)Method now returns a TextLocation type.int PositionToOffset(Point point)Method now takes a TextLocation type.ICSharpCode.TextEditor.Document.IFormattingStrategyint FormatLine(TextArea textArea, int line, int caretOffset, char charTyped)Method now no longer returns anything.ICSharpCode.TextEditor.Document.ILineManagerInterface has been removed.ICSharpCode.TextEditor.Document.ISelectionbool ContainsPosition(Point point)Method now uses a TextLocation type.Point EndPositionProperty now uses a TextLocation type.Point StartPositionProperty now uses a TextLocation type.ICSharpCode.TextEditor.Document.ITextEditorPropertiesbool CreateBackupCopyProperty removed.bool UseAntiAliasedFontProperty removed.ICSharpCode.TextEditor.Document.LineLengthEventArgsReplaced by the LineLengthChangedEventArgs type.ICSharpCode.TextEditor.Gui.InsightWindow.IInsightDataProviderchar CharTypedProperty removed.ICSharpCode.TextEditor.TextEditorControlBaseevent ChangedEvent renamed to TextChanged.bool CreateBackupCopyProperty removed.bool IsUpdatingProperty removed.bool UseAntiAliasedFontProperty removed.ICSharpCode.TextEditor.ToolTipRequestEventArgsPoint LogicalPositionProperty now uses a TextLocation type.ICSharpCode.TextEditor.Undo.UndoStackvoid CombineLast(int actionCount)Method removed. Similar functionality can be obtained by using the StartUndoGroup and EndUndoGroup method.void UndoLast(int actionCount)Method removed. Similar functionality can be obtained by using the StartUndoGroup and EndUndoGroup method.How to PortThis section looks at one way to port an addin. This is the way that the IronPython addin was ported from SharpDevelop 2.2 to SharpDevelop 3.Download the source code for SharpDevelop 3.0 and 2.2.Copy the source code of your addin to a folder inside SharpDevelop 3.0.Run three copies of SharpDevelop, one to view SharpDevelop 2.2's source, one to view SharpDevelop 3.0's source, one with your addin. In the other copies of SharpDevelop you should open SharpDevelop.sln for 2.2 and 3.0. This will allow you to quickly search for SharpDevelop classes when you find your addin code will not compile.Compile your code and fix the code or comment it out as you try to work out what is wrong.You do not have to convert the project to use .NET 3.5. SharpDevelop itself uses it, but some of the addins do not. With the IronPython addin I needed to change it to use .NET 3.5 since there were some assembly conflicts between what SharpDevelop was using and what the addin was using. Obviously changing to use .NET 3.5 will allow you to use any new features of this framework..NET Framework DifferencesOne change in .NET 3.5 caused me a few problems when porting the IronPython addin. This was a change in MSBuild.After finally getting the IronPython addin to compile with the modified SharpDevelop 3 assemblies there was an assembly conflict for MSBuild. The ICSharpCode.SharpDevelop assembly now uses MSBuild 3.5 assemblies whilst the IronPython build task project and test project were using MSBuild 2.0. This was fixed by converting these two projects so they use the .NET Framework 3.5. This can be done by opening the project's properties, selecting the Compiling tab, then clicking the Convert Project to C# 3.0 button. In the dialog that opens we select the "Change target framework to .NET 3.5" and click the OK button. After making this change the addin compiled and worked however all the unit tests for the IronPython build tasks were failing with the error:System.ArrayTypeMismatchException : Attempted to access an element as a type incompatible with the array.The test code that was failing:PythonCompilerTask compiler = new PythonCompilerTask(); TaskItem sourceTaskItem = new TaskItem("test.py"); compiler.Sources = new ITaskItem[] {sourceTaskItem}; The last line was failing when the unit test was run. The TaskItem type implements the ITaskItem interface so the code should have worked. The reason for this error is that both the build task and build task tests project were referencing the MSBuild libraries just using the reference name. <Reference Include="Microsoft.Build.Framework" /> <Reference Include="Microsoft.Build.Tasks" /> <Reference Include="Microsoft.Build.Utilities" /> Running MSBuild from the command line the actual assemblies being used were a mix of 3.5 and 2.0 versions."Python.Build.Tasks.csproj": /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\Microsoft.Build.Framework.dll" /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Build.Tasks.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Build.Utilities.dll Printing out the code base of the TaskItem and ITaskItem types whilst running the unit tests showed that the TaskItem was being taken from Microsoft.Build.Utilities assembly version 2.0 and the ITaskItem was being taken the Microsoft.Build.Framework 3.5 assembly. The TaskItem we actually needed was in the new Microsoft.Build.Utilities assembly version 3.5. Changing the project references so they used this new 3.5 assembly fixed the problem. [Less]
Posted over 17 years ago by Laputa
Microsoft just released Visual Studio 2008 and the .NET Framework 3.5. Download .NET Framework 3.5 To develop applications for the .NET Framework 3.5, download SharpDevelop 3.0 from the build server . Note that SharpDevelop 3.0 are not release ... [More] quality builds, especially the integrated debugger is very unstable. As currently no one is working on the debugger (hint: you can help!), I disabled it in SharpDevelop 3.0.0.2745 so that people trying SharpDevelop 3.0 do not immediately get exceptions when...(read more) [Less]
Posted over 17 years ago by MattWard
This is a tutorial about how to create a language binding for SharpDevelop using the IronPython addin as an example. As well as covering how to create a language binding it will also look at how the addin used IronPython. The source code for the ... [More] IronPython addin is available at the end of this tutorial. The tutorial will cover the following. * Syntax Highlighting * File Filters * Project and File Templates * Compiling a Project * Project Options * Code Folding * Class View * Creating a Forms Designer * Code Completion * Code Conversion ...(read more) [Less]
Posted over 17 years ago by Laputa
Daniel is currently working on areas such as project subsystem or code completion (aside from fixing bugs). Therefore, work on the WPF designer is stalled. But Daniel put together a list of tasks (hard, medium & easy) that you could be helping us ... [More] with. So if you are interested in helping, and want to be part of writing an open source WPF designer, please do get in touch with me at christophw at icsharcode.net ! WPF Designer mini tasks Here are some jobs to do on the WPF Designer broken into small...(read more) [Less]
Posted over 17 years ago by MattWard
Support for IronPython 1.1 is now available for SharpDevelop 2.2.1.2648. The IronPython addin is an early alpha release and is not an official part of SharpDevelop 2.2.1 so it is available as a separate download at ... [More] the end of this post. The addin will not work with SharpDevelop 3.0 nor IronPython 2.0. Features Code folding Syntax highlighting File and project templates for Console and Windows Forms applications Code completion (limited) Windows Forms designer C# and VB.NET code conversion to Python Please note that code completion, the forms designer and code conversion all need a lot more work. Creating a Windows Application Open up the new project dialog by selecting New then Solution from the File menu. Selecting the Python category will show two project templates. One will create a Windows console application and the other will create a Windows Forms application. Once you have created a new project you will then need to add a reference to the IronPython assembly. Open the Projects window by selecting Projects from the View menu. In the Projects window, right click the project and select Add Reference. Select the .NET Assembly Browser tab and click the Browse button. Then browse to IronPython.dll. The addin includes this file so can either extract it from there or if you installed it from the sdaddin file then you should be able to find the IronPython.dll in the folder:   C:\Documents and Settings\[YourUserName]\Application Data\ICSharpCode\SharpDevelop2.1\AddIns\ICSharpCode.PythonBinding To build the application select Build Solution from the Build menu. The built executables cannot be run with the debugger so instead select Run without debugger from the Debug menu. If you are running a windows app and nothing seems to happen then open a command line window and run it from there. This way you should see any errors reported from the IronPython runtime. There are a few file templates which can be added to the project as shown below. Designing Windows Forms The Windows Forms designer is still in its early stages so please be warned that it may break the form's code or worse. Most of the Windows Forms controls work with the designer but things like adding columns to a list view will generate code that does not compile. The designer can be opened in the usual way by opening the form in the text editor and selecting the Design tab at the bottom of the text editor. Once open in the designer you can add controls to the form in the usual way from the Tools window. In the screenshot below a label, text box and a button have been added. Click the Source tab to view the generated code in the InitializeComponents method. Code Folding Code folding allows you to collapse regions of a class. Code Completion Code completion is very limited currently. If you type a space after an import statement then you will get a list of namespaces available. Code completion for classes is one area which has the most limited support. If you open Program.py you can get code completion for static classes such as System.Console but it does not work everywhere. Code Conversion To convert VB.NET or C# to Python open the file you want to convert and then select Convert code to Python from the Tools menu. The code conversion is limited to classes so it will not convert an arbitary piece of code that is not inside a class. A C# class being converted to Python is shown below. The code conversion is still at an early stage of development so it will fail on complicated classes. Class View Classes in the open solution will be displayed in the Class browser (Select Classes from the View menu). From there you can double click a class or method and the text editor will display the corresponding code. Standalone Python Files The addin has support for standalone Python files. If you open a file with a .py file extension then a Python menu will appear. From this menu you can run ipy.exe and have it execute the file. Any output from the Python script will be shown in the Output window. By default the ipy.exe run is the one that ships with the addin. You can choose another IronPython console by select Options from the Tools menu. Selecting the Python option allows you to choose another IronPython console. Installing the IronPython AddIn Rename the IronPythonAddIn-0.2.1.zip file to IronPythonAddIn-0.2.1.sdaddin. From the Tools menu select AddIn Manager . Click the Install AddIn button. In the Open File Dialog browse to the IronPythonAddIn-0.2.1.sdaddin file and click the Open button. Click the Close button. Restart SharpDevelop. Future Work Since SharpDevelop 2.2.1.2648 is the last release in the 2.x branch the next release of the IronPython addin will be for SharpDevelop 3.0 and it will support IronPython 2.0. Python Links Some of the Python tutorials and links used whilst creating the IronPython addin. Python documentation by Guido van Rossum the author of Python. Dive into Python book by Mark Pilgrim. The full text is available online. IronPython homepage.     [Less]
Posted over 17 years ago by JohnReilly
I think the path to #Zip 1.0 should be as short and simple as possible.  Tidy up the public interfaces/existing code and fix as many bugs as possible.  Maybe add a feature or two if they are small.  Getting rid of the current licensing is in there as ... [More] well, although in thats not so big a deal in the short term. I think tidying things up is really the best thing to do at this point.     Overview/commentary The library as it stands is a collection of code from various places that when combined arent cohesive/coherent as a whole.  Also the class interfaces are ok in some places and a bit rough in others. I have a strong urge to restructure things to iron out some of the wrinkles which would break compatability with existing code.  Probably the only way to do this effectively would be to create a new library and rebuild it from scratch.  My impression is that the majority of developers only use the Zip classes so it might not be seen as a good thing to do.  That and I dont really have the time to devote to such a large undertaking either... NOTE: This just states my view on were its at.  This is intended to elicit comment on the big picture rather than state whats happening.  An equally valid strategy might be to continue to revamp the existing classes in an incremental way.  I dont really see how to do this and tidy things up well though.   [Less]