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

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

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

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

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

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

@ -51,7 +51,7 @@ namespace ICSharpCode.CppBinding.Project @@ -51,7 +51,7 @@ namespace ICSharpCode.CppBinding.Project
// get { return LanguageProperties.; }
// }
public override string OutputAssemblyFullPath
public override FileName OutputAssemblyFullPath
{
/// <summary>
/// For vcxprojs the output assembly location is stored in OutDir property.
@ -61,19 +61,18 @@ namespace ICSharpCode.CppBinding.Project @@ -61,19 +61,18 @@ namespace ICSharpCode.CppBinding.Project
{
string outputPath = GetEvaluatedProperty("OutDir") ?? "";
if (!Path.IsPathRooted(outputPath))
return FileUtility.NormalizePath(Path.Combine(ParentSolution.Directory, outputPath,
return FileName.Create(Path.Combine(ParentSolution.Directory, outputPath,
AssemblyName + GetExtension(OutputType)));
else
{
// 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
// be equal to ProjectDir, so it has to be replaced with actual solution directory
string evaluatedSolutionDir = GetEvaluatedProperty("SolutionDir") ?? "";
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 @@ @@ -8,6 +8,7 @@
* Godzina: 18:52
*
*/
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.CppBinding.Project
@ -26,11 +27,11 @@ namespace ICSharpCode.CppBinding.Project @@ -26,11 +27,11 @@ namespace ICSharpCode.CppBinding.Project
/// Returns an empty string as a filename.
/// Project configuration is specific to the whole project, not a specific item.
/// </summary>
public override string FileName
public override FileName FileName
{
get
{
return "";
return null;
}
}
}

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

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

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

@ -27,7 +27,7 @@ namespace WixBinding.Tests.Project @@ -27,7 +27,7 @@ namespace WixBinding.Tests.Project
{
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]
@ -36,7 +36,7 @@ namespace WixBinding.Tests.Project @@ -36,7 +36,7 @@ namespace WixBinding.Tests.Project
WixProject project = WixBindingTestsHelper.CreateEmptyWixProject();
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 @@ -38,7 +38,7 @@ namespace ICSharpCode.XamlBinding
this.entity = entity;
compilation = SD.ParserService.GetCompilation(project);
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));
workAmount = interestingFileNames.Count;
workAmountInverse = 1.0 / workAmount;

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

@ -175,7 +175,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -175,7 +175,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
internal ProjectItem AddFileProjectItemWithDependentUsingFullPath(string path, string dependentUpon)
{
FileProjectItem fileProjectItem = CreateFileProjectItemUsingFullPath(path);
fileProjectItem.FileName = path;
fileProjectItem.FileName = ICSharpCode.Core.FileName.Create(path);
fileProjectItem.DependentUpon = dependentUpon;
AddProjectItemToMSBuildProject(fileProjectItem);
return new ProjectItem(this, fileProjectItem);
@ -277,7 +277,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -277,7 +277,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
FileProjectItem CreateMSBuildProjectItemForDirectory(string directory)
{
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 @@ -94,7 +94,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
} else if (name == CustomToolPropertyName) {
return projectItem.CustomTool;
} else if (name == FullPathPropertyName) {
return projectItem.FileName;
return projectItem.FileName.ToString();
}
return String.Empty;
}

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

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

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

@ -139,7 +139,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -139,7 +139,7 @@ namespace PackageManagement.Tests.EnvDTE
public void Value_GetFullPath_ReturnsProjectItemFullFileName()
{
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;

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

@ -461,7 +461,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -461,7 +461,7 @@ namespace PackageManagement.Tests.EnvDTE
var fileItem = msbuildProject.Items.First() as FileProjectItem;
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(msbuildProject, fileItem.Project);
}
@ -587,7 +587,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -587,7 +587,7 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(@"tools\a.txt", item.Include);
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);
}
@ -638,7 +638,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -638,7 +638,7 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(@"tools\packages", item.Include);
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);
}
@ -658,7 +658,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -658,7 +658,7 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(@"tools\packages\a.txt", item.Include);
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);
}
@ -809,7 +809,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -809,7 +809,7 @@ namespace PackageManagement.Tests.EnvDTE
string linkName = fileItem.GetEvaluatedMetadata("Link");
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.IsTrue(fileItem.IsLink);
Assert.AreEqual("test.cs", linkName);
@ -853,7 +853,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -853,7 +853,7 @@ namespace PackageManagement.Tests.EnvDTE
FileProjectItem fileItem = msbuildProject.FindFile(new FileName(fileName));
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(msbuildProject, fileItem.Project);
Assert.AreEqual("MainForm.cs", fileItem.DependentUpon);

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

