Browse Source

Support "AvailableItemName" - the list of build actions available for files is read from the imported .targets files.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2049 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
4ca90a7a92
  1. 1
      src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj
  2. 2
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs
  3. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs
  4. 1
      src/AddIns/BackendBindings/ILAsmBinding/Project/ILAsmBinding.csproj
  5. 2
      src/AddIns/BackendBindings/ILAsmBinding/Project/Src/ILAsmProject.cs
  6. 2
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs
  7. 2
      src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixProject.cs
  8. 37
      src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs
  9. 4
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AbstractBuildOptions.cs
  10. 1
      src/Main/Base/Project/Src/Internal/Templates/Project/CombineDescriptor.cs
  11. 2
      src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs
  12. 18
      src/Main/Base/Project/Src/Project/AbstractProject.cs
  13. 2
      src/Main/Base/Project/Src/Project/CompilableProject.cs
  14. 7
      src/Main/Base/Project/Src/Project/IProject.cs
  15. 31
      src/Main/Base/Project/Src/Project/Items/FileProjectItem.cs
  16. 6
      src/Main/Base/Project/Src/Project/Items/ItemType.cs
  17. 75
      src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs
  18. 16
      src/Main/Base/Project/Src/Project/MSBuildInternals.cs
  19. 2
      src/Main/Base/Project/Src/TextEditor/Gui/Dialogs/GotoDialog.cs

1
src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj

@ -57,7 +57,6 @@ @@ -57,7 +57,6 @@
<HintPath>..\..\RequiredLibraries\Boo.Lang.Useful.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="Microsoft.Build.Engine" />
</ItemGroup>
<ItemGroup>
<Compile Include="Src\BooProject.cs" />

2
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs

@ -64,7 +64,7 @@ namespace Grunwald.BooBinding @@ -64,7 +64,7 @@ namespace Grunwald.BooBinding
}
}
}
this.MSBuildProject.AddNewImport("$(BooBinPath)\\Boo.Microsoft.Build.targets", null);
this.AddImport("$(BooBinPath)\\Boo.Microsoft.Build.targets", null);
}
void AddReference(string assembly)

2
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs

