From my understanding Visual Studio 2005 always uses MFC8 automaticly, VS2008 MFC9 and VS2010 the MFC10.
Can use a newer Visual Studio Version and still link to an older MFC Version?
I searched the options and the project settings all over but I could not find any option about the MFC.
VS2010 apparently (I don't have it, so I haven't tried it) has the ability to use both VS2008 and VS2010 toolsets to build the applications, provided they are both installed in the machine.
More here
I would expect Visual Studio 11 to have the same ability, but who knows...
Related
Different versions of the Qt Visual Studio Addin are available for download at
Qt Visual Studio Addin
How do I know which version to install for different versions of Visual Studio?
I'm running Visual Studio 2012, but would like to know a general answer.
Don't use the archive by default, use it only if you need older version.
The Visual Studio addin you need depends on the Qt version you want, for Qt 5 you need version 1.2.4 and for Qt 4 you need 1.1.11, see the download section here
I have a Windows CE 5.0-based Platform Builder image. It is intended to be installed on Visual Studio 2005. My team would like to upgrade our build tools to utilize Visual Studio 2012, but Visual Studio 2012 does not support this platform image.
To be clear; I am not asking whether or not Visual Studio 2012 (or higher) supports Platform Builder SDKs targeting Windows CE 5.0. That question has already been answered (more or less), and the answer is clearly "No."
Instead, what I'd like to do is install the Platform Builder SDK, and manually modify the Visual Studio 2012 environment to allow compilation of my Windows CE code. Features like remote debugging and deployment are acceptable losses to my team; we have our own pathway for deployment and debugging on our embedded device. What I'm really hoping to gain is simply the ability to build WinCE 5.0 code in VS2012, which was intended for VS2005. I am attempting to reduce the number of Visual Studio installations, and get access to the superior intellisense faculties of newer versions of Visual Studio.
Does anyone know if this is possible? How would I go about doing that?
There does not appear to be a way to do this, in such a fashion as to no longer require Visual Studio 2005.
You can, however, use registry hacks to force Visual Studio 2012 to build a WinCE 5.0 project by utilizing the compiler binaries from Visual Studio 2005, during compilation. This would allow you to develop code in VS2012, but would also require that VS2005 be installed for a successful build.
Here is an article explaining the steps to set this up.
VS2012 doesn't have any of the Windows CE compilers. The last one that shipped with compilers compatible with CE 5.0 was VS 2008, so that's the "latest" version you'll be able to use to build. (VS2012 is capable of building for Windows CE, but only for WEC 2013, and only after installing a WEC 2013 SDK, which includes the requisite compiler pieces).
In short, there's no way you can get VS2012 by itself to compile a CE 7.0 or earlier app.
There is a plug-in for VS 2013 that will allow you to use that IDE for managed code (I've never used it, so I can't say how well it works), but it still requires VS 2008 to be installed to get the compilers.
Background
I am open sourcing a few old Visual Studio applications I created a while back. I have created new solutions using my new VS2012 environment for them and have gotten the projects set up as git repositories. I got everything working fine in Visual Studio 2012 with no changes to the source code, all I needed to do was make sure I was linking the proper libraries in the new project configurations.
I would like to configure these projects as to have maximum compatibility for others downloading the project from Github. On this machine I have VS2010 installed alongside the latest VS2012 version. After I got everything working right for both of the projects in VS2012, I tried to open them up in VS2010.
When I tried to build I got a single error:
Specified platform toolset (v110) is not installed or invalid.
Please make sure that a supported PlatformToolset value is selected.
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets 518
What I Tried
So I opened up the properties for the project, went to Configuration Options --> General and the Platform Toolset was indeed set to Visual Studio 2012 (v110). This input is a drop down box and the v110 value is not listed, instead I get two choices:
v100
v90
These correspond to VS2010 and VS2008 respectively. If I change the value to v100 and rebuild I get no errors and my program runs just fine in my Visual Studio 2010 environment.
When I open the project back up in Visual Studio 2012, if tells me that I have an old project file and asks if I want to upgrade, I say yes and it upgrades. I rebuild and run to make sure everything is still working. When I open the configuration options in VS2012 the Platform Toolset is set back to `Visual Studio 2012 (v110) but clicking the drop down input there are several more choices listed:
Visual Studio 2012 (v110)
v110_wp80
Visual Studio 2012 - Windows XP (v110_xp)
Visual Studio 2010 (v100)
Visual Studio 2008 (v90)
‹inherit from parent or project defaults›
My Questions
This has led me to several questions. I am going to pose them all. It would be nice to get as much information as I can, but a good answer to just one of them would probably solve my problem.
If I'm not using features specific to newer versions of Visual Studio, is it possible to set up a solution which can be opened and run without modification in as many versions as possible (ie. 2008, 2010, or 2012)? If so, how?
If I set the Platform Toolset to v90 (VS2008) from within Visual Studio 2012, and it's able to build and run, does this mean that it will build and run for users with VS2012, VS2010, and VS2008?
What exactly does the <inherit for parent or project defaults> option do? What would the project defaults be set up as? Can this be used to tell Visual Studio to try to using whichever installed Platform Toolset will work.
Are there any other options besides Platform Toolset in Visual Studio that I can set to increase compatibility with others' development environments?
This is a somewhat tricky situation. One of the underlying problems here is that VS2010 and VS2012 use MSBuild to build C++ projects, but VS2008 farmed it out to VCBuild instead. You can see this by comparing the project files. VS2010/VS2012 use .vcxproj, while VS2008 uses .vcproj.
If I'm not using features specific to newer versions of Visual Studio,
is it possible to set up a solution which can be opened and run
without modification in as many versions as possible (ie. 2008, 2010,
or 2012)? If so, how?
For maximum compatibility, you want to target the lowest common denominator (i.e. vc90 in this case). Note that when you do the upgrade, the solution file and project files get upgraded to the latest version, which may break compatibility with older versions of Visual Studio.
If I set the Platform Toolset to v90 (VS2008) from within Visual
Studio 2012, and it's able to build and run, does this mean that it
will build and run for users with VS2012, VS2010, and VS2008?
Not really, due to the .vcxproj / .vcproj conflict stated above.
For example, I currently have a set of .vcxproj files and a solution designed for VS2010. I use VS2012 as my IDE, so when I open the VS2010 solution in VS2012, I choose to NOT upgrade it and simply open it as is. VS2012 and beyond should be backwards compatible back to VS2010 as far as project files go.
For maximum compatibility in development environments, my recommendation would be use VS2010's solution as the baseline, targeting v100. Developers can use any version newer than that and it should all work together gracefully.
Is there a way to develop a VSIX extension under Visual Studio 2012, which then could be installed in Visual Studio 2010? I've tried to set version range for Microsoft.VisualStudio.Pro target to [10.0,11.0], but when I launch a compiled VSIX, it offers only VS2012 to be install into.
I know it is possible to develop VSIX under VS2010, which is applicable for VS2012, though it requires to manually edit a .vsixmanifest file. But I wonder if it is possible to use newer VS2012 for developing?
You can, but have to create manually the source.extension.vsixmanifest file in the 1.0 format (handled by VS2010), whereas VS2012 uses version 2.0. You will only lose the visual property editor.
You also need to make sure that you've compiled against .NET 4.0 or lower rather than .NET 4.5.
I'm currently having issues installing Qt (Open Source Edition) such that I can use it in integrated into Visual Studio 2010. I realize that the 2008 edition will have deployment issues, and so I installed it from the source, only to be missing qtmaind.lib.
Anyways, I was looking around for a solution to this, and I came upon this: http://doc.qt.io/qt-4.8/install-win.html, which states:
Open Source Versions of Qt is not officially supported for use with
any version of Visual Studio. Integration with Visual Studio is
available as part of the Qt Commercial Edition.
Anyways, I thought maybe this was the reason I was having problems, and so I wanted to ask the following question:
Is it possible to integrate Open Source Qt into Visual Studio?
Absolutely. I use Qt 4.7 integrated with Visual Studio 2005.
I configured Qt this way:
configure -debug-and-release -opensource -shared -ltcg
-no-accessibility -no-qt3support
Once Qt was built (via nmake), I also installed the Qt Visual Studio Add-in.