@ -124,7 +124,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -124,7 +124,7 @@ namespace PackageManagement.Tests.EnvDTE
public void Path_SystemXmlReferenceInProjectReferences_ReturnsFullPathToSystemXml()
{
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;

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

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

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

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

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

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

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

@ -108,7 +108,7 @@ namespace TextTemplating.Tests @@ -108,7 +108,7 @@ namespace TextTemplating.Tests
CreateResolver();
ReferenceProjectItem reference = AddReferenceToProject("Test");
string expectedFileName = @"d:\projects\MyProject\lib\Test.dll";
reference.FileName = expectedFileName;
reference.FileName = FileName.Create(expectedFileName);
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; @@ -7,6 +7,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference
@ -70,7 +71,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference @@ -70,7 +71,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference
void AddServiceReferenceFileToProject(ServiceReferenceFileName fileName)
{
var projectItem = new FileProjectItem(project, ItemType.Compile);
projectItem.FileName = fileName.Path;
projectItem.FileName = FileName.Create(fileName.Path);
projectItem.DependentUpon = "Reference.svcmap";
AddProjectItemToProject(projectItem);
}
@ -169,16 +170,14 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference @@ -169,16 +170,14 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference
AddProjectItemToProject(item);
}
string GetDefaultAppConfigFileName()
FileName GetDefaultAppConfigFileName()
{
return Path.Combine(project.Directory, "app.config");
return project.Directory.CombineFile("app.config");
}
public IEnumerable<ReferenceProjectItem> GetReferences()
{
foreach (ReferenceProjectItem item in project.GetItemsOfType(ItemType.Reference)) {
yield return item;
}
return project.GetItemsOfType(ItemType.Reference).OfType<ReferenceProjectItem>();
}
}
}

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

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

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

@ -81,7 +81,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -81,7 +81,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
LoggingService.Debug("Found file " + virtualFullName);
FileProjectItem newItem = new FileProjectItem(node.Project, fileItem.ItemType);
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 {
newItem.FileName = fileItem.FileName;
}

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

@ -357,7 +357,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -357,7 +357,7 @@ namespace ICSharpCode.SharpDevelop.Project
/// Returns null when the project does not output any assembly.
/// </summary>
[Browsable(false)]
public virtual string OutputAssemblyFullPath {
public virtual FileName OutputAssemblyFullPath {
get {
return null;
}
@ -528,7 +528,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -528,7 +528,7 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
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;
}

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

@ -111,7 +111,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -111,7 +111,7 @@ namespace ICSharpCode.SharpDevelop.Project
/// Gets the path where temporary files are written to during compilation.
/// </summary>
[Browsable(false)]
public string IntermediateOutputFullPath {
public DirectoryName IntermediateOutputFullPath {
get {
string outputPath = GetEvaluatedProperty("IntermediateOutputPath");
if (string.IsNullOrEmpty(outputPath)) {
@ -121,7 +121,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -121,7 +121,7 @@ namespace ICSharpCode.SharpDevelop.Project
}
outputPath = Path.Combine(outputPath, this.ActiveConfiguration.Configuration);
}
return Path.Combine(Directory, outputPath);
return Directory.CombineDirectory(outputPath);
}
}
@ -170,22 +170,22 @@ namespace ICSharpCode.SharpDevelop.Project @@ -170,22 +170,22 @@ namespace ICSharpCode.SharpDevelop.Project
/// <summary>
/// The full path of the assembly generated by the project.
/// </summary>
public override string OutputAssemblyFullPath {
public override FileName OutputAssemblyFullPath {
get {
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>
/// The full path of the folder where the project's primary output files go.
/// </summary>
public string OutputFullPath {
public DirectoryName OutputFullPath {
get {
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
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 @@ -173,7 +173,7 @@ namespace ICSharpCode.SharpDevelop.Project
FileProjectItem outputItem = project.FindFile(FileName.Create(outputFileName));
if (outputItem == null) {
outputItem = new FileProjectItem(project, ItemType.Compile);
outputItem.FileName = outputFileName;
outputItem.FileName = FileName.Create(outputFileName);
outputItem.DependentUpon = Path.GetFileName(baseItem.FileName);
outputItem.SetEvaluatedMetadata("AutoGen", "True");
ProjectService.AddProjectItem(project, outputItem);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -64,6 +64,26 @@ namespace ICSharpCode.Core @@ -64,6 +64,26 @@ namespace ICSharpCode.Core
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>
/// Converts the specified absolute path into a relative path (relative to <c>this</c>).
/// </summary>

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

@ -172,7 +172,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -172,7 +172,7 @@ namespace ICSharpCode.SharpDevelop.Project
//LoggingService.Debug("Got information about " + assembly.OriginalInclude + "; fullpath=" + assembly.FullPath);
foreach (var referenceItem in assembly.ReferenceItems) {
referenceItem.AssemblyName = assembly.AssemblyName;
referenceItem.FileName = assembly.FullPath;
referenceItem.FileName = FileName.Create(assembly.FullPath);
referenceItem.Redist = assembly.Redist;
referenceItem.DefaultCopyLocalValue = assembly.CopyLocal;
handledReferenceItems.Add(referenceItem);
@ -181,7 +181,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -181,7 +181,7 @@ namespace ICSharpCode.SharpDevelop.Project
if (firstItem != null) {
resolvedAssemblies.Add(firstItem);
} 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.

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

@ -355,7 +355,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -355,7 +355,7 @@ namespace ICSharpCode.SharpDevelop.Project
foreach (ProjectItem item in project.Items) {
if (FileUtility.IsBaseDirectory(oldName, item.FileName)) {
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));
}
}

Loading…
Cancel
Save