@ -62,7 +62,7 @@ namespace CSharpBinding @@ -62,7 +62,7 @@ namespace CSharpBinding
protected override void Create(ProjectCreateInformation information)
{
base.Create(information);
this.MSBuildProject.AddNewImport(DefaultTargetsFile, null);
this.AddImport(DefaultTargetsFile, null);
SetProperty("Debug", null, "CheckForOverflowUnderflow", "True",
PropertyStorageLocations.ConfigurationSpecific, true);
SetProperty("Release", null, "CheckForOverflowUnderflow", "False",

1
src/AddIns/BackendBindings/ILAsmBinding/Project/ILAsmBinding.csproj

@ -40,7 +40,6 @@ @@ -40,7 +40,6 @@
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="Microsoft.Build.Engine" />
</ItemGroup>
<ItemGroup>
<Compile Include="Src\AssemblyInfo.cs" />

2
src/AddIns/BackendBindings/ILAsmBinding/Project/Src/ILAsmProject.cs

@ -26,7 +26,7 @@ namespace ICSharpCode.ILAsmBinding @@ -26,7 +26,7 @@ namespace ICSharpCode.ILAsmBinding
: base(info.Solution)
{
Create(info);
this.MSBuildProject.AddNewImport(@"$(SharpDevelopBinPath)\SharpDevelop.Build.MSIL.Targets", null);
this.AddImport(@"$(SharpDevelopBinPath)\SharpDevelop.Build.MSIL.Targets", null);
}
public override string Language {

2
src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs

@ -68,7 +68,7 @@ namespace VBNetBinding @@ -68,7 +68,7 @@ namespace VBNetBinding
SetProperty("Release", null, "DefineConstants", "TRACE=1",
PropertyStorageLocations.ConfigurationSpecific, true);
this.MSBuildProject.AddNewImport(DefaultTargetsFile, null);
this.AddImport(DefaultTargetsFile, null);
}
protected override ParseProjectContent CreateProjectContent()

2
src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixProject.cs

@ -240,7 +240,7 @@ namespace ICSharpCode.WixBinding @@ -240,7 +240,7 @@ namespace ICSharpCode.WixBinding
AddGuardedProperty("ToolPath", "$(WixToolPath)", false);
AddGuardedProperty("WixMSBuildExtensionsPath", wixToolPath, false);
this.MSBuildProject.AddNewImport(DefaultTargetsFile, null);
this.AddImport(DefaultTargetsFile, null);
}
/// <summary>

37
src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs

@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.IO;
@ -27,9 +28,11 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -27,9 +28,11 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
{
protected Container components = new System.ComponentModel.Container();
protected ArrayList alltemplates = new ArrayList();
protected ArrayList categories = new ArrayList();
protected Hashtable icons = new Hashtable();
protected List<TemplateItem> alltemplates = new List<TemplateItem>();
protected List<Category> categories = new List<Category>();
// icon resource name => image index
protected Dictionary<string, int> icons = new Dictionary<string, int>();
protected bool createNewSolution;
@ -48,10 +51,6 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -48,10 +51,6 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
Icon = null;
}
public NewProjectDialog()
{
}
protected virtual void InitializeView()
{
ImageList smalllist = new ImageList();
@ -68,10 +67,10 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -68,10 +67,10 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
// load the icons and set their index from the image list in the hashtable
int i = 0;
Hashtable tmp = new Hashtable(icons);
Dictionary<string, int> tmp = new Dictionary<string, int>(icons);
foreach (DictionaryEntry entry in icons) {
Bitmap bitmap = IconService.GetBitmap(entry.Key.ToString());
foreach (KeyValuePair<string, int> entry in icons) {
Bitmap bitmap = IconService.GetBitmap(entry.Key);
if (bitmap != null) {
smalllist.Images.Add(bitmap);
imglist.Images.Add(bitmap);
@ -87,7 +86,7 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -87,7 +86,7 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
if (item.Template.Icon == null) {
item.ImageIndex = 0;
} else {
item.ImageIndex = (int)icons[item.Template.Icon];
item.ImageIndex = icons[item.Template.Icon];
}
}
@ -100,7 +99,7 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -100,7 +99,7 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
SelectLastSelectedCategoryNode(((TreeView)ControlDictionary["categoryTreeView"]).Nodes, PropertyService.Get("Dialogs.NewProjectDialog.LastSelectedCategory", "C#"));
}
void InsertCategories(TreeNode node, ArrayList catarray)
void InsertCategories(TreeNode node, IEnumerable<Category> catarray)
{
foreach (Category cat in catarray) {
if (node == null) {
@ -145,6 +144,10 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -145,6 +144,10 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
protected virtual void InitializeTemplates()
{
foreach (ProjectTemplate template in ProjectTemplate.ProjectTemplates) {
if (template.ProjectDescriptor == null && createNewSolution == false) {
// Do not show solution template when added a new project to existing solution
continue;
}
TemplateItem titem = new TemplateItem(template);
if (titem.Template.Icon != null) {
icons[titem.Template.Icon] = 0; // "create template icon"
@ -409,9 +412,9 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -409,9 +412,9 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
/// </summary>
public class Category : TreeNode, ICategory
{
ArrayList categories = new ArrayList();
ArrayList templates = new ArrayList();
int sortOrder = TemplateCategorySortOrderFile.UndefinedSortOrder;
List<Category> categories = new List<Category>();
List<TemplateItem> templates = new List<TemplateItem>();
int sortOrder = TemplateCategorySortOrderFile.UndefinedSortOrder;
public Category(string name) : this(name, TemplateCategorySortOrderFile.UndefinedSortOrder)
{
@ -432,12 +435,12 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -432,12 +435,12 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
sortOrder = value;
}
}
public ArrayList Categories {
public List<Category> Categories {
get {
return categories;
}
}
public ArrayList Templates {
public List<TemplateItem> Templates {
get {
return templates;
}

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

@ -247,13 +247,13 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -247,13 +247,13 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
if (needExtensions) {
if (defaultTargets.Equals(import.ProjectPath, StringComparison.InvariantCultureIgnoreCase)) {
//import.ProjectPath = extendedTargets;
MSBuildInternals.SetImportProjectPath(project.MSBuildProject, import, extendedTargets);
MSBuildInternals.SetImportProjectPath(project, import, extendedTargets);
break;
}
} else {
if (extendedTargets.Equals(import.ProjectPath, StringComparison.InvariantCultureIgnoreCase)) {
//import.ProjectPath = defaultTargets;
MSBuildInternals.SetImportProjectPath(project.MSBuildProject, import, defaultTargets);
MSBuildInternals.SetImportProjectPath(project, import, defaultTargets);
break;
}
}

1
src/Main/Base/Project/Src/Internal/Templates/Project/CombineDescriptor.cs

@ -54,7 +54,6 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -54,7 +54,6 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
return false;
newProject.Location = FileUtility.GetRelativePath(projectCreateInformation.SolutionPath, newProject.FileName);
parentFolder.AddFolder(newProject);
projectCreateInformation.CreatedProjects.Add(newProject.FileName);
}
return true;
}

2
src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs

@ -294,6 +294,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -294,6 +294,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
foreach (Import projectImport in projectImports) {
((MSBuildBasedProject)project).MSBuildProject.AddNewImport(projectImport.Key, projectImport.Value);
}
((MSBuildBasedProject)project).CreateItemsListFromMSBuild();
}
if (projectProperties.Count > 0) {
@ -359,6 +360,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -359,6 +360,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
project.Save();
}
projectCreateInformation.CreatedProjects.Add(project.FileName);
return project;
}
finally

18
src/Main/Base/Project/Src/Project/AbstractProject.cs

@ -7,10 +7,11 @@ @@ -7,10 +7,11 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Collections.ObjectModel;
using System.IO;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
@ -42,6 +43,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -42,6 +43,7 @@ namespace ICSharpCode.SharpDevelop.Project
#region IDisposable implementation
bool isDisposed;
[Browsable(false)]
public bool IsDisposed {
get { return isDisposed; }
}
@ -198,12 +200,14 @@ namespace ICSharpCode.SharpDevelop.Project @@ -198,12 +200,14 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
[Browsable(false)]
public virtual ICollection<string> ConfigurationNames {
get {
return new string[] { "Debug", "Release" };
}
}
[Browsable(false)]
public virtual ICollection<string> PlatformNames {
get {
return new string[] { "AnyCPU" };
@ -222,6 +226,16 @@ namespace ICSharpCode.SharpDevelop.Project @@ -222,6 +226,16 @@ namespace ICSharpCode.SharpDevelop.Project
}
#endregion
/// <summary>
/// Gets the list of available file item types.
/// </summary>
public virtual ICollection<ItemType> AvailableFileItemTypes {
get {
return ItemType.DefaultFileItems;
}
}
[Browsable(false)]
public virtual ReadOnlyCollection<ProjectItem> Items {
get {
return new ReadOnlyCollection<ProjectItem>(new ProjectItem[0]);

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

@ -94,6 +94,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -94,6 +94,7 @@ namespace ICSharpCode.SharpDevelop.Project
/// <summary>
/// Gets the path where temporary files are written to during compilation.
/// </summary>
[Browsable(false)]
public string IntermediateOutputFullPath {
get {
string outputPath = GetProperty("IntermediateOutputPath");
@ -112,6 +113,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -112,6 +113,7 @@ namespace ICSharpCode.SharpDevelop.Project
/// Gets the full path to the xml documentation file generated by the project, or
/// <c>null</c> if no xml documentation is being generated.
/// </summary>
[Browsable(false)]
public string DocumentationFileFullPath {
get {
string file = GetProperty("DocumentationFile");

7
src/Main/Base/Project/Src/Project/IProject.cs

@ -39,6 +39,13 @@ namespace ICSharpCode.SharpDevelop.Project @@ -39,6 +39,13 @@ namespace ICSharpCode.SharpDevelop.Project
/// <param name="fileName">The full path to the file to determine the item type for</param>
ItemType GetDefaultItemType(string fileName);
/// <summary>
/// Gets the list of available file item types.
/// </summary>
ICollection<ItemType> AvailableFileItemTypes {
get;
}
/// <summary>
/// Gets a list of project sections stored in the solution file for this project.
/// </summary>

31
src/Main/Base/Project/Src/Project/Items/FileProjectItem.cs

@ -6,11 +6,13 @@ @@ -6,11 +6,13 @@
// </file>
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Drawing.Design;
using System.IO;
using System.Windows.Forms;
using System.Windows.Forms.Design;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Widgets.DesignTimeSupport;
@ -48,6 +50,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -48,6 +50,7 @@ namespace ICSharpCode.SharpDevelop.Project
[LocalizedProperty("${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.BuildAction}",
Description ="${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.BuildAction.Description}")]
[Editor(typeof(BuildActionEditor), typeof(UITypeEditor))]
public string BuildAction {
get {
return this.ItemType.ItemName;
@ -57,18 +60,36 @@ namespace ICSharpCode.SharpDevelop.Project @@ -57,18 +60,36 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
/*
sealed class BuildActionEditor : DropDownEditor
{
protected override Control CreateDropDownControl(ITypeDescriptorContext context, IWindowsFormsEditorService editorService)
{
FileProjectItem item = context.Instance as FileProjectItem;
if (item != null && item.Project != null) {
return new DropDownEditorListBox(editorService, GetNames(item.Project.AvailableFileItemTypes));
} else {
return new DropDownEditorListBox(editorService, GetNames(ItemType.DefaultFileItems));
}
}
static IEnumerable<string> GetNames(IEnumerable<ItemType> itemTypes)
{
return Linq.Select<ItemType, string>(
itemTypes, delegate(ItemType it) { return it.ItemName; }
);
}
}
[LocalizedProperty("${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.CopyToOutputDirectory}",
Description = "${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.CopyToOutputDirectory.Description}")]
public CopyToOutputDirectory CopyToOutputDirectory {
get {
return base.Properties.Get("CopyToOutputDirectory", CopyToOutputDirectory.Never);
return GetEvaluatedMetadata("CopyToOutputDirectory", CopyToOutputDirectory.Never);
}
set {
base.Properties.Set("CopyToOutputDirectory", value);
SetEvaluatedMetadata("CopyToOutputDirectory", value);
}
}
*/
[LocalizedProperty("${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.CustomTool}",
Description ="${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.CustomTool.Description}")]

6
src/Main/Base/Project/Src/Project/Items/ItemType.cs

@ -40,10 +40,8 @@ namespace ICSharpCode.SharpDevelop.Project @@ -40,10 +40,8 @@ namespace ICSharpCode.SharpDevelop.Project
/// <summary>
/// Gets a collection of item types that are used for files.
/// </summary>
public static readonly ReadOnlyCollectionWrapper<ItemType> FileItems
= new Set<ItemType>(Compile, EmbeddedResource, None, Content,
ApplicationDefinition, Page, BootstrapperFile
).AsReadOnly();
public static readonly ReadOnlyCollectionWrapper<ItemType> DefaultFileItems
= new Set<ItemType>(Compile, EmbeddedResource, None, Content).AsReadOnly();
public static readonly ItemType Resource = new ItemType("Resource");
public static readonly ItemType Folder = new ItemType("Folder");

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

@ -8,13 +8,14 @@ @@ -8,13 +8,14 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Internal.Templates;
using MSBuild = Microsoft.Build.BuildEngine;
using StringPair = ICSharpCode.SharpDevelop.Pair<string, string>;
using StringPair = ICSharpCode.SharpDevelop.Pair<System.String, System.String>;
namespace ICSharpCode.SharpDevelop.Project
{
@ -48,6 +49,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -48,6 +49,7 @@ namespace ICSharpCode.SharpDevelop.Project
/// <summary>
/// Gets the underlying MSBuild project.
/// </summary>
[Browsable(false)]
public MSBuild.Project MSBuildProject {
get { return project; }
}
@ -80,9 +82,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -80,9 +82,6 @@ namespace ICSharpCode.SharpDevelop.Project
case "Resource":
case "Content":
case "Folder":
case "BootstrapperFile":
case "ApplicationDefinition":
case "Page":
return new FileProjectItem(this, item);
case "WebReferenceUrl":
@ -92,12 +91,29 @@ namespace ICSharpCode.SharpDevelop.Project @@ -92,12 +91,29 @@ namespace ICSharpCode.SharpDevelop.Project
return new WebReferencesProjectItem(this, item);
default:
return base.CreateProjectItem(item);
if (this.AvailableFileItemTypes.Contains(new ItemType(item.Name))
|| SafeFileExists(this.Directory, item.Include))
{
return new FileProjectItem(this, item);
} else {
return base.CreateProjectItem(item);
}
}
}
static bool SafeFileExists(string directory, string fileName)
{
try {
return File.Exists(Path.Combine(directory, fileName));
} catch (Exception) {
return false;
}
}
protected virtual void Create(ProjectCreateInformation information)
{
InitializeMSBuildProject();
Name = information.ProjectName;
FileName = information.OutputProjectFileName;
@ -129,6 +145,16 @@ namespace ICSharpCode.SharpDevelop.Project @@ -129,6 +145,16 @@ namespace ICSharpCode.SharpDevelop.Project
newGroup.AddNewProperty(name, value, treatValueAsLiteral).Condition = " '$(" + name + ")' == '' ";
}
/// <summary>
/// Adds an MSBuild import to the project, refreshes the list of available item names
/// and recreates the project items.
/// </summary>
protected void AddImport(string projectFile, string condition)
{
project.AddNewImport(projectFile, condition);
CreateItemsListFromMSBuild();
}
#region Get Property
/// <summary>
/// Retrieves the evaluated property '<paramref name="propertyName"/>' from the
@ -586,6 +612,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -586,6 +612,7 @@ namespace ICSharpCode.SharpDevelop.Project
#region IProjectItemListProvider interface
List<ProjectItem> items = new List<ProjectItem>();
ReadOnlyCollection<ProjectItem> itemsReadOnly;
ICollection<ItemType> availableFileItemTypes = ItemType.DefaultFileItems;
public override ReadOnlyCollection<ProjectItem> Items {
get {
@ -593,12 +620,32 @@ namespace ICSharpCode.SharpDevelop.Project @@ -593,12 +620,32 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
void CreateItemsListFromMSBuild()
/// <summary>
/// Gets the list of available file item types.
/// </summary>
public override ICollection<ItemType> AvailableFileItemTypes {
get {
return availableFileItemTypes;
}
}
/// <summary>
/// re-creates the list of project items and the list of available item types
/// </summary>
internal void CreateItemsListFromMSBuild()
{
foreach (ProjectItem item in items) {
item.Dispose();
}
items.Clear();
Set<ItemType> availableFileItemTypes = new Set<ItemType>();
availableFileItemTypes.AddRange(ItemType.DefaultFileItems);
foreach (MSBuild.BuildItem item in project.GetEvaluatedItemsByName("AvailableItemName")) {
availableFileItemTypes.Add(new ItemType(item.Include));
}
this.availableFileItemTypes = availableFileItemTypes.AsReadOnly();
foreach (MSBuild.BuildItem item in project.EvaluatedItems) {
if (item.IsImported) continue;
@ -625,8 +672,8 @@ namespace ICSharpCode.SharpDevelop.Project @@ -625,8 +672,8 @@ namespace ICSharpCode.SharpDevelop.Project
}
if (g[0].Name == "Reference")
continue;
if (ItemType.FileItems.Contains(new ItemType(g[0].Name))) {
if (ItemType.FileItems.Contains(item.ItemType)) {
if (ItemType.DefaultFileItems.Contains(new ItemType(g[0].Name))) {
if (ItemType.DefaultFileItems.Contains(item.ItemType)) {
MSBuildInternals.AddItemToGroup(g, item);
return;
} else {
@ -724,15 +771,21 @@ namespace ICSharpCode.SharpDevelop.Project @@ -724,15 +771,21 @@ namespace ICSharpCode.SharpDevelop.Project
#region Loading
protected bool isLoading;
void InitializeMSBuildProject()
{
project.GlobalProperties.SetProperty("BuildingInsideVisualStudio", "true");
foreach (KeyValuePair<string, string> pair in MSBuildEngine.MSBuildProperties) {
project.GlobalProperties.SetProperty(pair.Key, pair.Value, true);
}
}
protected virtual void LoadProject(string fileName)
{
isLoading = true;
try {
this.FileName = fileName;
foreach (KeyValuePair<string, string> pair in MSBuildEngine.MSBuildProperties) {
project.GlobalProperties.SetProperty(pair.Key, pair.Value, true);
}
InitializeMSBuildProject();
project.Load(fileName);
this.ActiveConfiguration = GetProperty("Configuration") ?? this.ActiveConfiguration;

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

@ -67,7 +67,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -67,7 +67,7 @@ namespace ICSharpCode.SharpDevelop.Project
}
#endregion
public static void AddItemToGroup(MSBuild.BuildItemGroup group, ProjectItem item)
internal static void AddItemToGroup(MSBuild.BuildItemGroup group, ProjectItem item)
{
if (group == null)
throw new ArgumentNullException("group");
@ -191,7 +191,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -191,7 +191,7 @@ namespace ICSharpCode.SharpDevelop.Project
/// WARNING: EvaluateCondition might add a temporary property group and remove it again,
/// which invalidates enumerators over the list of property groups!
/// </summary>
public static bool EvaluateCondition(MSBuild.Project project,
internal static bool EvaluateCondition(MSBuild.Project project,
string condition)
{
const string propertyName = "MSBuildInternalsEvaluateConditionDummyPropertyName";
@ -236,16 +236,24 @@ namespace ICSharpCode.SharpDevelop.Project @@ -236,16 +236,24 @@ namespace ICSharpCode.SharpDevelop.Project
/// Note: this methods causes the project to recreate all imports, so existing import
/// instances might not be affected.
/// </summary>
public static void SetImportProjectPath(MSBuild.Project project, MSBuild.Import import,
public static void SetImportProjectPath(MSBuildBasedProject project, MSBuild.Import import,
string newRawPath)
{
if (project == null)
throw new ArgumentNullException("project");
if (import == null)
throw new ArgumentNullException("import");
if (newRawPath == null)
throw new ArgumentNullException("newRawPath");
XmlAttribute a = (XmlAttribute)typeof(MSBuild.Import).InvokeMember(
"ProjectPathAttribute",
BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic,
null, import, null
);
a.Value = newRawPath;
EndXmlManipulation(project);
EndXmlManipulation(project.MSBuildProject);
project.CreateItemsListFromMSBuild();
}
public static IEnumerable<string> GetCustomMetadataNames(MSBuild.BuildItem item)

2
src/Main/Base/Project/Src/TextEditor/Gui/Dialogs/GotoDialog.cs

@ -195,7 +195,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -195,7 +195,7 @@ namespace ICSharpCode.SharpDevelop.Gui
if (ProjectService.OpenSolution != null) {
foreach (IProject project in ProjectService.OpenSolution.Projects) {
foreach (ProjectItem item in project.Items) {
if (ItemType.FileItems.Contains(item.ItemType)) {
if (item is FileProjectItem) {
AddSourceFile(text, lineNumber, item);
}
}

Loading…
Cancel
Save