Browse Source

Code completion for .NET CF 2.0 projects.

Don't escape ';' in MSBuild properties.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1752 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
00f292290d
  1. 3
      AddIns/ICSharpCode.SharpDevelop.addin
  2. 7
      data/templates/project/CSharp/CompactFormsProject.xpt
  3. 10
      src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.CSharp.targets
  4. 14
      src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets
  5. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  6. 8
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AbstractBuildOptions.cs
  7. 9
      src/Main/Base/Project/Src/Project/Items/ProjectItem.cs
  8. 3
      src/Main/Base/Project/Src/Services/ParserService/Net1xProjectContentRegistry.cs
  9. 64
      src/Main/Base/Project/Src/Services/ParserService/NetCFProjectContentRegistry.cs

3
AddIns/ICSharpCode.SharpDevelop.addin

@ -2205,6 +2205,9 @@ @@ -2205,6 +2205,9 @@
<Condition name = "CompareProjectProperty" property = "TargetFrameworkVersion" equals = "v1.1">
<ProjectContentRegistry id="Net11" class="ICSharpCode.SharpDevelop.Net11ProjectContentRegistry"/>
</Condition>
<Condition name = "CompareProjectProperty" property = "TargetFrameworkVersion" equals = "CF 2.0">
<ProjectContentRegistry id="NetCF20" class="ICSharpCode.SharpDevelop.NetCF20ProjectContentRegistry"/>
</Condition>
</ComplexCondition>
</Path>
</AddIn>

7
data/templates/project/CSharp/CompactFormsProject.xpt

@ -1,7 +1,5 @@ @@ -1,7 +1,5 @@
<?xml version="1.0"?>
<Template originator = "Mike Krueger"
created = "06/10/2001"
lastModified = "14/01/2006">
<Template originator = "Daniel Grunwald">
<!-- Template Header -->
<TemplateConfiguration>
@ -38,10 +36,11 @@ @@ -38,10 +36,11 @@
<PropertyGroup>
<PlatformFamilyName>PocketPC</PlatformFamilyName>
<PlatformID>WinCE</PlatformID>
<TargetFrameworkVersion>CF 2.0</TargetFrameworkVersion>
</PropertyGroup>
<Imports clear="true">
<Import Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.Targets" />
<Import Project="$(SharpDevelopBinPath)\SharpDevelop.Build.CSharp.targets" />
</Imports>
<Files>

10
src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.CSharp.targets

@ -69,4 +69,14 @@ @@ -69,4 +69,14 @@
<!-- Mono imports -->
<Import Condition=" '$(TargetFrameworkVersion)' == 'Mono v1.1' " Project="$(SharpDevelopBinPath)\SharpDevelop.Build.Mono.Mcs.targets"/>
<Import Condition=" '$(TargetFrameworkVersion)' == 'Mono v2.0' " Project="$(SharpDevelopBinPath)\SharpDevelop.Build.Mono.Gmcs.targets"/>
<!-- Compact framework default platform values -->
<PropertyGroup Condition=" '$(TargetFrameworkVersion)' == 'CF 1.0' Or '$(TargetFrameworkVersion)' == 'CF 2.0' ">
<PlatformFamilyName Condition=" '$(PlatformFamilyName)' == '' ">PocketPC</PlatformFamilyName>
<PlatformID Condition=" '$(PlatformID)' == '' ">WinCE</PlatformID>
</PropertyGroup>
<!-- Compact framework imports -->
<Import Condition=" '$(TargetFrameworkVersion)' == 'CF 1.0' " Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.v1.targets"/>
<Import Condition=" '$(TargetFrameworkVersion)' == 'CF 2.0' " Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets"/>
</Project>

14
src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets

@ -85,6 +85,7 @@ @@ -85,6 +85,7 @@
$(NonExistentFile);
@(CustomAdditionalCompileOutputs)"
DependsOnTargets="$(CoreCompileDependsOn)"
Condition=" '$(SharpDevelopUseMicrosoftFramework)' == 'true' "
>
<Vbc
AdditionalLibPaths="$(AdditionalLibPaths)"
@ -136,5 +137,16 @@ @@ -136,5 +137,16 @@
</Target>
<!-- Mono imports -->
<Import Condition=" '$(SharpDevelopUseMicrosoftFramework)' != 'true' " Project="$(SharpDevelopBinPath)\SharpDevelop.Build.Mono.Mbas.targets"/>
<Import Condition=" '$(TargetFrameworkVersion)' == 'Mono v1.1' " Project="$(SharpDevelopBinPath)\SharpDevelop.Build.Mono.Mbas.targets"/>
<Import Condition=" '$(TargetFrameworkVersion)' == 'Mono v2.0' " Project="$(SharpDevelopBinPath)\SharpDevelop.Build.Mono.Mbas.targets"/>
<!-- Compact framework default platform values -->
<PropertyGroup Condition=" '$(TargetFrameworkVersion)' == 'CF 1.0' Or '$(TargetFrameworkVersion)' == 'CF 2.0' ">
<PlatformFamilyName Condition=" '$(PlatformFamilyName)' == '' ">PocketPC</PlatformFamilyName>
<PlatformID Condition=" '$(PlatformID)' == '' ">WinCE</PlatformID>
</PropertyGroup>
<!-- Compact framework imports -->
<Import Condition=" '$(TargetFrameworkVersion)' == 'CF 1.0' " Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.v1.targets"/>
<Import Condition=" '$(TargetFrameworkVersion)' == 'CF 2.0' " Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets"/>
</Project>

