Browse Source

Use class FileName for the ProjectItem.FileName property.

pull/32/merge
Daniel Grunwald 13 years ago
parent
commit
1229e35d23
  1. 6
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/TestableProject.cs
  2. 3
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectFileTests.cs
  3. 4
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/SearchForIssuesCommand.cs
  4. 11
      src/AddIns/BackendBindings/CppBinding/CppBinding/Project/CppProject.cs
  5. 5
      src/AddIns/BackendBindings/CppBinding/CppBinding/Project/ProjectConfigurationProjectItem.cs
  6. 11
      src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixProject.cs
  7. 4
      src/AddIns/BackendBindings/WixBinding/Test/Project/WixInstallerPathTests.cs
  8. 2
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlSymbolSearch.cs
  9. 4
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs
  10. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs
  11. 2
      src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs
  12. 2
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemPropertyTests.cs
  13. 12
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs
  14. 2
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/Reference3Tests.cs
  15. 2
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs
  16. 8
      src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs
  17. 7
      src/AddIns/Misc/TextTemplating/Test/Helpers/TestableFileProjectItem.cs
  18. 2
      src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingAssemblyPathResolverTests.cs
  19. 11
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/ProjectWithServiceReferences.cs
  20. 3
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/ServiceReferenceMapFileProjectItem.cs
  21. 2
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs
  22. 4
      src/Main/Base/Project/Src/Project/AbstractProject.cs
  23. 14
      src/Main/Base/Project/Src/Project/CompilableProject.cs
  24. 2
      src/Main/Base/Project/Src/Project/CustomTool.cs
  25. 2
      src/Main/Base/Project/Src/Project/IProject.cs
  26. 17
      src/Main/Base/Project/Src/Project/Items/ComReferenceProjectItem.cs
  27. 2
      src/Main/Base/Project/Src/Project/Items/FileProjectItem.cs
  28. 10
      src/Main/Base/Project/Src/Project/Items/ProjectItem.cs
  29. 22
      src/Main/Base/Project/Src/Project/Items/ReferenceProjectItem.cs
  30. 4
      src/Main/Base/Project/Src/Project/WebReferenceUrl.cs
  31. 3
      src/Main/Base/Test/ServiceReferences/ServiceReferenceGeneratorTests.cs
  32. 20
      src/Main/Core/Project/Src/Services/FileUtility/DirectoryName.cs
  33. 4
      src/Main/SharpDevelop/Project/Build/MSBuildEngine/MSBuildEngine.cs
  34. 2
      src/Main/SharpDevelop/Project/Solution.cs

6
src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/TestableProject.cs

@ -55,13 +55,13 @@ namespace AspNet.Mvc.Tests.Helpers
public FileProjectItem AddFileToProject(string fileName) public FileProjectItem AddFileToProject(string fileName)
{ {
var projectItem = new FileProjectItem(this, ItemType.Compile); var projectItem = new FileProjectItem(this, ItemType.Compile);
projectItem.FileName = fileName; projectItem.FileName = FileName.Create(fileName);
ProjectService.AddProjectItem(this, projectItem); ProjectService.AddProjectItem(this, projectItem);
return projectItem; return projectItem;
} }
public override string OutputAssemblyFullPath { public override FileName OutputAssemblyFullPath {
get { return outputAssemblyFullPath; } get { return FileName.Create(outputAssemblyFullPath); }
} }
public void SetOutputAssemblyFullPath(string path) public void SetOutputAssemblyFullPath(string path)

3
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectFileTests.cs

@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using ICSharpCode.Core;
using AspNet.Mvc.Tests.Helpers; using AspNet.Mvc.Tests.Helpers;
using ICSharpCode.AspNet.Mvc; using ICSharpCode.AspNet.Mvc;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
@ -22,7 +23,7 @@ namespace AspNet.Mvc.Tests
MvcProjectFile CreateProjectFile(string fullPath) MvcProjectFile CreateProjectFile(string fullPath)
{ {
var projectItem = new FileProjectItem(project, ItemType.Compile); var projectItem = new FileProjectItem(project, ItemType.Compile);
projectItem.FileName = fullPath; projectItem.FileName = FileName.Create(fullPath);
file = new MvcProjectFile(projectItem); file = new MvcProjectFile(projectItem);
return file; return file;
} }

4
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/SearchForIssuesCommand.cs

@ -98,8 +98,8 @@ namespace CSharpBinding.Refactoring
if (project == null) if (project == null)
return Enumerable.Empty<FileName>(); return Enumerable.Empty<FileName>();
return from item in project.GetItemsOfType(ItemType.Compile) return from item in project.GetItemsOfType(ItemType.Compile)
where item.FileName.EndsWith(".cs", StringComparison.OrdinalIgnoreCase) where item.FileName.HasExtension(".cs")
select FileName.Create(item.FileName); select item.FileName;
} }
Task SearchForIssuesAsync(List<FileName> fileNames, IEnumerable<IssueManager.IssueProvider> providers, Action<SearchedFile> callback, IProgressMonitor monitor) Task SearchForIssuesAsync(List<FileName> fileNames, IEnumerable<IssueManager.IssueProvider> providers, Action<SearchedFile> callback, IProgressMonitor monitor)

11
src/AddIns/BackendBindings/CppBinding/CppBinding/Project/CppProject.cs

