dotnet / dotnet/msbuild

Normalize project variables to on-disk case

Open
#3,665 3 comments 0 reactions 0 assignees View on GitHub
triaged
Dominant language
C#
Stars
5.5k
Forks
1.5k
Avg merge
1d 13h
Merged PRs (30d)
133

Description

### Steps to reproduce

Project file
```xml




```

Command line
```
s:\msbuild>dir TEst.proj
Volume in drive S is Source
Volume Serial Number is E68B-B87E

Directory of s:\msbuild

08/28/2018 01:45 PM 231 TEst.proj
1 File(s) 231 bytes
0 Dir(s) 146,367,778,816 bytes free

s:\msbuild>msbuild /nologo teST.PRoj
MSBuildProjectFullPath: s:\msbuild\teST.PRoj
MSBuildProjectName: teST

Build succeeded.
0 Warning(s)
0 Error(s)

Time Elapsed 00:00:00.47

s:\msbuild>msbuild /nologo TEst.proj
MSBuildProjectFullPath: s:\msbuild\TEst.proj
MSBuildProjectName: TEst

Build succeeded.
0 Warning(s)
0 Error(s)

Time Elapsed 00:00:00.48
```

### Expected behavior
`$(MSBuildProjectName)` and (more importantly) derived properties like `AssemblyName` in the default .NET Core SDK setup match the case on disk.

### Actual behavior
They match the case specified on the command line.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing the behavior with the project file shown in the issue and the three command-line casing variants. Trace where MSBuildProjectFullPath and MSBuildProjectName are initialized, then verify that they and derived properties such as AssemblyName preserve the on-disk case rather than the command-line case.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
build-system
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.