C# support
This MR introduces the first working C# support.
All remaining relevant changes go to Source/cmVisualStudio10TargetGenerator.cxx.
It's mainly adding if/else/switch checks in many places and adapt the generated output to the project type (vcxproj or csproj).
There is a test CSharpOnly added which runs for all valid Visual Studio versions (10-14, sorry I don't have 15 yet).
Missing in this MR is the auto-linking between .cs
, .Designer.cs
, .xaml
, .xaml.cs
etc. files, to the can be edited with the appropriate Visual Studio editing tools. This will be added in a final MR after this.
I also renamed the target property VS_USER_PROPS_CXX
to VS_USER_PROPS
because it does not really make sense having the property language dependent if the target itself will always have exactly one language. VS_USER_PROPS_CXX
was introduced by me in commit e3909918 which is still not released, so I believe this change is OK. Sorry for not doing it "the right way" in the first place.
Note on mixing C++ and C# projects in one solution:
In Visual Studio there is the Configuration Manager which allows changing Configuration (Debug
, Release
, RelWithDebInfo
, ...) and Platform (Win32
, x64
, ...). Unfortunately there seems to be some inconsistency between C# and C++ projects, the naming of the platform is not always the same:
C++ project | C# project | |
---|---|---|
64bit | x64 |
x64 |
32bit | Win32 |
x86 |
CMake uses Win32
as $(Platform)
for 32 bit builds. To avoid errors when building a .csproj
file directly with msbuild.exe I enhanced the Condition="$(Configuration)|$(Platform) ..."
attribute to check for platform equal to x86
as well (only for C# and 32bit). This allows the .csproj
targets to be built both from Visual Studio as well as from msbuild.