@ -51,7 +51,7 @@ namespace ICSharpCode.CppBinding.Project
// get { return LanguageProperties.; } // get { return LanguageProperties.; }
// } // }
public override string OutputAssemblyFullPath public override FileName OutputAssemblyFullPath
{ {
/// <summary> /// <summary>
/// For vcxprojs the output assembly location is stored in OutDir property. /// For vcxprojs the output assembly location is stored in OutDir property.
@ -61,19 +61,18 @@ namespace ICSharpCode.CppBinding.Project
{ {
string outputPath = GetEvaluatedProperty("OutDir") ?? ""; string outputPath = GetEvaluatedProperty("OutDir") ?? "";
if (!Path.IsPathRooted(outputPath)) if (!Path.IsPathRooted(outputPath))
return FileUtility.NormalizePath(Path.Combine(ParentSolution.Directory, outputPath, return FileName.Create(Path.Combine(ParentSolution.Directory, outputPath,
AssemblyName + GetExtension(OutputType))); AssemblyName + GetExtension(OutputType)));
else else
{ {
// this will be valid if there is an explicit OutDir property in vcxproj file. // this will be valid if there is an explicit OutDir property in vcxproj file.
if ((GetUnevalatedProperty("OutDir") ?? "").StartsWith("$(SolutionDir)")) if ((GetUnevalatedProperty("OutDir") ?? "").StartsWith("$(SolutionDir)", StringComparison.OrdinalIgnoreCase)) {
{
// in #D every project is compiled by msbuild separately, this mean that SolutionDir will // in #D every project is compiled by msbuild separately, this mean that SolutionDir will
// be equal to ProjectDir, so it has to be replaced with actual solution directory // be equal to ProjectDir, so it has to be replaced with actual solution directory
string evaluatedSolutionDir = GetEvaluatedProperty("SolutionDir") ?? ""; string evaluatedSolutionDir = GetEvaluatedProperty("SolutionDir") ?? "";
outputPath = Path.Combine(ParentSolution.Directory, outputPath.Substring(evaluatedSolutionDir.Length)); outputPath = Path.Combine(ParentSolution.Directory, outputPath.Substring(evaluatedSolutionDir.Length));
} }
return FileUtility.NormalizePath(Path.Combine(outputPath, AssemblyName + GetExtension(OutputType))); return FileName.Create(Path.Combine(outputPath, AssemblyName + GetExtension(OutputType)));
} }
} }
} }

5
src/AddIns/BackendBindings/CppBinding/CppBinding/Project/ProjectConfigurationProjectItem.cs

@ -8,6 +8,7 @@
* Godzina: 18:52 * Godzina: 18:52
* *
*/ */
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.CppBinding.Project namespace ICSharpCode.CppBinding.Project
@ -26,11 +27,11 @@ namespace ICSharpCode.CppBinding.Project
/// Returns an empty string as a filename. /// Returns an empty string as a filename.
/// Project configuration is specific to the whole project, not a specific item. /// Project configuration is specific to the whole project, not a specific item.
/// </summary> /// </summary>
public override string FileName public override FileName FileName
{ {
get get
{ {
return ""; return null;
} }
} }
} }

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

@ -8,6 +8,7 @@ using System.ComponentModel;
using System.Diagnostics; using System.Diagnostics;
using System.IO; using System.IO;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
@ -77,13 +78,13 @@ namespace ICSharpCode.WixBinding
/// Gets the full path to the installer file that will be generated by /// Gets the full path to the installer file that will be generated by
/// the Wix compiler and linker. /// the Wix compiler and linker.
/// </summary> /// </summary>
public string GetInstallerFullPath() public FileName GetInstallerFullPath()
{ {
string outputPath = GetEvaluatedPropertyOrEmptyString("OutputPath"); string outputPath = GetEvaluatedPropertyOrEmptyString("OutputPath");
string outputType = GetEvaluatedPropertyOrEmptyString("OutputType"); string outputType = GetEvaluatedPropertyOrEmptyString("OutputType");
string outputName = GetEvaluatedPropertyOrEmptyString("OutputName"); string outputName = GetEvaluatedPropertyOrEmptyString("OutputName");
string fileName = String.Concat(outputName, GetInstallerExtension(outputType)); string fileName = String.Concat(outputName, GetInstallerExtension(outputType));
return Path.Combine(Directory, outputPath, fileName); return Directory.CombineDirectory(outputPath).CombineFile(fileName);
} }
string GetEvaluatedPropertyOrEmptyString(string propertyName) string GetEvaluatedPropertyOrEmptyString(string propertyName)
@ -91,7 +92,7 @@ namespace ICSharpCode.WixBinding
return GetEvaluatedProperty(propertyName) ?? String.Empty; return GetEvaluatedProperty(propertyName) ?? String.Empty;
} }
public override string OutputAssemblyFullPath { public override FileName OutputAssemblyFullPath {
get { return GetInstallerFullPath(); } get { return GetInstallerFullPath(); }
} }
@ -108,7 +109,7 @@ namespace ICSharpCode.WixBinding
public void AddWixLibrary(string fileName) public void AddWixLibrary(string fileName)
{ {
WixLibraryProjectItem projectItem = new WixLibraryProjectItem(this); WixLibraryProjectItem projectItem = new WixLibraryProjectItem(this);
projectItem.FileName = fileName; projectItem.FileName = FileName.Create(fileName);
ProjectService.AddProjectItem(this, projectItem); ProjectService.AddProjectItem(this, projectItem);
} }
@ -122,7 +123,7 @@ namespace ICSharpCode.WixBinding
public void AddWixExtension(string fileName) public void AddWixExtension(string fileName)
{ {
WixExtensionProjectItem projectItem = new WixExtensionProjectItem(this); WixExtensionProjectItem projectItem = new WixExtensionProjectItem(this);
projectItem.FileName = fileName; projectItem.FileName = FileName.Create(fileName);
ProjectService.AddProjectItem(this, projectItem); ProjectService.AddProjectItem(this, projectItem);
} }

4
src/AddIns/BackendBindings/WixBinding/Test/Project/WixInstallerPathTests.cs

