[Documentation Bug]: Please clarify the relationship of this project to C/C++
- Dominant language
- C#
- Stars
- 5.5k
- Forks
- 1.5k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 133
Description
### Issue Description
I have a C# project (csproj) with a C/C++ project as a dependency (vcxproj): the vcxproj builds a shared object file which the csproj makes use of via p/invoke. I set this up in Visual Studio 2022 on Windows, where I find that invoking "msbuild" builds the entire project including the C parts. I eventually will want the project to *also* work on Linux and Mac; however, when I check out my project and run `dotnet build`, I get an unhelpful error message about "/Microsoft.Cpp.Default.props" not being found. (I have been told a [recent PR](https://github.com/dotnet/msbuild/pull/9625) improves this to a helpful error message.) **None of this is the problem.**
The problem is that during the above experience, I find myself wondering the following reasonable questions:
* Can the "Open Source" version of MSBuild at https://github.com/dotnet/msbuild build vcxproj-es, or only csproj-es?
* If it can build vcxproj-es, can it do it on all platforms, or only on Windows?
And I do not find these questions answered either in the README or in any of the pages I checked linked from the README.
### Steps to Reproduce
"Open https://github.com/dotnet/msbuild in a web browser and read it"
### Expected Behavior
It's hard for me to give a specific suggestion because I don't know which of the following realities we live in:
1. The open source msbuild can build C#, but not C++.
2. The open source msbuild can build C# on all platforms, and C++ only on Windows.
3. msbuild is an abstract system that executes xml build scripts; to "build" a computer program, you usually must combine it with components implementing support for specific compilers. There happens to be an open source component for C#/.NET which ships packaged with msbuild as part of "dotnet"; whereas building projects in the common .vcxproj format requires proprietary components that ship with Visual Studio.
I think whichever of the above realities we live in should be explained in two places:
* In the README. Under "Building MSBuild in Unix (Mac & Linux)" it currently says "MSBuild can be run on Unix systems that support .NET Core." If it were me I would move this above the "Building" section into the introduction (because it's not specifically about building) and extend it to explain exactly what parts of "msbuild" do and don't work on Unix systems.
* On the "msbuild" documentation page on learn.microsoft.com, which has good SEO and also is linked from the github Readme, there is a section "MSBuild is open source":
https://learn.microsoft.com/en-us/visualstudio/msbuild/msbuild?view=vs-2022#msbuild-is-open-source
This says: "MSBuild is an open-source project that accepts user contributions, just like the rest of the .NET ecosystem." Having made that claim, it would be appropriate to say *which* parts of MSBuild are and aren't open source. (And if we're in "reality 3" and the non-open-source parts are technically not "part of MSBuild", you should still explain this, because most users will have had MSBuild installed incidentally as part of some other system such as `dotnet` or Visual Studio which comes with those additional components, and we will not be able to tell the difference.)
### Actual Behavior
It's vague
### Analysis
_No response_
### Versions & Configurations
README version [42383a8](https://github.com/dotnet/msbuild/commit/42383a83b2b0d1e551cbdb713f9ae3dda27dd04d)
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.