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]
|