@ -27,7 +27,7 @@ namespace WixBinding.Tests.Project
{ {
WixProject project = WixBindingTestsHelper.CreateEmptyWixProject(); WixProject project = WixBindingTestsHelper.CreateEmptyWixProject();
Assert.AreEqual(@"C:\Projects\Test\bin\Debug\Test.msi", project.GetInstallerFullPath()); Assert.AreEqual(@"C:\Projects\Test\bin\Debug\Test.msi", project.GetInstallerFullPath().ToString());
} }
[Test] [Test]
@ -36,7 +36,7 @@ namespace WixBinding.Tests.Project
WixProject project = WixBindingTestsHelper.CreateEmptyWixProject(); WixProject project = WixBindingTestsHelper.CreateEmptyWixProject();
project.SetProperty("OutputName", "ChangedName"); project.SetProperty("OutputName", "ChangedName");
Assert.AreEqual(@"C:\Projects\Test\bin\Debug\ChangedName.msi", project.GetInstallerFullPath()); Assert.AreEqual(@"C:\Projects\Test\bin\Debug\ChangedName.msi", project.GetInstallerFullPath().ToString());
} }
} }
} }

2
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlSymbolSearch.cs

@ -38,7 +38,7 @@ namespace ICSharpCode.XamlBinding
this.entity = entity; this.entity = entity;
compilation = SD.ParserService.GetCompilation(project); compilation = SD.ParserService.GetCompilation(project);
interestingFileNames = new List<FileName>(); interestingFileNames = new List<FileName>();
foreach (var item in project.ParentSolution.Projects.SelectMany(p => p.Items).OfType<FileProjectItem>().Where(i => i.FileName.EndsWith(".xaml", StringComparison.OrdinalIgnoreCase))) foreach (var item in project.ParentSolution.Projects.SelectMany(p => p.Items).OfType<FileProjectItem>().Where(i => i.FileName.HasExtension(".xaml")))
interestingFileNames.Add(new FileName(item.FileName)); interestingFileNames.Add(new FileName(item.FileName));
workAmount = interestingFileNames.Count; workAmount = interestingFileNames.Count;
workAmountInverse = 1.0 / workAmount; workAmountInverse = 1.0 / workAmount;

4
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs

@ -175,7 +175,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
internal ProjectItem AddFileProjectItemWithDependentUsingFullPath(string path, string dependentUpon) internal ProjectItem AddFileProjectItemWithDependentUsingFullPath(string path, string dependentUpon)
{ {
FileProjectItem fileProjectItem = CreateFileProjectItemUsingFullPath(path); FileProjectItem fileProjectItem = CreateFileProjectItemUsingFullPath(path);
fileProjectItem.FileName = path; fileProjectItem.FileName = ICSharpCode.Core.FileName.Create(path);
fileProjectItem.DependentUpon = dependentUpon; fileProjectItem.DependentUpon = dependentUpon;
AddProjectItemToMSBuildProject(fileProjectItem); AddProjectItemToMSBuildProject(fileProjectItem);
return new ProjectItem(this, fileProjectItem); return new ProjectItem(this, fileProjectItem);
@ -277,7 +277,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
FileProjectItem CreateMSBuildProjectItemForDirectory(string directory) FileProjectItem CreateMSBuildProjectItemForDirectory(string directory)
{ {
return new FileProjectItem(MSBuildProject, ItemType.Folder) { return new FileProjectItem(MSBuildProject, ItemType.Folder) {
FileName = directory FileName = ICSharpCode.Core.FileName.Create(directory)
}; };
} }

2
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs

@ -94,7 +94,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
} else if (name == CustomToolPropertyName) { } else if (name == CustomToolPropertyName) {
return projectItem.CustomTool; return projectItem.CustomTool;
} else if (name == FullPathPropertyName) { } else if (name == FullPathPropertyName) {
return projectItem.FileName; return projectItem.FileName.ToString();
} }
return String.Empty; return String.Empty;
} }

2
src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs

@ -226,7 +226,7 @@ namespace ICSharpCode.PackageManagement
{ {
ItemType itemType = project.GetDefaultItemType(path); ItemType itemType = project.GetDefaultItemType(path);
var fileItem = new FileProjectItem(project, itemType); var fileItem = new FileProjectItem(project, itemType);
fileItem.FileName = path; fileItem.FileName = FileName.Create(path);
fileItem.CustomTool = projectService.GetDefaultCustomToolForFileName(fileItem); fileItem.CustomTool = projectService.GetDefaultCustomToolForFileName(fileItem);
return fileItem; return fileItem;
} }

2
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemPropertyTests.cs

