可能重复:
Visual Studio"任何CPU"目标
我注意到在VS中编译C#代码时,通常有编译32/64位系统的选项,还有一个用于编译任何cpu的选项.
这两个选项有什么区别?选择任何CPU只能编译为中间字节代码,而第一个选项编译为机器代码(这听起来不太可能)?或者是其他东西?
我希望在Visual Studio 2010中将目标CPU设置从"任何CPU"更改为"x86".
我在另一个网站上看到我需要做以下事情:
但是我没有在属性中的任何地方看到"编译"选项卡.
请尽早帮助我.
更新:我确实看到了一个平台下拉列表,但除了"任何CPU"之外什么都没有,
.
我正在尝试使用命令行中的devenv.exe编译可视化工作室解决方案.我可以让它工作,但解决方案中的所有项目都是为AnyCPU编译的,我希望它们可以为x86编译.对于所有项目,调试和发布配置都设置为x86.
当我在IDE中编译时它工作正常.但是当我尝试从命令行构建解决方案时,它总是为AnyCPU构建所有项目.有没有办法让devenv.exe只在x86中构建?
我们正在使用Visual Studio 2012
我也碰到过这种奇怪的行为:当我的项目设置设为Any CPU并Prefer 32-bit在64bit Windows 7 OS在.Net 4.5下面的工程计划符合市场预期.然而,如果我关闭Prefer 32-bit然后在单步执行程序时,我可以看到代码从不进入接口实现 - 但也不会抛出任何错误.
我在以下控制台应用程序中将其简化为最简单的形式:
namespace BugCheck
{
interface IBroken
{
bool Broken<TValue> (TValue gen, Large large);
}
class Broke : IBroken
{
public bool Broken<TValue> (TValue gen, Large large )
{ return true; }
}
struct Large
{
int a, b, c;
}
class Program
{
static void Main (string[] args)
{
//32bit can step in. 64bit can't
((IBroken)new Broke()).Broken(1, new Large());
} …Run Code Online (Sandbox Code Playgroud) 我有一个包含C#和托管C++项目的解决方案.它在解决方案平台x64和x86中编译.由于它是托管C++,我想创建一个'Any CPU'解决方案并摆脱旧的解决方案.
我将C++项目链接器设置更改为x64和x86的强制安全IL映像.
接下来,使用Configuration Manager,我创建了一个名为"Any CPU"的新解决方案平台.接下来我添加了一个名为"Any CPU"的项目平台.
我继续将所有C#项目设置为"任何CPU",但对于C++我不能这样做.项目平台'Any CPU'不在下拉列表中,也没有选项'New ...'.
VS是关于它的,所以我保持它就像它并开始构建.令我惊讶的是,结果DLL(来自C++项目)是MSIL,即使C++的平台是x64.编译x32时也是如此,生成的DLL在MSIL中.
是什么赋予了?为什么我不能将C++项目设置为"任何CPU"?
我有一个Any CPU应用程序安装到Program Files(x86).在一台Windows 7 x64计算机上,它按预期运行x64,而在另一台Windows 7 x64计算机上运行为x86!
怎么会这样?我希望它在两台机器上以x64运行.可能是什么原因,我该怎样做才能始终以x64运行?
在我运行它的地方是否重要 - Program Files (x86)在我的情况下?
最初,我使用Mass Transit作为我的服务总线创建了一个控制台应用程序.最近,我切换到NServiceBus,它不需要你创建一个控制台应用程序,而是一个类库.在项目属性中,我只是将将其更改的设置从控制台应用程序切换到库,但是只能为x86构建它的约束仍然有效.
我现在无法将构建类型更改为任何CPU,因为它是一个控制台应用程序,现在应该是有效的.有没有办法将我的应用程序完全更改为类库,以便我可以运行构建任何CPU选项?我是否需要创建一个新项目,将文件复制到其中并继续这样做?或者它是否像改变项目(.proj)文件中的内容一样简单?
堆栈溢出问题缺少调试|任何项目的CPU构建配置和默认为Windows x64上的Debug | x86仅为控制台应用程序提供了有关此x86问题的更多上下文.
我在VS2010(或之前)中读过几篇关于配置管理器的帖子,但我找不到我的问题.
我有一个包含6个项目的解决方案.当我打开配置管理器时,我可以选择:"Active Solution Configuration",其值为Debug,Release,New或Edit.ÁctiveSolutionPlatform'具有值任何CPU,混合平台,x64,x86,新建或编辑.对于我的6个项目中的任何一个,配置(调试,发布,新建,编辑),平台(非启动项目:任何CPU,新建,编辑和启动项目:x64,新建,编辑).
对于除启动项目以外的所有项目,Platform的唯一(实际)选择是"任何CPU",我认为这很好.
但是,对于启动项目我只能选择x64,所以我假设在32位Windows操作系统上运行它会有问题吗?
我在历史上玩了一些价值观,现在有人把这个错误邮寄给我:
此文件的版本与您正在运行的Windows版本不兼容.检查您的计算机系统信息,以查看是否需要该程序的x86(32位)或x64(64位)版本,然后与软件发行商联系
(当我选择x86平台时,我只能在我的启动项目中选择x64作为平台,而其他人则设置为'任何CPU'.
当尝试将任何CPU添加到启动项目时,我可以选择它,但它要求复制设置,我只能选择x64或为空.选择其中任何一个都会导致错误:
无法创建此平台,因为已存在同名的解决方案平台.
我假设它以前设置为x86,但我不确定,无论如何,我怎样才能为我的启动项目获得"任何CPU"选择?
更新:突然之间,我可以添加选项"任何CPU"而不会出现错误.所以我的问题解决了......
我只是不知道为什么它第一次没有工作......我只是关闭窗口并重新启动它,这是可能的.
我有一个我从C#项目引用的Managed C++ dll.C#项目将编译为AnyCPU.有没有办法编译32位和64位版本的托管C++ DLL,然后在运行时告诉C#项目加载正确的一个,具体取决于它运行的架构?
我们有一个32位和64位的软件,它们调用我们的exe并将事件传递给它(就像一个插件).
问题是我们的exe必须以与调用软件相同的位(x86/x64)执行(如果软件以32位版本运行,我们的exe必须以32位运行,如果软件运行在64位版本我们的exe必须以64位运行).Windows版本是64位,但客户端可以运行32位版本或64位版本的软件.
在visual studio(2015)中,Target AnyCPU选项仅取决于Windows版本(+ Prefer 32位复选框),但我们需要依赖于调用软件Process.
我们可以实现任何选项或解决方案而不是编译到每个平台(x86和x64)吗?
anycpu ×10
c# ×6
.net ×3
x86 ×3
64-bit ×2
.net-4.5 ×1
32bit-64bit ×1
assemblies ×1
c++ ×1
clr ×1
devenv ×1
generics ×1
managed ×1
managed-c++ ×1
x86-64 ×1