Summary
This code unconditionally calls FixFilePath:
|
public TaskItem( |
|
string itemSpec) |
|
{ |
|
ErrorUtilities.VerifyThrowArgumentNull(itemSpec); |
|
|
|
_itemSpec = FileUtilities.FixFilePath(itemSpec); |
|
} |
But while TaskItems usually represent files on disk, they don't necessarily do so, and if they don't and also contain backslashes this will corrupt them. It should be configurable.
Background and Motivation
See analysis by @JoeRobich in dotnet/roslyn#72014 (comment).
Proposed Feature
public TaskItem(
string itemSpec
+ bool convertBackslashesToSlashes = true)
{
ErrorUtilities.VerifyThrowArgumentNull(itemSpec);
+ if (convertBackslashesToSlashes)
+ {
_itemSpec = FileUtilities.FixFilePath(itemSpec);
+ }
}
Alternative Designs
No response
Summary
This code unconditionally calls
FixFilePath:msbuild/src/Utilities/TaskItem.cs
Lines 80 to 86 in 4c6a5a9
But while
TaskItems usually represent files on disk, they don't necessarily do so, and if they don't and also contain backslashes this will corrupt them. It should be configurable.Background and Motivation
See analysis by @JoeRobich in dotnet/roslyn#72014 (comment).
Proposed Feature
public TaskItem( string itemSpec + bool convertBackslashesToSlashes = true) { ErrorUtilities.VerifyThrowArgumentNull(itemSpec); + if (convertBackslashesToSlashes) + { _itemSpec = FileUtilities.FixFilePath(itemSpec); + } }Alternative Designs
No response