@ -139,7 +139,7 @@ namespace PackageManagement.Tests.EnvDTE
public void Value_GetFullPath_ReturnsProjectItemFullFileName() public void Value_GetFullPath_ReturnsProjectItemFullFileName()
{ {
CreateProjectItemProperties(); CreateProjectItemProperties();
msbuildFileProjectItem.FileName = @"d:\projects\test.cs"; msbuildFileProjectItem.FileName = ICSharpCode.Core.FileName.Create(@"d:\projects\test.cs");
string path = properties.Item("FullPath").Value as string; string path = properties.Item("FullPath").Value as string;

12
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs

@ -461,7 +461,7 @@ namespace PackageManagement.Tests.EnvDTE
var fileItem = msbuildProject.Items.First() as FileProjectItem; var fileItem = msbuildProject.Items.First() as FileProjectItem;
Assert.AreEqual(@"tools\test.cs", fileItem.Include); Assert.AreEqual(@"tools\test.cs", fileItem.Include);
Assert.AreEqual(@"d:\projects\myproject\tools\test.cs", fileItem.FileName); Assert.AreEqual(@"d:\projects\myproject\tools\test.cs", fileItem.FileName.ToString());
Assert.AreEqual(ItemType.Page, fileItem.ItemType); Assert.AreEqual(ItemType.Page, fileItem.ItemType);
Assert.AreEqual(msbuildProject, fileItem.Project); Assert.AreEqual(msbuildProject, fileItem.Project);
} }
@ -587,7 +587,7 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(@"tools\a.txt", item.Include); Assert.AreEqual(@"tools\a.txt", item.Include);
Assert.AreEqual(ItemType.None, item.ItemType); Assert.AreEqual(ItemType.None, item.ItemType);
Assert.AreEqual(@"d:\projects\myproject\tools\a.txt", item.FileName); Assert.AreEqual(@"d:\projects\myproject\tools\a.txt", item.FileName.ToString());
Assert.AreEqual(1, msbuildProject.Items.Count); Assert.AreEqual(1, msbuildProject.Items.Count);
} }
@ -638,7 +638,7 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(@"tools\packages", item.Include); Assert.AreEqual(@"tools\packages", item.Include);
Assert.AreEqual(ItemType.Folder, item.ItemType); Assert.AreEqual(ItemType.Folder, item.ItemType);
Assert.AreEqual(@"d:\projects\myproject\tools\packages", item.FileName); Assert.AreEqual(@"d:\projects\myproject\tools\packages", item.FileName.ToString());
Assert.AreEqual(1, msbuildProject.Items.Count); Assert.AreEqual(1, msbuildProject.Items.Count);
} }
@ -658,7 +658,7 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(@"tools\packages\a.txt", item.Include); Assert.AreEqual(@"tools\packages\a.txt", item.Include);
Assert.AreEqual(ItemType.None, item.ItemType); Assert.AreEqual(ItemType.None, item.ItemType);
Assert.AreEqual(@"d:\projects\myproject\tools\packages\a.txt", item.FileName); Assert.AreEqual(@"d:\projects\myproject\tools\packages\a.txt", item.FileName.ToString());
Assert.AreEqual(1, msbuildProject.Items.Count); Assert.AreEqual(1, msbuildProject.Items.Count);
} }
@ -809,7 +809,7 @@ namespace PackageManagement.Tests.EnvDTE
string linkName = fileItem.GetEvaluatedMetadata("Link"); string linkName = fileItem.GetEvaluatedMetadata("Link");
Assert.AreEqual(@"..\anotherproject\test.cs", fileItem.Include); Assert.AreEqual(@"..\anotherproject\test.cs", fileItem.Include);
Assert.AreEqual(fileName, fileItem.FileName); Assert.AreEqual(fileName, fileItem.FileName.ToString());
Assert.AreEqual(ItemType.Page, fileItem.ItemType); Assert.AreEqual(ItemType.Page, fileItem.ItemType);
Assert.IsTrue(fileItem.IsLink); Assert.IsTrue(fileItem.IsLink);
Assert.AreEqual("test.cs", linkName); Assert.AreEqual("test.cs", linkName);
@ -853,7 +853,7 @@ namespace PackageManagement.Tests.EnvDTE
FileProjectItem fileItem = msbuildProject.FindFile(new FileName(fileName)); FileProjectItem fileItem = msbuildProject.FindFile(new FileName(fileName));
Assert.AreEqual("MainForm.Designer.cs", fileItem.Include); Assert.AreEqual("MainForm.Designer.cs", fileItem.Include);
Assert.AreEqual(fileName, fileItem.FileName); Assert.AreEqual(fileName, fileItem.FileName.ToString());
Assert.AreEqual(ItemType.Page, fileItem.ItemType); Assert.AreEqual(ItemType.Page, fileItem.ItemType);
Assert.AreEqual(msbuildProject, fileItem.Project); Assert.AreEqual(msbuildProject, fileItem.Project);
Assert.AreEqual("MainForm.cs", fileItem.DependentUpon); Assert.AreEqual("MainForm.cs", fileItem.DependentUpon);

2
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/Reference3Tests.cs