1
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -703,6 +703,7 @@ @@ -703,6 +703,7 @@
<Compile Include="Src\Services\ParserService\Doozer\ProjectContentRegistryDoozer.cs" />
<Compile Include="Src\Internal\ConditionEvaluators\CompareProjectPropertyConditionEvaluator.cs" />
<Compile Include="Src\Services\ParserService\Net1xProjectContentRegistry.cs" />
<Compile Include="Src\Services\ParserService\NetCFProjectContentRegistry.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj">

8
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AbstractBuildOptions.cs

@ -218,9 +218,11 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -218,9 +218,11 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
targetFrameworkBinding = helper.BindStringEnum("targetFrameworkComboBox", TargetFrameworkProperty,
"",
new StringPair("", "Default (.NET 2.0)"),
new StringPair("v1.0", ".NET 1.0"),
new StringPair("v1.1", ".NET 1.1"),
new StringPair("v2.0", ".NET 2.0"),
new StringPair("v1.0", ".NET Framework 1.0"),
new StringPair("v1.1", ".NET Framework 1.1"),
new StringPair("v2.0", ".NET Framework 2.0"),
new StringPair("CF 1.0", "Compact Framework 1.0"),
new StringPair("CF 2.0", "Compact Framework 2.0"),
new StringPair("Mono v1.1", "Mono 1.1"),
new StringPair("Mono v2.0", "Mono 2.0"));
targetFrameworkBinding.CreateLocationButton("targetFrameworkLabel");

9
src/Main/Base/Project/Src/Project/Items/ProjectItem.cs

@ -141,6 +141,11 @@ namespace ICSharpCode.SharpDevelop.Project @@ -141,6 +141,11 @@ namespace ICSharpCode.SharpDevelop.Project
}
public static string MSBuildEscape(string text)
{
return MSBuildEscape(text, false);
}
public static string MSBuildEscape(string text, bool escapeSemicolon)
{
StringBuilder b = null;
for (int i = 0; i < text.Length; i++) {
@ -169,7 +174,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -169,7 +174,7 @@ namespace ICSharpCode.SharpDevelop.Project
for (int i = 0; i < text.Length; i++) {
char c = text[i];
if (c == '%' && i + 2 < text.Length) {
if (b == null) b = new StringBuilder(text, 0, i, text.Length + 6);
if (b == null) b = new StringBuilder(text, 0, i, text.Length);
string a = text[i + 1].ToString() + text[i + 2].ToString();
int num;
if (int.TryParse(a, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out num)) {
@ -204,7 +209,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -204,7 +209,7 @@ namespace ICSharpCode.SharpDevelop.Project
internal void WriteItem(XmlWriter writer)
{
writer.WriteStartElement(Tag);
writer.WriteAttributeString("Include", MSBuildEscape(Include));
writer.WriteAttributeString("Include", MSBuildEscape(Include, true));
this.Properties.WriteProperties(writer);
writer.WriteEndElement();
}

3
src/Main/Base/Project/Src/Services/ParserService/Net1xProjectContentRegistry.cs

@ -40,6 +40,9 @@ namespace ICSharpCode.SharpDevelop @@ -40,6 +40,9 @@ namespace ICSharpCode.SharpDevelop
if (File.Exists(Path.Combine(netPath, shortName + ".dll"))) {
return CecilReader.LoadAssembly(Path.Combine(netPath, shortName + ".dll"), this);
} else if (File.Exists(Path.Combine(netPath, shortName))) {
// perhaps shortName includes file extension
return CecilReader.LoadAssembly(Path.Combine(netPath, shortName), this);
}
} else {
string message = "Warning: Target .NET Framework version " + DotnetVersion + " is not installed." + Environment.NewLine;

64
src/Main/Base/Project/Src/Services/ParserService/NetCFProjectContentRegistry.cs

@ -0,0 +1,64 @@ @@ -0,0 +1,64 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision$</version>
// </file>
using System;
using Microsoft.Win32;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.SharpDevelop
{
public class NetCF20ProjectContentRegistry : ProjectContentRegistry
{
public override IProjectContent Mscorlib {
get {
return GetProjectContentForReference("mscorlib", "mscorlib");
}
}
static string GetInstallFolder()
{
const string regkey = @"SOFTWARE\Microsoft\.NETCompactFramework\v2.0.0.0\WindowsCE\AssemblyFoldersEx";
RegistryKey key = Registry.LocalMachine.OpenSubKey(regkey);
if (key != null) {
string dir = key.GetValue(null) as string;
key.Close();
return dir;
}
return null;
}
protected override IProjectContent LoadProjectContent(string itemInclude, string itemFileName)
{
if (File.Exists(itemFileName)) {
return ParserService.DefaultProjectContentRegistry.GetProjectContentForReference(itemInclude, itemFileName);
}
string netPath = GetInstallFolder();
if (!string.IsNullOrEmpty(netPath) && File.Exists(Path.Combine(netPath, "mscorlib.dll"))) {
string shortName = itemInclude;
int pos = shortName.IndexOf(',');
if (pos > 0)
shortName = shortName.Substring(0, pos);
if (File.Exists(Path.Combine(netPath, shortName + ".dll"))) {
return CecilReader.LoadAssembly(Path.Combine(netPath, shortName + ".dll"), this);
} else if (File.Exists(Path.Combine(netPath, shortName))) {
// perhaps shortName includes file extension
return CecilReader.LoadAssembly(Path.Combine(netPath, shortName), this);
}
} else {
string message = "Warning: .NET Compact Framework SDK is not installed." + Environment.NewLine;
if (!TaskService.BuildMessageViewCategory.Text.Contains(message)) {
TaskService.BuildMessageViewCategory.AppendText(message);
}
}
return ParserService.DefaultProjectContentRegistry.GetProjectContentForReference(itemInclude, itemFileName);
}
}
}
Loading…
Cancel
Save