42
votes

I came across a situation in which I would like to set the Prefer 32-bit to true. But in Visual Studio 2012, it is showing as disabled. And no matter what I do it doesn't get enabled.

I read that Any CPU with Prefer 32-bit is the default value for all new projects. So, should I assume that although it is disabled it is set to true? Then how can you set it to be just Any CPU?

In What AnyCPU Really Means As Of .NET 4.5 and Visual Studio 11 and in many other posts and questions here in Stack Overflow it says:

overall, there are now five options for the /platform C# compiler switch: x86, Itanium, x64, anycpu, and anycpu 32bit preferred

What's more, I have some collegues that have mentioned to me that in the past that checkbox was enabled (maybe they are wrong?).

Why is the Prefer 32-bit checkbox disabled, and how can I enable it again?

My processor is 64-bit, and I have applied the Update2 to Visual Studio 2012.

3
1) Which framework version does the project target? I guess it's not available if you target older versions. 2) What kind of project is it? A class-library or an executable? For class-libraries preferring an architecture isn't really useful.CodesInChaos

3 Answers

52
votes

Assuming you've got an executable project, then if you change your target platform to .NET 4.5, it should become enabled.

It's a .NET 4.5-only thing, and it's only enabled for executables.

4
votes

In case anybody encounters this for a .NET 4.5 executable in Visual Studio 2013 (and possibly Visual Studio 2012):

We solved it by switching the project to .NET 4.0 and then back .NET 4.5 (on the Build tab of the project properties). This reenabled the checkbox "Prefer 32 bit" for AnyCPU.

2
votes

This setting may also be disabled if your project is a unit test project. It turns out the setting wasn't my issue anyway. I got tests running by changing the Visual Studio test runner to run tests as a 64-bit process.

In Visual Studio Community 2015, I found this in the Test menu:
Test > Test Settings > Default Processor Architecture > X64

Here's more info from Microsoft:
https://msdn.microsoft.com/en-us/library/ee782531.aspx