Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan McGovern <alan@xamarin.com>2014-01-16 00:17:10 +0400
committerAlan McGovern <alan@xamarin.com>2014-01-16 00:33:16 +0400
commit6d7e812d709e182810d64c51a4e2d1af25d8adfa (patch)
tree3f9a9f0c0479cd3f2b8e7a834314887658846cab /mcs/class/Microsoft.Build.Utilities
parent89fcde4fd1b96aa575741a799e305a50977e139b (diff)
[Microsoft.Build.Engine] Fix the escaping/unescaping of FullPath metadata
It is incorrect to escape the FullPath metadata for a build item when we invoke GetEvaluatedMetadata. If we do this we end up completely breaking every file with a special character in it as things like this would always fail as we'd pass an escaped path to the filesystem: File.Exists (item.GetEvaluatedMetadata ("FullPath")) The iOS designer encountered this issue when we added retina images called "foo@2x.png" to our solution. With tests.
Diffstat (limited to 'mcs/class/Microsoft.Build.Utilities')
-rw-r--r--mcs/class/Microsoft.Build.Utilities/Mono.XBuild.Utilities/ReservedNameUtils.cs3
1 files changed, 2 insertions, 1 deletions
diff --git a/mcs/class/Microsoft.Build.Utilities/Mono.XBuild.Utilities/ReservedNameUtils.cs b/mcs/class/Microsoft.Build.Utilities/Mono.XBuild.Utilities/ReservedNameUtils.cs
index f2712566d59..6789cfbd928 100644
--- a/mcs/class/Microsoft.Build.Utilities/Mono.XBuild.Utilities/ReservedNameUtils.cs
+++ b/mcs/class/Microsoft.Build.Utilities/Mono.XBuild.Utilities/ReservedNameUtils.cs
@@ -77,7 +77,8 @@ namespace Mono.XBuild.Utilities {
switch (metadataName.ToLowerInvariant ()) {
case "fullpath":
- return Path.GetFullPath (itemSpec);
+ var unescapedItemSpec = MSBuildUtils.Unescape (itemSpec);
+ return MSBuildUtils.Escape (Path.GetFullPath (unescapedItemSpec));
case "rootdir":
if (Path.IsPathRooted (itemSpec))
return Path.GetPathRoot (itemSpec);