Browse Source

Merge branch 'master' of github.com:icsharpcode/SharpDevelop

pull/20/merge
PeterForstmeier 15 years ago
parent
commit
73c66cef08
  1. 55
      data/templates/file/CSharp/CSharp.WcfRestService.xft
  2. 50
      data/templates/file/VB/VB.WcfRestService.xft
  3. 104
      data/templates/project/CSharp/CSharp.WcfRestServiceProject.xpt
  4. 42
      data/templates/project/CSharp/CSharp.WcfServiceProject.xpt
  5. 99
      data/templates/project/VB/VB.WcfRestServiceProject.xpt
  6. 43
      data/templates/project/VB/VB.WcfServiceProject.xpt
  7. 1
      src/AddIns/BackendBindings/Boo/BooBinding/Test/BooBinding.Tests.csproj
  8. 2
      src/AddIns/BackendBindings/Boo/BooBinding/Test/ResolverTests.cs
  9. 8
      src/AddIns/BackendBindings/VBNetBinding/Test/MockTextEditor.cs
  10. 1
      src/AddIns/BackendBindings/VBNetBinding/Test/VBNetBinding.Tests.csproj
  11. 6
      src/AddIns/BackendBindings/XamlBinding/XamlBinding.Tests/MockTextEditor.cs
  12. 2
      src/AddIns/Misc/ResourceToolkit/Test/AbstractTestProjectTestFixture.cs
  13. 5
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/VBNET-Mode.xshd
  14. 6
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/GacReferencePanel.cs
  15. 2
      src/Main/Base/Project/Src/Project/CompilableProject.cs
  16. 14
      src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs
  17. 14
      src/Main/Base/Project/Src/Project/MSBuildInternals.cs
  18. 18
      src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs
  19. 4
      src/Main/Base/Test/CodeConverterTests.cs
  20. 1
      src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
  21. 2
      src/Main/Base/Test/MemberLookupHelperTests.cs
  22. 8
      src/Main/Base/Test/NRefactoryResolverTests.cs
  23. 7
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ProjectContentRegistry.cs
  24. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/CodeSnippetConverterTests.cs
  25. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/NRefactoryAstConverterTests.cs
  26. 12
      src/Setup/Files.wxs
  27. 5
      src/Setup/Setup.wxs

55
data/templates/file/CSharp/CSharp.WcfRestService.xft

