Browse Source

EnvDTE.ProjectItems AddFromFile now adds a file outside the project folder as a link.

pull/28/head
Matt Ward 13 years ago
parent
commit
fbb332cff0
  1. 11
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs
  2. 20
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs

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

@ -175,9 +175,18 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -175,9 +175,18 @@ namespace ICSharpCode.PackageManagement.EnvDTE
FileProjectItem CreateFileProjectItemUsingPathRelativeToProject(ItemType itemType, string include)
{
return new FileProjectItem(MSBuildProject, itemType) {
var fileItem = new FileProjectItem(MSBuildProject, itemType) {
Include = include
};
if (IsLink(include)) {
fileItem.SetEvaluatedMetadata("Link", Path.GetFileName(include));
}
return fileItem;
}
bool IsLink(string include)
{
return include.StartsWith("..");
}
FileProjectItem CreateFileProjectItemUsingFullPath(string path)

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

@ -795,5 +795,25 @@ namespace PackageManagement.Tests.EnvDTE @@ -795,5 +795,25 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(1, childItems.Count);
Assert.AreEqual("Scaffolders", scaffoldersFolderItem.Name);
}
[Test]
public void AddFromFile_FullFileNameIsOutsideProjectPath_FileIsAddedToProjectAsLink()
{
CreateProjectItems();
msbuildProject.FileName = @"d:\projects\myproject\myproject.csproj";
string fileName = @"d:\projects\anotherproject\test.cs";
msbuildProject.ItemTypeToReturnFromGetDefaultItemType = ItemType.Page;
projectItems.AddFromFile(fileName);
var fileItem = msbuildProject.Items[0] as FileProjectItem;
string linkName = fileItem.GetEvaluatedMetadata("Link");
Assert.AreEqual(@"..\anotherproject\test.cs", fileItem.Include);
Assert.AreEqual(fileName, fileItem.FileName);
Assert.AreEqual(ItemType.Page, fileItem.ItemType);
Assert.IsTrue(fileItem.IsLink);
Assert.AreEqual("test.cs", linkName);
}
}
}

Loading…
Cancel
Save