@ -124,7 +124,7 @@ namespace PackageManagement.Tests.EnvDTE
public void Path_SystemXmlReferenceInProjectReferences_ReturnsFullPathToSystemXml() public void Path_SystemXmlReferenceInProjectReferences_ReturnsFullPathToSystemXml()
{ {
CreateReference("System.Xml"); CreateReference("System.Xml");
referenceProjectItem.FileName = @"c:\Program Files\Microsoft\Reference Assemblies\v4\System.Xml.dll"; referenceProjectItem.FileName = FileName.Create(@"c:\Program Files\Microsoft\Reference Assemblies\v4\System.Xml.dll");
string path = reference.Path; string path = reference.Path;

2
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs

@ -86,7 +86,7 @@ namespace PackageManagement.Tests.Helpers
public static void AddFile(MSBuildBasedProject project, string fileName) public static void AddFile(MSBuildBasedProject project, string fileName)
{ {
var fileProjectItem = new FileProjectItem(project, ItemType.Compile); var fileProjectItem = new FileProjectItem(project, ItemType.Compile);
fileProjectItem.FileName = fileName; fileProjectItem.FileName = FileName.Create(fileName);
ProjectService.AddProjectItem(project, fileProjectItem); ProjectService.AddProjectItem(project, fileProjectItem);
} }

8
src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs

@ -476,7 +476,7 @@ namespace PackageManagement.Tests
FileProjectItem fileItem = ProjectHelper.GetFile(project, fileName); FileProjectItem fileItem = ProjectHelper.GetFile(project, fileName);
FileProjectItem expectedFileItem = new FileProjectItem(project, ItemType.Compile); FileProjectItem expectedFileItem = new FileProjectItem(project, ItemType.Compile);
expectedFileItem.FileName = fileName; expectedFileItem.FileName = FileName.Create(fileName);
FileProjectItemAssert.AreEqual(expectedFileItem, fileItem); FileProjectItemAssert.AreEqual(expectedFileItem, fileItem);
} }
@ -493,7 +493,7 @@ namespace PackageManagement.Tests
FileProjectItem fileItem = ProjectHelper.GetFile(project, fileName); FileProjectItem fileItem = ProjectHelper.GetFile(project, fileName);
FileProjectItem expectedFileItem = new FileProjectItem(project, ItemType.EmbeddedResource); FileProjectItem expectedFileItem = new FileProjectItem(project, ItemType.EmbeddedResource);
expectedFileItem.FileName = fileName; expectedFileItem.FileName = FileName.Create(fileName);
FileProjectItemAssert.AreEqual(expectedFileItem, fileItem); FileProjectItemAssert.AreEqual(expectedFileItem, fileItem);
} }
@ -511,7 +511,7 @@ namespace PackageManagement.Tests
FileProjectItem fileItem = ProjectHelper.GetFile(project, fileName); FileProjectItem fileItem = ProjectHelper.GetFile(project, fileName);
FileProjectItem expectedFileItem = new FileProjectItem(project, ItemType.Compile); FileProjectItem expectedFileItem = new FileProjectItem(project, ItemType.Compile);
expectedFileItem.FileName = fileName; expectedFileItem.FileName = FileName.Create(fileName);
FileProjectItemAssert.AreEqual(expectedFileItem, fileItem); FileProjectItemAssert.AreEqual(expectedFileItem, fileItem);
} }
@ -529,7 +529,7 @@ namespace PackageManagement.Tests
FileProjectItem fileItem = ProjectHelper.GetFile(project, fileName); FileProjectItem fileItem = ProjectHelper.GetFile(project, fileName);
FileProjectItem expectedFileItem = new FileProjectItem(project, ItemType.Compile); FileProjectItem expectedFileItem = new FileProjectItem(project, ItemType.Compile);
expectedFileItem.FileName = fileName; expectedFileItem.FileName = FileName.Create(fileName);
FileProjectItemAssert.AreEqual(expectedFileItem, fileItem); FileProjectItemAssert.AreEqual(expectedFileItem, fileItem);
} }

7
src/AddIns/Misc/TextTemplating/Test/Helpers/TestableFileProjectItem.cs

@ -2,13 +2,14 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
namespace TextTemplating.Tests.Helpers namespace TextTemplating.Tests.Helpers
{ {
public class TestableFileProjectItem : FileProjectItem public class TestableFileProjectItem : FileProjectItem
{ {
string fileName; FileName fileName;
public TestableProject TestableProject; public TestableProject TestableProject;
@ -21,10 +22,10 @@ namespace TextTemplating.Tests.Helpers
: base(project, ItemType.None) : base(project, ItemType.None)
{ {
this.TestableProject = project; this.TestableProject = project;
this.fileName = fileName; this.fileName = FileName.Create(fileName);
} }
public override string FileName { public override FileName FileName {
get { return fileName; } get { return fileName; }
set { fileName = value; } set { fileName = value; }
} }

2
src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingAssemblyPathResolverTests.cs

@ -108,7 +108,7 @@ namespace TextTemplating.Tests
CreateResolver(); CreateResolver();
ReferenceProjectItem reference = AddReferenceToProject("Test"); ReferenceProjectItem reference = AddReferenceToProject("Test");
string expectedFileName = @"d:\projects\MyProject\lib\Test.dll"; string expectedFileName = @"d:\projects\MyProject\lib\Test.dll";
reference.FileName = expectedFileName; reference.FileName = FileName.Create(expectedFileName);
string result = resolver.ResolvePath("Test"); string result = resolver.ResolvePath("Test");

11
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/ProjectWithServiceReferences.cs

@ -7,6 +7,7 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference
@ -70,7 +71,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference
void AddServiceReferenceFileToProject(ServiceReferenceFileName fileName) void AddServiceReferenceFileToProject(ServiceReferenceFileName fileName)
{ {
var projectItem = new FileProjectItem(project, ItemType.Compile); var projectItem = new FileProjectItem(project, ItemType.Compile);
projectItem.FileName = fileName.Path; projectItem.FileName = FileName.Create(fileName.Path);
projectItem.DependentUpon = "Reference.svcmap"; projectItem.DependentUpon = "Reference.svcmap";
AddProjectItemToProject(projectItem); AddProjectItemToProject(projectItem);
} }
@ -169,16 +170,14 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference
AddProjectItemToProject(item); AddProjectItemToProject(item);
} }
string GetDefaultAppConfigFileName() FileName GetDefaultAppConfigFileName()
{ {
return Path.Combine(project.Directory, "app.config"); return project.Directory.CombineFile("app.config");
} }
public IEnumerable<ReferenceProjectItem> GetReferences() public IEnumerable<ReferenceProjectItem> GetReferences()
{ {
foreach (ReferenceProjectItem item in project.GetItemsOfType(ItemType.Reference)) { return project.GetItemsOfType(ItemType.Reference).OfType<ReferenceProjectItem>();
yield return item;
}
} }
} }
} }

3
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/ServiceReferenceMapFileProjectItem.cs

@ -3,6 +3,7 @@
using System; using System;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference
{ {
@ -13,7 +14,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference
string fileName) string fileName)
: base(project, ItemType.None) : base(project, ItemType.None)
{ {
this.FileName = fileName; this.FileName = FileName.Create(fileName);
AddMetadata(); AddMetadata();
} }

2
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs

@ -81,7 +81,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
LoggingService.Debug("Found file " + virtualFullName); LoggingService.Debug("Found file " + virtualFullName);
FileProjectItem newItem = new FileProjectItem(node.Project, fileItem.ItemType); FileProjectItem newItem = new FileProjectItem(node.Project, fileItem.ItemType);
if (FileUtility.IsBaseDirectory(directoryName, fileItem.FileName)) { if (FileUtility.IsBaseDirectory(directoryName, fileItem.FileName)) {
newItem.FileName = FileUtility.RenameBaseDirectory(fileItem.FileName, directoryName, copiedFileName); newItem.FileName = FileName.Create(FileUtility.RenameBaseDirectory(fileItem.FileName, directoryName, copiedFileName));
} else { } else {
newItem.FileName = fileItem.FileName; newItem.FileName = fileItem.FileName;
} }

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

@ -357,7 +357,7 @@ namespace ICSharpCode.SharpDevelop.Project
/// Returns null when the project does not output any assembly. /// Returns null when the project does not output any assembly.
/// </summary> /// </summary>
[Browsable(false)] [Browsable(false)]
public virtual string OutputAssemblyFullPath { public virtual FileName OutputAssemblyFullPath {
get { get {
return null; return null;
} }
@ -528,7 +528,7 @@ namespace ICSharpCode.SharpDevelop.Project
} }
} }
if (!mscorlib) { if (!mscorlib) {
referenceItems.Add(new ReferenceProjectItem(this, "mscorlib") { FileName = typeof(object).Module.FullyQualifiedName }); referenceItems.Add(new ReferenceProjectItem(this, "mscorlib") { FileName = FileName.Create(typeof(object).Module.FullyQualifiedName) });
} }
return referenceItems; return referenceItems;
} }

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

@ -111,7 +111,7 @@ namespace ICSharpCode.SharpDevelop.Project
/// Gets the path where temporary files are written to during compilation. /// Gets the path where temporary files are written to during compilation.
/// </summary> /// </summary>
[Browsable(false)] [Browsable(false)]
public string IntermediateOutputFullPath { public DirectoryName IntermediateOutputFullPath {
get { get {
string outputPath = GetEvaluatedProperty("IntermediateOutputPath"); string outputPath = GetEvaluatedProperty("IntermediateOutputPath");
if (string.IsNullOrEmpty(outputPath)) { if (string.IsNullOrEmpty(outputPath)) {
@ -121,7 +121,7 @@ namespace ICSharpCode.SharpDevelop.Project
} }
outputPath = Path.Combine(outputPath, this.ActiveConfiguration.Configuration); outputPath = Path.Combine(outputPath, this.ActiveConfiguration.Configuration);
} }
return Path.Combine(Directory, outputPath); return Directory.CombineDirectory(outputPath);
} }
} }
@ -170,22 +170,22 @@ namespace ICSharpCode.SharpDevelop.Project
/// <summary> /// <summary>
/// The full path of the assembly generated by the project. /// The full path of the assembly generated by the project.
/// </summary> /// </summary>
public override string OutputAssemblyFullPath { public override FileName OutputAssemblyFullPath {
get { get {
string outputPath = GetEvaluatedProperty("OutputPath") ?? ""; string outputPath = GetEvaluatedProperty("OutputPath") ?? "";
return FileUtility.NormalizePath(Path.Combine(Path.Combine(Directory, outputPath), AssemblyName + GetExtension(OutputType))); return Directory.CombineDirectory(outputPath).CombineFile(AssemblyName + GetExtension(OutputType));
} }
} }
/// <summary> /// <summary>
/// The full path of the folder where the project's primary output files go. /// The full path of the folder where the project's primary output files go.
/// </summary> /// </summary>
public string OutputFullPath { public DirectoryName OutputFullPath {
get { get {
string outputPath = GetEvaluatedProperty("OutputPath"); string outputPath = GetEvaluatedProperty("OutputPath");
// FileUtility.NormalizePath() cleans up any back references. // CombineDirectory() cleans up any back references.
// e.g. C:\windows\system32\..\system becomes C:\windows\system // e.g. C:\windows\system32\..\system becomes C:\windows\system
return FileUtility.NormalizePath(Path.Combine(Directory, outputPath)); return Directory.CombineDirectory(outputPath);
} }
} }

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

