Historically we've only supported two version of Visual Studio at any one time, it's currently VS2013 and VS2015 with default builds generated using VS2013, which ties us to VC++ 2013. With the release of VS2017 just recently it's time to consider our roadmap and when we move from VS2013 as our default to VS2015.
The only complication with this is the VC++ version being tired to the VS version. So VS2015 means the new requirement for VC++2015.
I'm not in a quite rush to make this change as VC2017 is very new, would prefer that it stabilise for a bit, so this is something to consider over the next 3-6mths.
The cef.sdk packages would be updated so by default it would only be possible to build using VS2015/17 as they get too large including three debug and release builds of the libcefwrapper
Feedback welcome.
+1
@amaitland I agree with your reasoning. Would you mind postponing the transition to VS2015 post CefSharp 57 release? A couple of weeks ago we had to manually update the .NET framework and c++ runtime for all our payment kiosks. Even with TeamViewer that was large effort 馃槉
Would you mind postponing the transition to VS2015 post CefSharp 57 release?
@peters I was thinking more like version 59 or 61. No plans to update before 57 馃槃
@amaitland Awesome 馃嵒
Just for clarity, at this stage we'll look at upgrading to VS2015 after 59 has been branched, so the first release will be 61.
Just as a note, when adding support for VS2017 editbin is in a different location, See https://gitter.im/cefsharp/CefSharp?at=592af5b00a783b6c0ae28259 for details.
VC Runtime in MSVC 2017 is binary compatible with 2015
https://blogs.msdn.microsoft.com/vcblog/2017/03/07/binary-compatibility-and-pain-free-upgrade-why-moving-to-visual-studio-2017-is-almost-too-easy/
https://blogs.msdn.microsoft.com/vcblog/2017/03/07/visual-studio-2017-for-c-developers-you-will-love-it/
https://blogs.msdn.microsoft.com/vcblog/2016/02/24/stuck-on-an-older-toolset-version-move-to-visual-studio-2015-without-upgrading-your-toolset/
Looks like VS2017 brings a lot of advancements, including the ability to target VC++2015.3
https://groups.google.com/a/chromium.org/d/msg/chromium-dev/Y3OEIKkdlu0/TCcT1SvwAwAJ
Maybe slightly oftopic but this might make the effort to switch to VS2015/17 a bit harder as chrome is moving to Clang
Can anybody tell me what's needed to make a compile with VS2015 work?
I tried to compile current CefSharp 57 with Visual Studio 2015 and couldn't make it work.
@DickvdBrink I just noticed that VS2017 has (experimental) Clang support, so that might be an option?
On a side note, VS2017 is also able to use the VS2015 compiler toolchain (it is an installation option in the VS2017 installer).
Maybe slightly oftopic but this might make the effort to switch to VS2015/17 a bit harder as chrome is moving to Clang
Far as I know CEF won't be changing build tools for libcef_dll_wrapper, so there's no requirement for clang, at least for now. See http://magpcss.org/ceforum/viewtopic.php?f=10&t=15322&p=35693
On a side note, VS2017 is also able to use the VS2015 compiler toolchain (it is an installation option in the VS2017 installer).
That is a big step forward in VC++ development, anyone interested in this should read the link I posted above.
Removing this from the 61.0.0 milestone as I no longer have plans to implement these changes.
Good to know about the binary compatibility with clang.
I'm currently on a clean system with VS2017 and 2015 toolset, so am unable to build and contribute at the moment. Is there a way to get the VS2013 compilers from a Windows/Platform SDK instead of installing VS2013?
On a side I was also wondering if the Managed C++ code could be split off in a seperate nuget like the binary cef distribution is currently (if that makes sense). I still need to digg further into Cefsharp, but I am looking for ways to get started with the current toolset that I have installed.
I'm currently on a clean system with VS2017 and 2015 toolset, so am unable to build and contribute at the moment.
Building with VS2015 is supported, you can likely add support for VS2017 to build using the VC++ 2015 compiler. Look at the CefSharp.props file, the history should have some clues on how this was done previously. You'll also need to resolve the editbin issue as described above.
On a side I was also wondering if the Managed C++ code could be split off in a seperate nuget like the binary cef distribution is currently (if that makes sense). I still need to digg further into Cefsharp, but I am looking for ways to get started with the current toolset that I have installed.
If the code was generated via a tool then maybe this would be practical, as it's hand written debugging would be unnecessarily difficult, development in general would be made more complex. If you cannot get it building in VS2017 then just install VS2015 Community......
With #2179 I am able to use VS2017 in combination with the VS2015 toolset.
That might be an alternative solution? Since with VS2017 you can switch between VS2015 and 2017 toolset. Then you don't need to install the whole of VS2015.
Since #2179 has landed, we are now buildable on:
I therefore believe this issue could be closed. Official builds are still done using VS2013, that's fine with me (we _can_ make this change at some point also, but it means the VC++ redist will need to be changed also so there is a bit of work in updating docs etc.)
Unless anyone objects, I will close this issue shortly. Ping @cefsharp/team-cefsharp
The purpose of this issue was to actually upgrade to VS2015 and subsequently changing the dependency to VC++2015. Adding support for VS2017 was an action item, wasn't the primary task. In my opinion this issue should be sanitized to remove unnecessary noise, refocusing on the core, which is upgrading to VS2015. (No need to create a new issue, the history here really isn't that important)
With the ability to bin deploy VC++, it's really a trivial technical issue, the hassle here is that people simply don't read the release notes or pay any attention to the Readme.txt that's opened when they install the Nuget packages.
Building with VS2015 is supported, you can likely add support for VS2017 to build using the VC++ 2015 compiler. Look at the CefSharp.props file, the history should have some clues on how this was done previously. You'll also need to resolve the editbin issue as described above.
When I proposed the changes that were merged in #2179 I hadn't really though about the problem in any detail, it's likely totally unnecessary to build with the v140 tool set in VS2017, the bin comparability should allow for compilation with v141. A trivial change should yield a much cleaner solution.
master has been upgraded, the default is to now build with VS2015, support for VS2013 has been removed.
This has been attached to the 64.0.0 milestone.
TODO:
VC++ 2015 is now required. (VC++ 2017 should also work)Nuget Readme.txt has been updated, see https://github.com/cefsharp/CefSharp/blob/master/NuGet/Readme.txt#L29FAQ has been updated see https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions/_compare/49be6f86f2387edde247bbe1ae036d4924a17825...52e23fe825443214b856f2ad85b5211c6e9c85b9General Usage Guide has been updated see https://github.com/cefsharp/CefSharp/wiki/General-Usage/_compare/6dd126e8cd0090883fe68bc73e8642d4ad3cc34b...4185b7ea5a613731093b2d688499375b31a030c6If anyone happens to come across another section that needs updating then please let me know.
Wonderful @amaitland, thanks a lot! 馃憤
Most helpful comment
masterhas been upgraded, the default is to now build withVS2015, support forVS2013has been removed.This has been attached to the
64.0.0milestone.TODO:
VC++ 2015is now required. (VC++ 2017should also work)