我是Visual Studio 2010中项目配置的新手,但是我做了一些research,仍然不能完全弄清楚这个问题。我有一个Visual Studio解决方案,其中包含引用C#DLL的C++ DLL。 C#DLL引用了其他一些DLL,其中一些在我的项目中,而另一些在外部。当我尝试编译C++ DLL时,出现以下警告:
它告诉我去配置管理器来调整我的体系结构。使用平台目标x86设置C#DLL。如果我尝试将其更改为其他任何东西(如Any CPU),它将提示,因为它依赖的外部DLL之一具有平台目标x86。
当我查看Configuration Manager时,它显示了我的C#DLL的平台为x86,以及我的C++项目的平台为Win32。这似乎是正确的设置。当然,我不希望我的C++项目的项目平台设置为x64,这是唯一提供的其他选项。
我在这里做错了什么?
最佳答案
尽管我认为以前可能已经实现了,但新的Visual Studio 11 Beta和.NET 4.5似乎已经引入了此警告。
首先,这实际上只是一个警告。如果您仅处理x86依赖项,那么它不会有任何伤害。当您声明您的项目与“任何CPU”兼容,但您依赖于x86或x64的项目或.dll程序集时,Microsoft只是试图警告您。因为您具有x86依赖性,所以从技术上讲,您的项目因此不兼容“任何CPU”。为了消除警告,您实际上应该将项目从“Any CPU”更改为“x86”。这很容易做到,这里是步骤。
<New..>
这将使警告消失,并声明您的程序集或项目现在不再与“任何CPU”兼容,而现在特定于x86。如果您要构建具有x64依赖项的64位项目,这也适用。您只需选择x64。
另请注意,如果项目是纯.NET项目,则它们通常可以与“任何CPU”兼容。仅当您引入针对特定处理器体系结构的依赖项(第三方dll或您自己的C++托管项目)时,才会出现此问题。