@ -173,7 +173,7 @@ namespace ICSharpCode.SharpDevelop.Project
FileProjectItem outputItem = project.FindFile(FileName.Create(outputFileName)); FileProjectItem outputItem = project.FindFile(FileName.Create(outputFileName));
if (outputItem == null) { if (outputItem == null) {
outputItem = new FileProjectItem(project, ItemType.Compile); outputItem = new FileProjectItem(project, ItemType.Compile);
outputItem.FileName = outputFileName; outputItem.FileName = FileName.Create(outputFileName);
outputItem.DependentUpon = Path.GetFileName(baseItem.FileName); outputItem.DependentUpon = Path.GetFileName(baseItem.FileName);
outputItem.SetEvaluatedMetadata("AutoGen", "True"); outputItem.SetEvaluatedMetadata("AutoGen", "True");
ProjectService.AddProjectItem(project, outputItem); ProjectService.AddProjectItem(project, outputItem);

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

@ -124,7 +124,7 @@ namespace ICSharpCode.SharpDevelop.Project
/// Gets the full path of the output assembly. /// Gets the full path of the output assembly.
/// Returns null when the project does not output any assembly. /// Returns null when the project does not output any assembly.
/// </summary> /// </summary>
string OutputAssemblyFullPath { FileName OutputAssemblyFullPath {
get; get;
} }

17
src/Main/Base/Project/Src/Project/Items/ComReferenceProjectItem.cs

@ -4,6 +4,7 @@
using System; using System;
using System.ComponentModel; using System.ComponentModel;
using System.IO; using System.IO;
using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Project namespace ICSharpCode.SharpDevelop.Project
{ {
@ -93,12 +94,12 @@ namespace ICSharpCode.SharpDevelop.Project
/// <summary> /// <summary>
/// Gets the file name of the COM interop assembly. /// Gets the file name of the COM interop assembly.
/// </summary> /// </summary>
public override string FileName { public override FileName FileName {
get { get {
try { try {
if (Project != null && Project.OutputAssemblyFullPath != null) { if (Project != null && Project.OutputAssemblyFullPath != null) {
string outputFolder = Path.GetDirectoryName(Project.OutputAssemblyFullPath); DirectoryName outputFolder = Project.OutputAssemblyFullPath.GetParentDirectory();
string interopFileName = Path.Combine(outputFolder, String.Concat("Interop.", Include, ".dll")); FileName interopFileName = outputFolder.CombineFile("Interop." + Include + ".dll");
if (File.Exists(interopFileName)) { if (File.Exists(interopFileName)) {
return interopFileName; return interopFileName;
} }
@ -111,7 +112,7 @@ namespace ICSharpCode.SharpDevelop.Project
// look in obj\Debug: // look in obj\Debug:
if (Project is CompilableProject) { if (Project is CompilableProject) {
outputFolder = (Project as CompilableProject).IntermediateOutputFullPath; outputFolder = (Project as CompilableProject).IntermediateOutputFullPath;
interopFileName = Path.Combine(outputFolder, String.Concat("Interop.", Include, ".dll")); interopFileName = outputFolder.CombineFile("Interop." + Include + ".dll");
if (File.Exists(interopFileName)) { if (File.Exists(interopFileName)) {
return interopFileName; return interopFileName;
} }
@ -124,16 +125,16 @@ namespace ICSharpCode.SharpDevelop.Project
} }
} }
catch (Exception) { } catch (Exception) { }
return Include; return FileName.Create(Include);
} }
set { set {
} }
} }
static string GetActiveXInteropFileName(string outputFolder, string include) static FileName GetActiveXInteropFileName(DirectoryName outputFolder, string include)
{ {
if (include.ToLowerInvariant().StartsWith("ax")) { if (include.StartsWith("ax", StringComparison.OrdinalIgnoreCase)) {
return Path.Combine(outputFolder, String.Concat("AxInterop.", include.Substring(2), ".dll")); return outputFolder.CombineFile(String.Concat("AxInterop.", include.Substring(2), ".dll"));
} }
return null; return null;
} }

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

@ -62,7 +62,7 @@ namespace ICSharpCode.SharpDevelop.Project
Description = "${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.FileName.Description}")] Description = "${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.FileName.Description}")]
[Browsable(true)] [Browsable(true)]
[ReadOnly(true)] [ReadOnly(true)]
public override string FileName { public override FileName FileName {
get { return base.FileName; } get { return base.FileName; }
set { base.FileName = value; } set { base.FileName = value; }
} }

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

@ -23,7 +23,7 @@ namespace ICSharpCode.SharpDevelop.Project
public abstract class ProjectItem : LocalizedObject, IDisposable, ICloneable public abstract class ProjectItem : LocalizedObject, IDisposable, ICloneable
{ {
IProject project; IProject project;
volatile string fileNameCache; volatile FileName fileNameCache;
bool treatIncludeAsLiteral; bool treatIncludeAsLiteral;
// either use: (bound mode) // either use: (bound mode)
@ -414,15 +414,15 @@ namespace ICSharpCode.SharpDevelop.Project
/// and the setter throws a NotSupportedException. /// and the setter throws a NotSupportedException.
/// </summary> /// </summary>
[Browsable(false)] [Browsable(false)]
public virtual string FileName { public virtual FileName FileName {
get { get {
if (project == null) { if (project == null) {
return this.Include; return FileName.Create(this.Include);
} }
string fileName = this.fileNameCache; FileName fileName = this.fileNameCache;
if (fileName == null) { if (fileName == null) {
lock (SyncRoot) { lock (SyncRoot) {
fileName = FileUtility.NormalizePath(Path.Combine(project.Directory, this.Include)); fileName = project.Directory.CombineFile(this.Include);
fileNameCache = fileName; fileNameCache = fileName;
} }
} }

22
src/Main/Base/Project/Src/Project/Items/ReferenceProjectItem.cs

@ -169,36 +169,38 @@ namespace ICSharpCode.SharpDevelop.Project
set { redist = value; } set { redist = value; }
} }
string fullPath; FileName fullPath;
[ReadOnly(true)] [ReadOnly(true)]
[Browsable(true)] [Browsable(true)]
public override string FileName { public override FileName FileName {
get { get {
if (fullPath != null) { if (fullPath != null) {
return fullPath; return fullPath;
} }
if (Project != null) { if (Project != null) {
string projectDir = Project.Directory; DirectoryName projectDir = Project.Directory;
string hintPath = HintPath; string hintPath = HintPath;
try { try {
if (hintPath != null && hintPath.Length > 0) { if (hintPath != null && hintPath.Length > 0) {
return FileUtility.NormalizePath(Path.Combine(projectDir, hintPath)); return projectDir.CombineFile(hintPath);
} }
string name = FileUtility.NormalizePath(Path.Combine(projectDir, Include)); FileName name = projectDir.CombineFile(Include);
if (File.Exists(name)) { if (File.Exists(name)) {
return name; return name;
} }
if (File.Exists(name + ".dll")) { name = projectDir.CombineFile(Include + ".dll");
return name + ".dll"; if (File.Exists(name)) {
return name;
} }
if (File.Exists(name + ".exe")) { name = projectDir.CombineFile(Include + ".exe");
return name + ".exe"; if (File.Exists(name)) {
return name;
} }
} catch {} // ignore errors when path is invalid } catch {} // ignore errors when path is invalid
} }
return Include; return FileName.Create(Include);
} }
set { set {
fullPath = value; fullPath = value;

4
src/Main/Base/Project/Src/Project/WebReferenceUrl.cs

@ -100,10 +100,10 @@ namespace ICSharpCode.SharpDevelop.Project
} }
} }
public override string FileName { public override FileName FileName {
get { get {
if (Project != null && RelPath != null) { if (Project != null && RelPath != null) {
return Path.Combine(Project.Directory, RelPath.Trim('\\')); return FileName.Create(Path.Combine(Project.Directory, RelPath.Trim('\\')));
} }
return null; return null;
} }

3
src/Main/Base/Test/ServiceReferences/ServiceReferenceGeneratorTests.cs

@ -5,6 +5,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.ServiceModel.Description; using System.ServiceModel.Description;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference; using ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
using NUnit.Framework; using NUnit.Framework;
@ -130,7 +131,7 @@ namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences
IProject dummyProject = MockRepository.GenerateStub<IProject>(); IProject dummyProject = MockRepository.GenerateStub<IProject>();
dummyProject.Stub(p => p.SyncRoot).Return(new object()); dummyProject.Stub(p => p.SyncRoot).Return(new object());
var projectItem = new ReferenceProjectItem(dummyProject, reference); var projectItem = new ReferenceProjectItem(dummyProject, reference);
projectItem.FileName = fileName; projectItem.FileName = FileName.Create(fileName);
projectReferences.Add(projectItem); projectReferences.Add(projectItem);
return projectItem; return projectItem;
} }

20
src/Main/Core/Project/Src/Services/FileUtility/DirectoryName.cs

@ -64,6 +64,26 @@ namespace ICSharpCode.Core
return FileName.Create(Path.Combine(normalizedPath, relativePath)); return FileName.Create(Path.Combine(normalizedPath, relativePath));
} }
/// <summary>
/// Combines this directory name with a relative path.
/// </summary>
public FileName CombineFile(string relativeFileName)
{
if (relativeFileName == null)
return null;
return FileName.Create(Path.Combine(normalizedPath, relativeFileName));
}
/// <summary>
/// Combines this directory name with a relative path.
/// </summary>
public DirectoryName CombineDirectory(string relativeDirectoryName)
{
if (relativeDirectoryName == null)
return null;
return DirectoryName.Create(Path.Combine(normalizedPath, relativeDirectoryName));
}
/// <summary> /// <summary>
/// Converts the specified absolute path into a relative path (relative to <c>this</c>). /// Converts the specified absolute path into a relative path (relative to <c>this</c>).
/// </summary> /// </summary>

4
src/Main/SharpDevelop/Project/Build/MSBuildEngine/MSBuildEngine.cs

@ -172,7 +172,7 @@ namespace ICSharpCode.SharpDevelop.Project
//LoggingService.Debug("Got information about " + assembly.OriginalInclude + "; fullpath=" + assembly.FullPath); //LoggingService.Debug("Got information about " + assembly.OriginalInclude + "; fullpath=" + assembly.FullPath);
foreach (var referenceItem in assembly.ReferenceItems) { foreach (var referenceItem in assembly.ReferenceItems) {
referenceItem.AssemblyName = assembly.AssemblyName; referenceItem.AssemblyName = assembly.AssemblyName;
referenceItem.FileName = assembly.FullPath; referenceItem.FileName = FileName.Create(assembly.FullPath);
referenceItem.Redist = assembly.Redist; referenceItem.Redist = assembly.Redist;
referenceItem.DefaultCopyLocalValue = assembly.CopyLocal; referenceItem.DefaultCopyLocalValue = assembly.CopyLocal;
handledReferenceItems.Add(referenceItem); handledReferenceItems.Add(referenceItem);
@ -181,7 +181,7 @@ namespace ICSharpCode.SharpDevelop.Project
if (firstItem != null) { if (firstItem != null) {
resolvedAssemblies.Add(firstItem); resolvedAssemblies.Add(firstItem);
} else { } else {
resolvedAssemblies.Add(new ReferenceProjectItem(baseProject, assembly.OriginalInclude) { FileName = assembly.FullPath }); resolvedAssemblies.Add(new ReferenceProjectItem(baseProject, assembly.OriginalInclude) { FileName = FileName.Create(assembly.FullPath) });
} }
} }
// Add any assemblies that weren't resolved yet. This is important - for example, this adds back project references. // Add any assemblies that weren't resolved yet. This is important - for example, this adds back project references.

2
src/Main/SharpDevelop/Project/Solution.cs

@ -355,7 +355,7 @@ namespace ICSharpCode.SharpDevelop.Project
foreach (ProjectItem item in project.Items) { foreach (ProjectItem item in project.Items) {
if (FileUtility.IsBaseDirectory(oldName, item.FileName)) { if (FileUtility.IsBaseDirectory(oldName, item.FileName)) {
SD.GetRequiredService<IProjectServiceRaiseEvents>().RaiseProjectItemRemoved(new ProjectItemEventArgs(project, item)); SD.GetRequiredService<IProjectServiceRaiseEvents>().RaiseProjectItemRemoved(new ProjectItemEventArgs(project, item));
item.FileName = FileUtility.RenameBaseDirectory(item.FileName, oldName, newName); item.FileName = FileName.Create(FileUtility.RenameBaseDirectory(item.FileName, oldName, newName));
SD.GetRequiredService<IProjectServiceRaiseEvents>().RaiseProjectItemAdded(new ProjectItemEventArgs(project, item)); SD.GetRequiredService<IProjectServiceRaiseEvents>().RaiseProjectItemAdded(new ProjectItemEventArgs(project, item));
} }
} }

Loading…
Cancel
Save