dotnet / dotnet/roslyn-tools

QuietRestore=true does not work with paths that contain a space

Open
#181 5 comments 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
109
Forks
85
Avg merge
2d 16h
Merged PRs (30d)
1

Description

Currently a repository using repo toolset that also specifies `/p:QuietRestore=true` cannot build if the enlistment path contains a space. Instead, the build fails with an error similar to the following:
```
MSBUILD : error MSB1008: Only one project can be specified. [C:\Users\tagoo\.nuget\packages\RoslynTools.RepoToolset\1.0.0-beta-62615-02\tools\Build.proj]
C:\Users\tagoo\.nuget\packages\RoslynTools.RepoToolset\1.0.0-beta-62615-02\tools\Build.proj(152,5): error MSB3073: The command ""C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MS
Build.exe" /nodeReuse:false "C:\Users\tagoo\.nuget\packages\RoslynTools.RepoToolset\1.0.0-beta-62615-02\tools\Tools.proj" /bl:"D:\project system\artifacts\Debug\log\RestoreRepoTools.binlog" /nologo /m /v:quiet
/t:Restore /p:Configuration=Debug /p:CIBuild=False /p:RepoRoot=D:\project system\ /p:VersionsPropsPath=D:\project system\build\Versions.props /p:DotNetPackageVersionPropsPath= /p:BaseIntermediateOutputPath=D:\p
roject system\artifacts\toolset\Common /p:ExcludeRestorePackageImports=true /p:UsingPipeBuildPublishing=false" exited with code 1.
```

This failure looks to be because repo-toolset is calling `Exec` and not properly quoting the command line arguments.

Quoting the arguments is fairly trivial. However, there is an additional issue where, even if quoted, the build still fails for any paths that end with `\`.

The recommended fix would be to trim the trailing `\` from any arguments and ensure that it is re-added, where required, in the props files themselves.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.