@ -0,0 +1,55 @@ @@ -0,0 +1,55 @@
<?xml version="1.0"?>
<Template
author="Eusebiu Marcu"
created="13/09/2011"
lastModified="13/09/2011"
version="1.0">
<Config
name="WCF REST Service"
icon="C#.File.NewClass"
category="C#"
subcategory="WCF"
defaultname="Service${Number}.svc"
language="C#"/>
<Description>WCF REST Service</Description>
<Files>
<File name="${FullName}">
<![CDATA[
<%@ServiceHost language="C#" Debug="true" Service="${StandardNamespace}.${ClassName}"%>
]]>
</File>
<File name="${FullName}.cs" language="C#" DependentUpon="${FullName}">
<![CDATA[${StandardHeader.C#}
using System;
using System.ServiceModel;
using System.ServiceModel.Web;
namespace ${StandardNamespace}
{
[ServiceContract]
public interface I${ClassName}
{
[OperationContract]
[WebGet(UriTemplate = "operation/{name}")]
string MyOperation(string name);
}
/// <summary>
/// Description of ${ClassName}.
/// </summary>
public class ${ClassName} : I${ClassName}
{
public string MyOperation(string name)
{
// implement the operation
return string.Format("Operation name: {0}", name);
}
}
}
]]>
</File>
</Files>
</Template>

50
data/templates/file/VB/VB.WcfRestService.xft

@ -0,0 +1,50 @@ @@ -0,0 +1,50 @@
<?xml version="1.0"?>
<Template
author="Eusebiu Marcu"
created="13/09/2011"
lastModified="01/09/2011"
version="1.0">
<Config
name="WCF REST Service"
icon="VBNet.File.NewClass"
category="VB"
subcategory="WCF"
defaultname="Service${Number}.svc"
language="VBNET"/>
<Description>WCF REST Service</Description>
<Files>
<File name="${FullName}">
<![CDATA[
<%@ServiceHost language="VB" Debug="true" Service="${StandardNamespace}.${ClassName}"%>
]]>
</File>
<File name="${FullName}.vb" language="VBNET" DependentUpon="${FullName}">
<![CDATA[${StandardHeader.VBNET}
Imports System
Imports System.ServiceModel
Imports System.ServiceModel.Web
<ServiceContract> _
Public Interface I${ClassName}
<OperationContract> _
<WebGet(UriTemplate := "operation/{name}")> _
Function MyOperation(name As String) As String
End Interface
''' <summary>
''' Description of ${ClassName}.
''' </summary>
Public Class ${ClassName}
Implements I${ClassName}
Function MyOperation(name As String) As String Implements I${ClassName}.MyOperation
' implement the operation
Return String.Format("Operation name: {0}", name)
End Sub
End Class
]]>
</File>
</Files>
</Template>

104
data/templates/project/CSharp/CSharp.WcfRestServiceProject.xpt

@ -0,0 +1,104 @@ @@ -0,0 +1,104 @@
<?xml version="1.0"?>
<Template
author="Eusebiu Marcu"
created="13/09/2011"
lastModified="13/09/2011"
version="1.0">
<!-- Template Header -->
<TemplateConfiguration>
<Name>WCF REST Service</Name>
<Category>C#</Category>
<Subcategory>WCF</Subcategory>
<Icon>C#.Project.Form</Icon>
<Description>WCF REST Service</Description>
<SupportedTargetFrameworks>v3.5</SupportedTargetFrameworks>
</TemplateConfiguration>
<!-- Actions -->
<Actions>
<Open filename="Service.svc.cs"/>
</Actions>
<Project language="C#">
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.ServiceModel.Web" />
</ProjectItems>
<PropertyGroup escapeValue="False">
<OutputType>Library</OutputType>
<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<AppDesignerFolder>Properties</AppDesignerFolder>
</PropertyGroup>
<PropertyGroup configuration="Debug">
<OutputPath>bin\</OutputPath>
</PropertyGroup>
<PropertyGroup configuration="Release">
<OutputPath>bin\</OutputPath>
</PropertyGroup>
<Files>
<File name="Properties\AssemblyInfo.cs" src="DefaultAssemblyInfo.cs" />
<File name="Service.svc">
<![CDATA[
<%@ServiceHost language="C#" Debug="true" Service="${StandardNamespace}.Service"%>
]]>
</File>
<File name="Service.svc.cs" DependentUpon="Service.svc">
<![CDATA[${StandardHeader.C#}
using System;
using System.ServiceModel;
using System.ServiceModel.Web;
namespace ${StandardNamespace}
{
[ServiceContract]
public interface IService
{
[OperationContract]
[WebGet(UriTemplate = "operation/{name}")]
string MyOperation(string name);
}
public class Service : IService
{
public string MyOperation(string name)
{
// implement the operation
return string.Format("Operation name: {0}", name);
}
}
}
]]>
</File>
<File name="web.config">
<![CDATA[<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service name="${StandardNamespace}.Service">
<endpoint address=""
binding="webHttpBinding"
contract="${StandardNamespace}.IService"
behaviorConfiguration="webHttp" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webHttp">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
]]>
</File>
</Files>
</Project>
</Template>

42
data/templates/project/CSharp/CSharp.WcfServiceProject.xpt

@ -17,7 +17,7 @@ @@ -17,7 +17,7 @@
<!-- Actions -->
<Actions>
<Open filename="ServiceCalculator.svc.cs"/>
<Open filename="Service.svc.cs"/>
</Actions>
<Project language="C#">
@ -42,12 +42,12 @@ @@ -42,12 +42,12 @@
<Files>
<File name="Properties\AssemblyInfo.cs" src="DefaultAssemblyInfo.cs" />
<File name="ServiceCalculator.svc">
<File name="Service.svc">
<![CDATA[
<%@ServiceHost language="C#" Debug="true" Service="${StandardNamespace}.ServiceCalculator"%>
<%@ServiceHost language="C#" Debug="true" Service="${StandardNamespace}.Service"%>
]]>
</File>
<File name="ServiceCalculator.svc.cs" DependentUpon="ServiceCalculator.svc">
<File name="Service.svc.cs" DependentUpon="Service.svc">
<![CDATA[${StandardHeader.C#}
using System;
using System.ServiceModel;
@ -55,35 +55,17 @@ using System.ServiceModel; @@ -55,35 +55,17 @@ using System.ServiceModel;
namespace ${StandardNamespace}
{
[ServiceContract]
public interface ICalculator
public interface IService
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
void MyOperation();
}
public class ServiceCalculator : ICalculator
public class Service : IService
{
public double Add(double n1, double n2)
{
return n1 + n2;
}
public double Subtract(double n1, double n2)
{
return n1 - n2;
}
public double Multiply(double n1, double n2)
{
return n1 * n2;
}
public double Divide(double n1, double n2)
public void MyOperation()
{
return n1 / n2;
// implement the operation
}
}
}
@ -94,12 +76,10 @@ namespace ${StandardNamespace} @@ -94,12 +76,10 @@ namespace ${StandardNamespace}
<configuration>
<system.serviceModel>
<services>
<!-- This section is optional with the default configuration model introduced in .NET Framework 4 -->
<service name="${StandardNamespace}.ServiceCalculator">
<!-- This endpoint is exposed at the base address provided by host: http://localhost/${ProjectName}/ServiceCalculator.svc -->
<service name="${StandardNamespace}.Service">
<endpoint address=""
binding="wsHttpBinding"
contract="${StandardNamespace}.ICalculator" />
contract="${StandardNamespace}.IService" />
</service>
</services>
</system.serviceModel>

99
data/templates/project/VB/VB.WcfRestServiceProject.xpt

@ -0,0 +1,99 @@ @@ -0,0 +1,99 @@
<?xml version="1.0"?>
<Template
author="Eusebiu Marcu"
created="13/09/2011"
lastModified="13/09/2011"
version="1.0">
<!-- Template Header -->
<TemplateConfiguration>
<Name>WCF REST Service</Name>
<Category>VB</Category>
<Subcategory>WCF</Subcategory>
<Icon>VBNet.Project.Form</Icon>
<Description>WCF REST Service</Description>
<SupportedTargetFrameworks>v3.5</SupportedTargetFrameworks>
</TemplateConfiguration>
<!-- Actions -->
<Actions>
<Open filename="Service.svc.vb"/>
</Actions>
<Project language="VBNet">
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.ServiceModel.Web" />
</ProjectItems>
<PropertyGroup escapeValue="False">
<OutputType>Library</OutputType>
<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<AppDesignerFolder>Properties</AppDesignerFolder>
</PropertyGroup>
<PropertyGroup configuration="Debug">
<OutputPath>bin\</OutputPath>
</PropertyGroup>
<PropertyGroup configuration="Release">
<OutputPath>bin\</OutputPath>
</PropertyGroup>
<Files>
<File name="Properties\AssemblyInfo.vb" src="DefaultAssemblyInfo.vb" />
<File name="Service.svc">
<![CDATA[
<%@ServiceHost language="VB" Debug="true" Service="${StandardNamespace}.Service"%>
]]>
</File>
<File name="Service.svc.vb" DependentUpon="Service.svc">
<![CDATA[${StandardHeader.VBNET}
Imports System
Imports System.ServiceModel
Imports System.ServiceModel.Web
<ServiceContract> _
Public Interface IService
<OperationContract> _
<WebGet(UriTemplate := "operation/{name}")> _
Function MyOperation(name As String) As String
End Interface
Public Class Service
Implements IService
Function MyOperation(name As String) As String Implements IService.MyOperation
' implement the operation
Return String.Format("Operation name: {0}", name)
End Function
End Class
]]>
</File>
<File name="web.config">
<![CDATA[<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service name="${StandardNamespace}.Service">
<endpoint address=""
binding="webHttpBinding"
contract="${StandardNamespace}.IService"
behaviorConfiguration="webHttp" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webHttp">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
]]>
</File>
</Files>
</Project>
</Template>

43
data/templates/project/VB/VB.WcfServiceProject.xpt

@ -17,7 +17,7 @@ @@ -17,7 +17,7 @@
<!-- Actions -->
<Actions>
<Open filename="ServiceCalculator.svc.vb"/>
<Open filename="Service.svc.vb"/>
</Actions>
<Project language="VBNet">
@ -42,42 +42,27 @@ @@ -42,42 +42,27 @@
<Files>
<File name="Properties\AssemblyInfo.vb" src="DefaultAssemblyInfo.vb" />
<File name="ServiceCalculator.svc">
<File name="Service.svc">
<![CDATA[
<%@ServiceHost language="VB" Debug="true" Service="${StandardNamespace}.ServiceCalculator"%>
<%@ServiceHost language="VB" Debug="true" Service="${StandardNamespace}.Service"%>
]]>
</File>
<File name="ServiceCalculator.svc.vb" DependentUpon="ServiceCalculator.svc">
<File name="Service.svc.vb" DependentUpon="Service.svc">
<![CDATA[${StandardHeader.VBNET}
Imports System
Imports System.ServiceModel
<ServiceContract> _
Public Interface ICalculator
Public Interface IService
<OperationContract> _
Function Add(n1 As Double, n2 As Double) As Double
<OperationContract> _
Function Subtract(n1 As Double, n2 As Double) As Double
<OperationContract> _
Function Multiply(n1 As Double, n2 As Double) As Double
<OperationContract> _
Function Divide(n1 As Double, n2 As Double) As Double
Sub MyOperation()
End Interface
Public Class ServiceCalculator
Implements ICalculator
Public Function Add(n1 As Double, n2 As Double) As Double Implements ICalculator.Add
Return n1 + n2
End Function
Public Function Subtract(n1 As Double, n2 As Double) As Double Implements ICalculator.Subtract
Return n1 - n2
End Function
Public Function Multiply(n1 As Double, n2 As Double) As Double Implements ICalculator.Multiply
Return n1 * n2
End Function
Public Function Divide(n1 As Double, n2 As Double) As Double Implements ICalculator.Divide
Return n1 / n2
End Function
Public Class Service
Implements IService
Public Sub MyOperation() Implements IService.MyOperation
' implement the operation
End Sub
End Class
]]>
</File>
@ -86,12 +71,10 @@ End Class @@ -86,12 +71,10 @@ End Class
<configuration>
<system.serviceModel>
<services>
<!-- This section is optional with the default configuration model introduced in .NET Framework 4 -->
<service name="${StandardNamespace}.ServiceCalculator">
<!-- This endpoint is exposed at the base address provided by host: http://localhost/${ProjectName}/ServiceCalculator.svc -->
<service name="${StandardNamespace}.Service">
<endpoint address=""
binding="wsHttpBinding"
contract="${StandardNamespace}.ICalculator" />
contract="${StandardNamespace}.IService" />
</service>
</services>
</system.serviceModel>

1
src/AddIns/BackendBindings/Boo/BooBinding/Test/BooBinding.Tests.csproj

@ -40,6 +40,7 @@ @@ -40,6 +40,7 @@
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="nunit.framework">
<HintPath>..\..\..\..\..\Tools\NUnit\nunit.framework.dll</HintPath>

2
src/AddIns/BackendBindings/Boo/BooBinding/Test/ResolverTests.cs

@ -51,7 +51,7 @@ namespace Grunwald.BooBinding.Tests @@ -51,7 +51,7 @@ namespace Grunwald.BooBinding.Tests
lastPC = pc;
HostCallback.GetCurrentProjectContent = delegate { return pc; };
pc.ReferencedContents.Add(AssemblyParserService.DefaultProjectContentRegistry.Mscorlib);
pc.ReferencedContents.Add(AssemblyParserService.DefaultProjectContentRegistry.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms"));
pc.ReferencedContents.Add(AssemblyParserService.DefaultProjectContentRegistry.GetProjectContentForReference("System.Windows.Forms", typeof(System.Windows.Forms.Form).Module.FullyQualifiedName));
pc.ReferencedContents.Add(booLangPC);
ICompilationUnit cu = new BooParser().Parse(pc, fileName, new StringTextBuffer(prog));
ParserService.RegisterParseInformation(fileName, cu);

8
src/AddIns/BackendBindings/VBNetBinding/Test/MockTextEditor.cs

@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using ICSharpCode.AvalonEdit;
using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.Core;
@ -35,9 +35,9 @@ namespace ICSharpCode.VBNetBinding.Tests @@ -35,9 +35,9 @@ namespace ICSharpCode.VBNetBinding.Tests
pc.ReferencedContents.Add(AssemblyParserService.DefaultProjectContentRegistry.Mscorlib);
Dictionary<string, string> referencedAssemblies = new Dictionary<string, string>() {
{ "System", null },
{ "System.Core", null },
{ "Microsoft.VisualBasic", null }
{ "System", typeof(Uri).Module.FullyQualifiedName },
{ "System.Core", typeof(Enumerable).Module.FullyQualifiedName },
{ "Microsoft.VisualBasic", typeof(Microsoft.VisualBasic.Constants).Module.FullyQualifiedName }
};
foreach (var assembly in referencedAssemblies) {
IProjectContent referenceProjectContent = AssemblyParserService.DefaultProjectContentRegistry.GetProjectContentForReference(assembly.Key, assembly.Value ?? assembly.Key);

1
src/AddIns/BackendBindings/VBNetBinding/Test/VBNetBinding.Tests.csproj

@ -32,6 +32,7 @@ @@ -32,6 +32,7 @@
<DebugType>None</DebugType>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="PresentationCore">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>

6
src/AddIns/BackendBindings/XamlBinding/XamlBinding.Tests/MockTextEditor.cs

@ -33,11 +33,11 @@ namespace ICSharpCode.XamlBinding.Tests @@ -33,11 +33,11 @@ namespace ICSharpCode.XamlBinding.Tests
pc.ReferencedContents.Add(AssemblyParserService.DefaultProjectContentRegistry.Mscorlib);
Dictionary<string, string> referencedAssemblies = new Dictionary<string, string>() {
{ "System", null },
{ "System.Xml", null },
{ "System", typeof(Uri).Assembly.Location },
{ "System.Xml", typeof(System.Xml.XmlDocument).Assembly.Location },
{ "System.Xaml", typeof(System.Xaml.XamlReader).Assembly.Location },
{ "WindowsBase", typeof(System.Windows.Media.Matrix).Assembly.Location },
{ "System.Core", null },
{ "System.Core", typeof(System.Linq.Enumerable).Assembly.Location },
{ "PresentationCore", typeof(System.Windows.Media.Brush).Assembly.Location },
{ "PresentationFramework", typeof(System.Windows.EventSetter).Assembly.Location }
};

2
src/AddIns/Misc/ResourceToolkit/Test/AbstractTestProjectTestFixture.cs

@ -92,7 +92,7 @@ namespace ResourceToolkit.Tests @@ -92,7 +92,7 @@ namespace ResourceToolkit.Tests
DefaultProjectContent pc = new DefaultProjectContent();
pc.ReferencedContents.Add(AssemblyParserService.DefaultProjectContentRegistry.Mscorlib);
pc.ReferencedContents.Add(AssemblyParserService.DefaultProjectContentRegistry.GetProjectContentForReference("System", "System"));
pc.ReferencedContents.Add(AssemblyParserService.DefaultProjectContentRegistry.GetProjectContentForReference("System", typeof(Uri).Module.FullyQualifiedName));
if (project != null) {
if (project.LanguageProperties != null) {

5
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/VBNET-Mode.xshd

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
<!-- Updated 2005 by Daniel Grunwald for VB.NET 2.0 -->
<!-- Converted to AvalonEdit format by Daniel Grunwald in 2010 -->
<!-- Updated 2010 by Siegfried Oleg Pammer for VB.NET 9 and 10 -->
<!-- Updated 2011 by Siegfried Oleg Pammer for VB 11 CTP -->
<SyntaxDefinition name="VBNET" extensions=".vb" xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008">
<Color name="Comment" foreground="Green" exampleText="' comment" />
<Color name="String" exampleText="text = &quot;Hello, World!&quot;" />
@ -64,6 +65,7 @@ @@ -64,6 +65,7 @@
<Word>AddressOf</Word>
<Word>And</Word>
<Word>AndAlso</Word>
<Word>Await</Word>
<Word>Is</Word>
<Word>IsNot</Word>
<Word>Like</Word>
@ -208,6 +210,7 @@ @@ -208,6 +210,7 @@
<Word>Aggregate</Word>
<Word>Ansi</Word>
<Word>Ascending</Word>
<Word>Async</Word>
<Word>Auto</Word>
<Word>Binary</Word>
<Word>By</Word>
@ -221,6 +224,7 @@ @@ -221,6 +224,7 @@
<Word>Group</Word>
<Word>Infer</Word>
<Word>Into</Word>
<Word>Iterator</Word>
<Word>Join</Word>
<Word>Key</Word>
<Word>Off</Word>
@ -232,6 +236,7 @@ @@ -232,6 +236,7 @@
<Word>Unicode</Word>
<Word>Until</Word>
<Word>Where</Word>
<Word>Yield</Word>
</Keywords>
</RuleSet>
<RuleSet name="PreprocessorSet" ignoreCase="true">

6
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/GacReferencePanel.cs

@ -378,7 +378,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -378,7 +378,8 @@ namespace ICSharpCode.SharpDevelop.Gui
}
});
MSBuildInternals.ResolveAssemblyReferences(project, referenceItems.ToArray());
string mscorlibPath;
MSBuildInternals.ResolveAssemblyReferences(project, referenceItems.ToArray(), out mscorlibPath);
WorkbenchSingleton.SafeThreadAsyncCall(
delegate {
@ -422,7 +423,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -422,7 +423,8 @@ namespace ICSharpCode.SharpDevelop.Gui
}
});
MSBuildInternals.ResolveAssemblyReferences(project, referenceItems.ToArray());
string mscorlibPath;
MSBuildInternals.ResolveAssemblyReferences(project, referenceItems.ToArray(), out mscorlibPath);
foreach (ReferenceProjectItem rpi in referenceItems) {
if (string.IsNullOrEmpty(rpi.Redist)) continue;
if (!redistNameToRequiredFramework.ContainsKey(rpi.Redist)) {

2
src/Main/Base/Project/Src/Project/CompilableProject.cs

@ -206,8 +206,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -206,8 +206,6 @@ namespace ICSharpCode.SharpDevelop.Project
protected override ParseProjectContent CreateProjectContent()
{
ParseProjectContent newProjectContent = new ParseProjectContent(this);
var mscorlib = AssemblyParserService.GetRegistryForReference(new ReferenceProjectItem(this, "mscorlib")).Mscorlib;
newProjectContent.AddReferencedContent(mscorlib);
return newProjectContent;
}

14
src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs

@ -137,9 +137,21 @@ namespace ICSharpCode.SharpDevelop.Project @@ -137,9 +137,21 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
volatile string mscorlibPath;
/// <summary>
/// Gets the path to mscorlib.
/// This property is set only after ResolveAssemblyReferences() is called.
/// </summary>
public string MscorlibPath {
get { return mscorlibPath; }
}
public override void ResolveAssemblyReferences()
{
MSBuildInternals.ResolveAssemblyReferences(this, null);
string mscorlib;
MSBuildInternals.ResolveAssemblyReferences(this, null, out mscorlib);
this.mscorlibPath = mscorlib;
}
#region CreateProjectItem

14
src/Main/Base/Project/Src/Project/MSBuildInternals.cs

@ -5,8 +5,8 @@ using System; @@ -5,8 +5,8 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom;
using Microsoft.Build.Construction;
using Microsoft.Build.Execution;
using Microsoft.Build.Framework;
@ -162,7 +162,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -162,7 +162,7 @@ namespace ICSharpCode.SharpDevelop.Project
/// <param name="baseProject">The base project.</param>
/// <param name="referenceReplacements">A different set of references to use instead of those in the project.
/// Used by the GacReferencePanel.</param>
internal static void ResolveAssemblyReferences(MSBuildBasedProject baseProject, ReferenceProjectItem[] referenceReplacements)
internal static void ResolveAssemblyReferences(MSBuildBasedProject baseProject, ReferenceProjectItem[] referenceReplacements, out string mscorlibPath)
{
ProjectInstance project = baseProject.CreateProjectInstance();
project.SetProperty("BuildingProject", "false");
@ -215,18 +215,22 @@ namespace ICSharpCode.SharpDevelop.Project @@ -215,18 +215,22 @@ namespace ICSharpCode.SharpDevelop.Project
referenceDict[item.Include] = item;
}
mscorlibPath = null;
foreach (ProjectItemInstance item in project.GetItems("_ResolveAssemblyReferenceResolvedFiles")) {
DomAssemblyName assemblyName = new DomAssemblyName(item.GetMetadataValue("FusionName"));
string fullPath = FileUtility.GetAbsolutePath(baseProject.Directory, item.GetMetadataValue("Identity"));
string originalInclude = item.GetMetadataValue("OriginalItemSpec");
ReferenceProjectItem reference;
if (referenceDict.TryGetValue(originalInclude, out reference)) {
reference.AssemblyName = new Dom.DomAssemblyName(item.GetMetadataValue("FusionName"));
//string fullPath = item.GetEvaluatedMetadata("FullPath"); is incorrect for relative paths
string fullPath = FileUtility.GetAbsolutePath(baseProject.Directory, item.GetMetadataValue("Identity"));
reference.FileName = fullPath;
reference.Redist = item.GetMetadataValue("Redist");
LoggingService.Debug("Got information about " + originalInclude + "; fullpath=" + fullPath);
reference.DefaultCopyLocalValue = bool.Parse(item.GetMetadataValue("CopyLocal"));
} else if (string.Equals(assemblyName.ShortName, "mscorlib", StringComparison.OrdinalIgnoreCase)) {
LoggingService.Debug("Got information for mscorlib: " + fullPath);
mscorlibPath = fullPath;
} else {
LoggingService.Warn("Unknown item " + originalInclude);
}

18
src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs

@ -58,6 +58,17 @@ namespace ICSharpCode.SharpDevelop @@ -58,6 +58,17 @@ namespace ICSharpCode.SharpDevelop
// TODO: Translate me
// progressMonitor.TaskName = "Resolving references for " + project.Name + "...";
project.ResolveAssemblyReferences();
MSBuildBasedProject msbuildProject = project as MSBuildBasedProject;
if (msbuildProject != null) {
string mscorlib = msbuildProject.MscorlibPath;
if (string.IsNullOrEmpty(mscorlib)) {
AddReferencedContent(AssemblyParserService.DefaultProjectContentRegistry.Mscorlib);
} else {
AddReferencedContent(AssemblyParserService.DefaultProjectContentRegistry.GetProjectContentForReference("mscorlib", mscorlib));
}
} else {
AddReferencedContent(AssemblyParserService.DefaultProjectContentRegistry.Mscorlib);
}
foreach (ProjectItem item in items) {
if (!initializing) return; // abort initialization
progressMonitor.CancellationToken.ThrowIfCancellationRequested();
@ -76,13 +87,6 @@ namespace ICSharpCode.SharpDevelop @@ -76,13 +87,6 @@ namespace ICSharpCode.SharpDevelop
internal void ReInitialize1(IProgressMonitor progressMonitor)
{
var mscorlib = AssemblyParserService.GetRegistryForReference(new ReferenceProjectItem(project, "mscorlib")).Mscorlib;
// don't fetch mscorlib within lock - finding the correct registry might access the project, causing
// a deadlock between IProject.SyncRoot and the ReferencedContents lock
lock (ReferencedContents) {
ReferencedContents.Clear();
AddReferencedContent(mscorlib);
}
// prevent adding event handler twice
ProjectService.ProjectItemAdded -= OnProjectItemAdded;
ProjectService.ProjectItemRemoved -= OnProjectItemRemoved;

4
src/Main/Base/Test/CodeConverterTests.cs

@ -37,9 +37,9 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -37,9 +37,9 @@ namespace ICSharpCode.SharpDevelop.Tests
{
DefaultProjectContent pc = new DefaultProjectContent();
pc.ReferencedContents.Add(projectContentRegistry.Mscorlib);
pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms"));
pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("System.Windows.Forms", typeof(System.Windows.Forms.Form).Module.FullyQualifiedName));
if (sourceLanguage == SupportedLanguage.VBNet) {
pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("Microsoft.VisualBasic", "Microsoft.VisualBasic"));
pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("Microsoft.VisualBasic", typeof(Microsoft.VisualBasic.Constants).Module.FullyQualifiedName));
pc.DefaultImports = new DefaultUsing(pc);
pc.DefaultImports.Usings.Add("System");
pc.DefaultImports.Usings.Add("Microsoft.VisualBasic");

1
src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj

@ -33,6 +33,7 @@ @@ -33,6 +33,7 @@
<FileAlignment>4096</FileAlignment>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="PresentationCore">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>

2
src/Main/Base/Test/MemberLookupHelperTests.cs

@ -26,7 +26,7 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -26,7 +26,7 @@ namespace ICSharpCode.SharpDevelop.Tests
{
ProjectContentRegistry r = new ProjectContentRegistry();
msc = r.Mscorlib;
swf = r.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms");
swf = r.GetProjectContentForReference("System.Windows.Forms", typeof(System.Windows.Forms.Form).Module.FullyQualifiedName);
DefaultProjectContent dpc = new DefaultProjectContent();
dpc.ReferencedContents.Add(msc);

8
src/Main/Base/Test/NRefactoryResolverTests.cs

@ -29,8 +29,8 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -29,8 +29,8 @@ namespace ICSharpCode.SharpDevelop.Tests
p.Parse();
DefaultProjectContent pc = new DefaultProjectContent();
pc.ReferencedContents.Add(projectContentRegistry.Mscorlib);
pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("System.Core", "System.Core"));
pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms"));
pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("System.Core", typeof(System.Linq.Enumerable).Module.FullyQualifiedName ));
pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("System.Windows.Forms", typeof(System.Windows.Forms.Form).Module.FullyQualifiedName ));
HostCallback.GetCurrentProjectContent = delegate {
return pc;
};
@ -59,8 +59,8 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -59,8 +59,8 @@ namespace ICSharpCode.SharpDevelop.Tests
return pc;
};
pc.ReferencedContents.Add(projectContentRegistry.Mscorlib);
pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms"));
pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("Microsoft.VisualBasic", "Microsoft.VisualBasic"));
pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("System.Windows.Forms", typeof(System.Windows.Forms.Form).Module.FullyQualifiedName));
pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("Microsoft.VisualBasic", typeof(Microsoft.VisualBasic.Constants).Module.FullyQualifiedName));
pc.Language = LanguageProperties.VBNet;
lastPC = pc;
NRefactoryASTConvertVisitor visitor = new NRefactoryASTConvertVisitor(pc, ICSharpCode.NRefactory.SupportedLanguage.VBNet);

7
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ProjectContentRegistry.cs

@ -300,6 +300,11 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -300,6 +300,11 @@ namespace ICSharpCode.SharpDevelop.Dom
protected virtual Assembly GetDefaultAssembly(string shortName)
{
return null;
/*
* Special cases disabled: using these causes us the load the GAC assemblies,
* but we need to load the reference assemblies instead to support multi-targeting.
*
// These assemblies are already loaded by SharpDevelop, so we
// don't need to load them in a separate AppDomain/with Cecil.
switch (shortName) {
@ -332,7 +337,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -332,7 +337,7 @@ namespace ICSharpCode.SharpDevelop.Dom
return Assembly.Load("Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
default:
return null;
}
}*/
}
}
}

2
src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/CodeSnippetConverterTests.cs

@ -26,7 +26,7 @@ namespace ICSharpCode.SharpDevelop.Dom.Tests @@ -26,7 +26,7 @@ namespace ICSharpCode.SharpDevelop.Dom.Tests
{
referencedContents = new List<IProjectContent> {
SharedProjectContentRegistryForTests.Instance.Mscorlib,
SharedProjectContentRegistryForTests.Instance.GetProjectContentForReference("System", "System")
SharedProjectContentRegistryForTests.Instance.GetProjectContentForReference("System", typeof(Uri).Module.FullyQualifiedName)
};
}

2
src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/NRefactoryAstConverterTests.cs

@ -308,7 +308,7 @@ Module StringExtensions @@ -308,7 +308,7 @@ Module StringExtensions
End Sub
End Module";
ICompilationUnit cu = Parse(code, SupportedLanguage.VBNet, SharedProjectContentRegistryForTests.Instance.Mscorlib,
SharedProjectContentRegistryForTests.Instance.GetProjectContentForReference("System.Core", "System.Core"));
SharedProjectContentRegistryForTests.Instance.GetProjectContentForReference("System.Core", typeof(System.Linq.Enumerable).Module.FullyQualifiedName));
Assert.Greater(cu.Classes.Count, 0);
Assert.AreEqual("StringExtensions", cu.Classes[0].Name);
Assert.AreEqual(ClassType.Module, cu.Classes[0].ClassType);

12
src/Setup/Files.wxs

@ -730,6 +730,9 @@ @@ -730,6 +730,9 @@
<Component Id="CSharpWcfServiceFileTemplate" Guid="FBCEE100-BE0D-11E0-A9F2-C7D14824019B" DiskId="1">
<File Id="CSharp.WcfService.xft" Name="CSharp.WcfService.xft" Source="..\..\data\templates\file\CSharp\CSharp.WcfService.xft" KeyPath="yes" />
</Component>
<Component Id="CSharpWcfRestServiceFileTemplate" Guid="00AE5E3C-DD9C-11E0-A234-EEB74724019B" DiskId="1">
<File Id="CSharp.WcfRestService.xft" Name="CSharp.WcfRestService.xft" Source="..\..\data\templates\file\CSharp\CSharp.WcfRestService.xft" KeyPath="yes" />
</Component>
</Directory>
<Directory Id="MiscFileTemplatesFolder" Name="Misc">
<Component Guid="F47EE9EB-321F-4D98-A373-BFE2C2D801D0" Id="EmptyHTMLFileTemplate" DiskId="1">
@ -804,6 +807,9 @@ @@ -804,6 +807,9 @@
<Component Id="VBWcfServiceFileTemplate" Guid="A1EABE3E-BE0D-11E0-A4E6-5BD14824019B" DiskId="1">
<File Id="VB.WcfService.xft" Name="VB.WcfService.xft" Source="..\..\data\templates\file\VB\VB.WcfService.xft" KeyPath="yes" />
</Component>
<Component Id="VBWcfRestServiceFileTemplate" Guid="28AB44B8-DD9C-11E0-AEE3-30B84724019B" DiskId="1">
<File Id="VB.WcfRestService.xft" Name="VB.WcfRestService.xft" Source="..\..\data\templates\file\VB\VB.WcfRestService.xft" KeyPath="yes" />
</Component>
</Directory>
</Directory>
<Directory Id="ProjectTemplatesFolder" Name="project">
@ -848,6 +854,9 @@ @@ -848,6 +854,9 @@
<Component Id="CSharpWcfServiceProjectTemplate" Guid="D793DD78-BE0C-11E0-AC34-34D04824019B" DiskId="1">
<File Id="CSharp.WcfServiceProject.xpt" Name="CSharp.WcfServiceProject.xpt" Source="..\..\data\templates\project\CSharp\CSharp.WcfServiceProject.xpt" KeyPath="yes" />
</Component>
<Component Id="CSharpWcfRestServiceProjectTemplate" Guid="8FEE65EC-DD9C-11E0-8968-81B84724019B" DiskId="1">
<File Id="CSharp.WcfRestServiceProject.xpt" Name="CSharp.WcfRestServiceProject.xpt" Source="..\..\data\templates\project\CSharp\CSharp.WcfRestServiceProject.xpt" KeyPath="yes" />
</Component>
</Directory>
<Directory Id="MiscProjectTemplatesFolder" Name="Misc">
<Component Guid="F9A7F832-6EC8-4B15-A037-146BD028C9D5" Id="MiscProjectTemplates" DiskId="1">
@ -889,6 +898,9 @@ @@ -889,6 +898,9 @@
<Component Id="VBWcfServiceProjectTemplate" Guid="FF1C11DA-BE0C-11E0-A35E-6FD04824019B" DiskId="1">
<File Id="VB.WcfServiceProject.xpt" Name="VB.WcfServiceProject.xpt" Source="..\..\data\templates\project\VB\VB.WcfServiceProject.xpt" KeyPath="yes" />
</Component>
<Component Id="VBWcfRestServiceProjectTemplate" Guid="A45203E0-DD9C-11E0-974A-93B84724019B" DiskId="1">
<File Id="VB.WcfRestServiceProject.xpt" Name="VB.WcfRestServiceProject.xpt" Source="..\..\data\templates\project\VB\VB.WcfRestServiceProject.xpt" KeyPath="yes" />
</Component>
</Directory>
<Component Guid="73EAC135-57B6-46C0-9F24-70A347B9AAC8" Id="ExampleProjectTemplate" DiskId="1">
<File Source="..\..\data\templates\project\ComplexExample.xpt.test" Id="ComplexExample.xpt.test" Name="ComplexExample.xpt.test" />

5
src/Setup/Setup.wxs

@ -318,6 +318,11 @@ @@ -318,6 +318,11 @@
<ComponentRef Id="VBWcfServiceProjectTemplate"/>
<ComponentRef Id="VBWcfServiceFileTemplate"/>
<ComponentRef Id="CSharpWcfRestServiceProjectTemplate"/>
<ComponentRef Id="CSharpWcfRestServiceFileTemplate"/>
<ComponentRef Id="VBWcfRestServiceProjectTemplate"/>
<ComponentRef Id="VBWcfRestServiceFileTemplate"/>
<ComponentRef Id="EmptyHTMLFileTemplate"/>
<ComponentRef Id="EmptyMsBuildFileTemplate"/>
<ComponentRef Id="EmptyResourceFileTemplate"/>

Loading…
Cancel
Save