Browse Source
Begin work on a Xaml language binding. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2564 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61shortcuts
44 changed files with 784 additions and 220 deletions
@ -1,13 +1,13 @@
@@ -1,13 +1,13 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
<PropertyGroup> |
||||
<PrepareForRunDependsOn>$(PrepareForRunDependsOn);MyPostBuildTarget</PrepareForRunDependsOn> |
||||
</PropertyGroup> |
||||
<ItemGroup> |
||||
<MyCopyItem Include="$(MSBuildProjectDirectory)\..\..\RequiredLibraries\booc.*" /> |
||||
<MyCopyItem Include="$(MSBuildProjectDirectory)\..\..\RequiredLibraries\*.targets" /> |
||||
<MyCopyItem Include="$(MSBuildProjectDirectory)\..\..\RequiredLibraries\Boo.Microsoft.Build.Tasks.dll" /> |
||||
</ItemGroup> |
||||
<Target Name="MyPostBuildTarget"> |
||||
<Copy SourceFiles="@(MyCopyItem)" DestinationFolder="$(OutputPath)" /> |
||||
</Target> |
||||
<PropertyGroup> |
||||
<PrepareForRunDependsOn>$(PrepareForRunDependsOn);MyPostBuildTarget</PrepareForRunDependsOn> |
||||
</PropertyGroup> |
||||
<ItemGroup> |
||||
<MyCopyItem Include="$(MSBuildProjectDirectory)\..\..\RequiredLibraries\booc.*" /> |
||||
<MyCopyItem Include="$(MSBuildProjectDirectory)\..\..\RequiredLibraries\*.targets" /> |
||||
<MyCopyItem Include="$(MSBuildProjectDirectory)\..\..\RequiredLibraries\Boo.Microsoft.Build.Tasks.dll" /> |
||||
</ItemGroup> |
||||
<Target Name="MyPostBuildTarget"> |
||||
<Copy SourceFiles="@(MyCopyItem)" DestinationFolder="$(OutputPath)" /> |
||||
</Target> |
||||
</Project> |
||||
|
||||
@ -1,11 +0,0 @@
@@ -1,11 +0,0 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
<PropertyGroup> |
||||
<PrepareForRunDependsOn>$(PrepareForRunDependsOn);MyPostBuildTarget</PrepareForRunDependsOn> |
||||
</PropertyGroup> |
||||
<Target Name="MyPostBuildTarget"> |
||||
<!-- Delete the XmlEditor.addin file that gets copied to the WixBinding addin output |
||||
folder due to an MSBuild bug. Otherwise the UnitTesting.addin file will be |
||||
loaded twice by SharpDevelop --> |
||||
<Delete Files="$(OutputPath)\XmlEditor.addin" ContinueOnError="True"/> |
||||
</Target> |
||||
</Project> |
||||
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System.Reflection; |
||||
|
||||
// Information about this assembly is defined by the following
|
||||
// attributes.
|
||||
//
|
||||
// change them to the information which is associated with the assembly
|
||||
// you compile.
|
||||
|
||||
[assembly: AssemblyTitle("XamlBinding")] |
||||
[assembly: AssemblyDescription("Provides XAML integration in code-completion")] |
||||
[assembly: AssemblyConfiguration("")] |
||||
[assembly: AssemblyTrademark("")] |
||||
[assembly: AssemblyCulture("")] |
||||
@ -0,0 +1,42 @@
@@ -0,0 +1,42 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <author name="Daniel Grunwald"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using ICSharpCode.SharpDevelop.Dom; |
||||
|
||||
namespace XamlBinding |
||||
{ |
||||
/// <summary>
|
||||
/// Description of XamlClassReturnType.
|
||||
/// </summary>
|
||||
public class XamlClassReturnType : ProxyReturnType |
||||
{ |
||||
XamlCompilationUnit compilationUnit; |
||||
string xmlNamespace; |
||||
string className; |
||||
|
||||
public XamlClassReturnType(XamlCompilationUnit compilationUnit, string xmlNamespace, string className) |
||||
{ |
||||
if (compilationUnit == null) |
||||
throw new ArgumentNullException("compilationUnit"); |
||||
|
||||
this.compilationUnit = compilationUnit; |
||||
this.xmlNamespace = xmlNamespace ?? ""; |
||||
this.className = className ?? ""; |
||||
} |
||||
|
||||
public override IReturnType BaseType { |
||||
get { |
||||
return compilationUnit.FindType(xmlNamespace, className); |
||||
} |
||||
} |
||||
|
||||
public override string Name { |
||||
get { return className; } |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,77 @@
@@ -0,0 +1,77 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <author name="Daniel Grunwald"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using ICSharpCode.SharpDevelop.Dom; |
||||
|
||||
namespace XamlBinding |
||||
{ |
||||
/// <summary>
|
||||
/// Description of XamlCompilationUnit.
|
||||
/// </summary>
|
||||
public class XamlCompilationUnit : DefaultCompilationUnit |
||||
{ |
||||
public XamlCompilationUnit(IProjectContent projectContent) : base(projectContent) |
||||
{ |
||||
} |
||||
|
||||
public IReturnType CreateType(string xmlNamespace, string className) |
||||
{ |
||||
if (xmlNamespace.StartsWith("clr-namespace:")) { |
||||
return CreateClrNamespaceType(xmlNamespace, className); |
||||
} else { |
||||
return new XamlClassReturnType(this, xmlNamespace, className); |
||||
} |
||||
} |
||||
|
||||
IReturnType CreateClrNamespaceType(string xmlNamespace, string className) |
||||
{ |
||||
string namespaceName = xmlNamespace.Substring("clr-namespace:".Length); |
||||
int pos = namespaceName.IndexOf(';'); |
||||
if (pos >= 0) { |
||||
// we expect that the target type is also a reference of the project, so we
|
||||
// can ignore the assembly part after the ;
|
||||
namespaceName = namespaceName.Substring(0, pos); |
||||
} |
||||
return new GetClassReturnType(this.ProjectContent, namespaceName + "." + className, 0); |
||||
} |
||||
|
||||
public IReturnType FindType(string xmlNamespace, string className) |
||||
{ |
||||
if (xmlNamespace.StartsWith("clr-namespace:")) { |
||||
return CreateClrNamespaceType(xmlNamespace, className); |
||||
} else { |
||||
IReturnType type = FindTypeInAssembly(this.ProjectContent, xmlNamespace, className); |
||||
if (type != null) |
||||
return type; |
||||
foreach (IProjectContent p in this.ProjectContent.ReferencedContents) { |
||||
type = FindTypeInAssembly(this.ProjectContent, xmlNamespace, className); |
||||
if (type != null) |
||||
return type; |
||||
} |
||||
return null; |
||||
} |
||||
} |
||||
|
||||
static IReturnType FindTypeInAssembly(IProjectContent projectContent, string xmlNamespace, string className) |
||||
{ |
||||
foreach (IAttribute att in projectContent.GetAssemblyAttributes()) { |
||||
if (att.PositionalArguments.Count == 2 |
||||
&& att.AttributeType.FullyQualifiedName == "System.Windows.Markup.XmlnsDefinitionAttribute") |
||||
{ |
||||
string namespaceName = att.PositionalArguments[1] as string; |
||||
if (xmlNamespace.Equals(att.PositionalArguments[0]) && namespaceName != null) { |
||||
IClass c = projectContent.GetClass(namespaceName + "." + className, 0, LanguageProperties.CSharp, false); |
||||
if (c != null) |
||||
return c.DefaultReturnType; |
||||
} |
||||
} |
||||
} |
||||
return null; |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,130 @@
@@ -0,0 +1,130 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <author name="Daniel Grunwald"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Diagnostics; |
||||
using System.IO; |
||||
using System.Xml; |
||||
using ICSharpCode.Core; |
||||
using ICSharpCode.SharpDevelop.Dom; |
||||
|
||||
namespace XamlBinding |
||||
{ |
||||
/// <summary>
|
||||
/// Parses xaml files to partial classes for the Dom.
|
||||
/// </summary>
|
||||
public class XamlParser : IParser |
||||
{ |
||||
string[] lexerTags; |
||||
|
||||
public string[] LexerTags { |
||||
get { |
||||
return lexerTags; |
||||
} |
||||
set { |
||||
lexerTags = value; |
||||
} |
||||
} |
||||
|
||||
public LanguageProperties Language { |
||||
get { |
||||
return LanguageProperties.CSharp; |
||||
} |
||||
} |
||||
|
||||
public bool CanParse(string fileName) |
||||
{ |
||||
return Path.GetExtension(fileName).Equals(".xaml", StringComparison.OrdinalIgnoreCase); |
||||
} |
||||
|
||||
public bool CanParse(ICSharpCode.SharpDevelop.Project.IProject project) |
||||
{ |
||||
return false; |
||||
} |
||||
|
||||
const string XamlNamespace = "http://schemas.microsoft.com/winfx/2006/xaml"; |
||||
|
||||
public ICompilationUnit Parse(IProjectContent projectContent, string fileName, string fileContent) |
||||
{ |
||||
XamlCompilationUnit cu = new XamlCompilationUnit(projectContent); |
||||
try { |
||||
using (XmlTextReader r = new XmlTextReader(new StringReader(fileContent))) { |
||||
r.Read(); |
||||
r.MoveToContent(); |
||||
DomRegion classStart = new DomRegion(r.LineNumber, r.LinePosition); |
||||
string className = r.GetAttribute("Class", XamlNamespace); |
||||
if (string.IsNullOrEmpty(className)) { |
||||
LoggingService.Debug("XamlParser: returning empty cu because root element has no Class attribute"); |
||||
} else { |
||||
DefaultClass c = new DefaultClass(cu, className); |
||||
c.Modifiers = ModifierEnum.Partial; |
||||
c.Region = classStart; |
||||
c.BaseTypes.Add(TypeFromXmlNode(cu, r)); |
||||
cu.Classes.Add(c); |
||||
|
||||
DefaultMethod initializeComponent = new DefaultMethod( |
||||
"InitializeComponent", |
||||
projectContent.SystemTypes.Void, |
||||
ModifierEnum.Public | ModifierEnum.Synthetic, |
||||
classStart, DomRegion.Empty, |
||||
c); |
||||
c.Methods.Add(initializeComponent); |
||||
|
||||
ParseXamlElement(cu, c, r); |
||||
if (r.NodeType == XmlNodeType.EndElement) { |
||||
r.Read(); |
||||
c.Region = new DomRegion(classStart.BeginLine, classStart.BeginColumn, r.LineNumber, r.LinePosition); |
||||
} |
||||
} |
||||
} |
||||
} catch (XmlException ex) { |
||||
LoggingService.Debug("XamlParser exception: " + ex.ToString()); |
||||
cu.ErrorsDuringCompile = true; |
||||
} |
||||
return cu; |
||||
} |
||||
|
||||
IReturnType TypeFromXmlNode(XamlCompilationUnit cu, XmlReader r) |
||||
{ |
||||
return cu.CreateType(r.NamespaceURI, r.Name); |
||||
} |
||||
|
||||
void ParseXamlElement(XamlCompilationUnit cu, DefaultClass c, XmlTextReader r) |
||||
{ |
||||
Debug.Assert(r.NodeType == XmlNodeType.Element); |
||||
string name = r.GetAttribute("Name", XamlNamespace) ?? r.GetAttribute("Name"); |
||||
if (!string.IsNullOrEmpty(name)) { |
||||
DefaultField field = new DefaultField( |
||||
TypeFromXmlNode(cu, r), |
||||
name, |
||||
ModifierEnum.Internal, |
||||
new DomRegion(r.LineNumber, r.LinePosition), |
||||
c); |
||||
c.Fields.Add(field); |
||||
} |
||||
|
||||
if (r.IsEmptyElement) |
||||
return; |
||||
do { |
||||
r.Read(); |
||||
if (r.NodeType == XmlNodeType.Element) { |
||||
ParseXamlElement(cu, c, r); |
||||
} |
||||
} while (r.NodeType != XmlNodeType.EndElement); |
||||
} |
||||
|
||||
public IExpressionFinder CreateExpressionFinder(string fileName) |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
|
||||
public IResolver CreateResolver() |
||||
{ |
||||
throw new NotImplementedException(); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
|
||||
<AddIn name = "XAML binding" |
||||
author = "Daniel Grunwald" |
||||
copyright = "prj:///doc/copyright.txt" |
||||
url = "http://icsharpcode.net" |
||||
description = "Enables code-completion for xaml files."> |
||||
|
||||
<!-- |
||||
This file is unrelated to the WPF Designer, it is a language binding for .xaml files. |
||||
It allows using Go to definition, find references, code completion in .xaml files. |
||||
--> |
||||
|
||||
<Manifest> |
||||
<Identity name = "ICSharpCode.XamlBinding"/> |
||||
<!--<Dependency addin = "ICSharpCode.XmlEditor" requirePreload = "true"/>--> |
||||
</Manifest> |
||||
|
||||
<Runtime> |
||||
<Import assembly = "XamlBinding.dll"/> |
||||
</Runtime> |
||||
|
||||
<Path name = "/Workspace/Icons"> |
||||
<Icon id = "XamlFileIcon" |
||||
extensions = ".xaml" |
||||
resource = "FileIcons.XmlIcon" /> |
||||
</Path> |
||||
|
||||
<Path name = "/SharpDevelop/Workbench/FileFilter"> |
||||
<FileFilter id = "Xaml" |
||||
insertbefore="AllFiles" |
||||
name = "Xaml files (*.xaml)" |
||||
extensions = "*.xaml"/> |
||||
</Path> |
||||
|
||||
<Path name = "/Workspace/Parser"> |
||||
<Parser id = "XAML" |
||||
supportedextensions = ".xaml" |
||||
class = "XamlBinding.XamlParser"/> |
||||
</Path> |
||||
</AddIn> |
||||
@ -0,0 +1,79 @@
@@ -0,0 +1,79 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
<PropertyGroup> |
||||
<ProjectGuid>{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}</ProjectGuid> |
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
||||
<OutputType>Library</OutputType> |
||||
<RootNamespace>XamlBinding</RootNamespace> |
||||
<AssemblyName>XamlBinding</AssemblyName> |
||||
<OutputPath>..\..\..\..\..\AddIns\AddIns\BackendBindings\XamlBinding</OutputPath> |
||||
<AllowUnsafeBlocks>False</AllowUnsafeBlocks> |
||||
<NoStdLib>False</NoStdLib> |
||||
<WarningLevel>4</WarningLevel> |
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> |
||||
<DebugSymbols>true</DebugSymbols> |
||||
<DebugType>Full</DebugType> |
||||
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow> |
||||
<DefineConstants>DEBUG;TRACE</DefineConstants> |
||||
<Optimize>False</Optimize> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' "> |
||||
<DebugSymbols>False</DebugSymbols> |
||||
<DebugType>None</DebugType> |
||||
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> |
||||
<DefineConstants>TRACE</DefineConstants> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' "> |
||||
<RegisterForComInterop>False</RegisterForComInterop> |
||||
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies> |
||||
<BaseAddress>4194304</BaseAddress> |
||||
<PlatformTarget>AnyCPU</PlatformTarget> |
||||
<FileAlignment>4096</FileAlignment> |
||||
</PropertyGroup> |
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" /> |
||||
<ItemGroup> |
||||
<Reference Include="System" /> |
||||
<Reference Include="System.Xml" /> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<Folder Include="Configuration" /> |
||||
<Folder Include="Src" /> |
||||
<None Include="XamlBinding.addin"> |
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory> |
||||
</None> |
||||
<Compile Include="..\..\..\..\Main\GlobalAssemblyInfo.cs"> |
||||
<Link>Configuration\GlobalAssemblyInfo.cs</Link> |
||||
</Compile> |
||||
<Compile Include="Configuration\AssemblyInfo.cs" /> |
||||
<Compile Include="Src\XamlClassReturnType.cs" /> |
||||
<Compile Include="Src\XamlCompilationUnit.cs" /> |
||||
<Compile Include="Src\XamlParser.cs" /> |
||||
<ProjectReference Include="..\..\..\..\Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj"> |
||||
<Project>{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}</Project> |
||||
<Name>ICSharpCode.TextEditor</Name> |
||||
<Private>False</Private> |
||||
</ProjectReference> |
||||
<ProjectReference Include="..\..\..\..\Libraries\NRefactory\Project\NRefactory.csproj"> |
||||
<Project>{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}</Project> |
||||
<Name>NRefactory</Name> |
||||
<Private>False</Private> |
||||
</ProjectReference> |
||||
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj"> |
||||
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project> |
||||
<Name>ICSharpCode.SharpDevelop</Name> |
||||
<Private>False</Private> |
||||
</ProjectReference> |
||||
<ProjectReference Include="..\..\..\..\Main\Core\Project\ICSharpCode.Core.csproj"> |
||||
<Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project> |
||||
<Name>ICSharpCode.Core</Name> |
||||
<Private>False</Private> |
||||
</ProjectReference> |
||||
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj"> |
||||
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project> |
||||
<Name>ICSharpCode.SharpDevelop.Dom</Name> |
||||
<Private>False</Private> |
||||
</ProjectReference> |
||||
</ItemGroup> |
||||
</Project> |
||||
@ -1,11 +1,13 @@
@@ -1,11 +1,13 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
<PropertyGroup> |
||||
<PrepareForRunDependsOn>$(PrepareForRunDependsOn);MyPostBuildTarget</PrepareForRunDependsOn> |
||||
</PropertyGroup> |
||||
<ItemGroup> |
||||
<MyCopyItem Include="$(MSBuildProjectDirectory)\*.addin" /> |
||||
</ItemGroup> |
||||
<Target Name="MyPostBuildTarget"> |
||||
<Copy SourceFiles="@(MyCopyItem)" DestinationFolder="$(OutputPath)" /> |
||||
</Target> |
||||
<PropertyGroup> |
||||
<PrepareForRunDependsOn>$(PrepareForRunDependsOn);MyPostBuildTarget</PrepareForRunDependsOn> |
||||
</PropertyGroup> |
||||
<ItemGroup> |
||||
<MyCopyItem Include="$(MSBuildProjectDirectory)\*.addin" /> |
||||
</ItemGroup> |
||||
<Target Name="MyPostBuildTarget"> |
||||
<!-- work around an MSBuild bug in CopyToOutputDirectory that causes this file to be copied --> |
||||
<!-- to projects referencing this project even if local copy on that reference is false --> |
||||
<Copy SourceFiles="@(MyCopyItem)" DestinationFolder="$(OutputPath)" /> |
||||
</Target> |
||||
</Project> |
||||
|
||||
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
<PropertyGroup> |
||||
<PrepareForRunDependsOn>$(PrepareForRunDependsOn);MyPostBuildTarget</PrepareForRunDependsOn> |
||||
</PropertyGroup> |
||||
<ItemGroup> |
||||
<MyCopyItem Include="$(MSBuildProjectDirectory)\*.addin" /> |
||||
</ItemGroup> |
||||
<Target Name="MyPostBuildTarget"> |
||||
<!-- work around an MSBuild bug in CopyToOutputDirectory that causes this file to be copied --> |
||||
<!-- to projects referencing this project even if local copy on that reference is false --> |
||||
<Copy SourceFiles="@(MyCopyItem)" DestinationFolder="$(OutputPath)" /> |
||||
</Target> |
||||
</Project> |
||||
@ -1,11 +0,0 @@
@@ -1,11 +0,0 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
<PropertyGroup> |
||||
<PrepareForRunDependsOn>$(PrepareForRunDependsOn);MyPostBuildTarget</PrepareForRunDependsOn> |
||||
</PropertyGroup> |
||||
<Target Name="MyPostBuildTarget"> |
||||
<!-- Delete the UnitTesting.addin file that gets copied to the CodeCoverage AddIn output |
||||
folder due to an MSBuild bug. Otherwise the UnitTesting.addin file will be |
||||
loaded twice by SharpDevelop --> |
||||
<Delete Files="$(OutputPath)\UnitTesting.addin" ContinueOnError="True"/> |
||||
</Target> |
||||
</Project> |
||||
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
<PropertyGroup> |
||||
<PrepareForRunDependsOn>$(PrepareForRunDependsOn);MyPostBuildTarget</PrepareForRunDependsOn> |
||||
</PropertyGroup> |
||||
<ItemGroup> |
||||
<MyCopyItem Include="$(MSBuildProjectDirectory)\*.addin" /> |
||||
</ItemGroup> |
||||
<Target Name="MyPostBuildTarget"> |
||||
<!-- work around an MSBuild bug in CopyToOutputDirectory that causes this file to be copied --> |
||||
<!-- to projects referencing this project even if local copy on that reference is false --> |
||||
<Copy SourceFiles="@(MyCopyItem)" DestinationFolder="$(OutputPath)" /> |
||||
</Target> |
||||
</Project> |
||||
@ -0,0 +1,32 @@
@@ -0,0 +1,32 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <author name="Daniel Grunwald"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Dom |
||||
{ |
||||
/// <summary>
|
||||
/// Description of AttributeReturnType.
|
||||
/// </summary>
|
||||
public class AttributeReturnType : ProxyReturnType |
||||
{ |
||||
string name; |
||||
|
||||
public AttributeReturnType(string name) |
||||
{ |
||||
this.name = name; |
||||
} |
||||
|
||||
public override string Name { |
||||
get { return name; } |
||||
} |
||||
|
||||
public override IReturnType BaseType { |
||||
get { return null; } |
||||
} |
||||
} |
||||
} |
||||
Loading…
Reference in new issue