我对VisualStudio2010中的项目配置还不熟悉,但我已经做了大约research次,仍然不能完全理解这个问题.我有一个VisualStudio解决方案,其中引用C++的DLL引用C++ DLL.C#DLL引用了其他一些DLL,一些在我的项目中,一些在外部.当我try 编译C++ DLL时,我得到了这个警告:

警告MSB3270:正在生成的项目"MSIL"的处理器体系 struct 与引用"[INTERNAL C#DLL]"、"x86"的处理器体系 struct 不匹配.

它告诉我go Configuration Manager调整我的架构.C#DLL是用平台目标x86设置的.如果我try 将其更改为其他类型,比如任何CPU,它会抱怨,因为其中一个外部DLL it依赖于平台目标x86.

当我查看Configuration Manager时,它将我的C#DLL的平台显示为x86,将我的C++项目的平台显示为Win32.这似乎是正确的设置;当然,我不希望我的C++项目的项目将平台设置为x64,这是提供的唯一其他选项.

我在这里做错了什么?

推荐答案

这个警告似乎是在新的VisualStudio11测试版中引入的.NET 4.5,尽管我认为这以前是可能的.

首先,这真的只是一个警告.如果您只是处理x86依赖项,它应该不会有任何影响.当您声明您的项目与"任何CPU"兼容,但您依赖于某个项目或应用程序时,Microsoft只是试图警告您.是x86或x64的dll程序集.因为您有x86依赖项,所以从技术上讲,您的项目与"任何CPU"都不兼容.为了消除警告,实际上应该将项目从"任意CPU"更改为"x86".这很容易做到,以下是步骤.

  1. 进入Build | Configuration Manager菜单项.
  2. 在列表中找到你的项目,在平台下会显示"任意CPU"
  3. 从下拉列表中 Select "任意CPU"选项,然后 Select <New..>
  4. 从该对话框中,从"新平台"下拉列表中 Select x86,并确保在"复制设置自"下拉列表中 Select 了"任何CPU".
  5. 点击确定
  6. 您需要为调试和发布配置 Select x86.

这将使警告消失,并说明您的程序集或项目现在不再与"任何CPU"兼容,而是与x86相关.如果您正在构建一个具有x64依赖项的64位项目,这也适用;您只需 Select x64即可.

另一个注意事项是,如果项目是纯CPU,那么它们通常可以与"任何CPU"兼容.NET项目.只有引入特定的处理器体系 struct 的依赖关系(第三方DLL或您自己的C++管理项目),才会出现此问题.

.net相关问答推荐

.NET Core 中的微服务

在 .NET 中使用 AES 解密时缺少后半字节

如何知道变量是否只是指向另一个对象的pointer或者它是否可以独立存在

如何计算给定2个字符串的距离相似性度量?

什么是提升运算符?

Owin Twitter登录-根据验证程序远程证书无效

C# 时间跨度毫秒与 TotalMilliseconds

调用委托与方法的性能

运算符重载 ==, !=, Equals

如何判断对象是否是某种类型的数组?

如果需要,将方案添加到 URL

我可以在没有两个查询的情况下通过布尔标准将 IEnumerable 一分为二吗?

在 WPF DataGrid 中绑定 ComboBoxColumn 的 ItemsSource

List 是否保证项目将按照添加的顺序返回?

立即检测客户端与服务器套接字的断开连接

如何从头开始以编程方式配置 log4net(无配置)

在不使用while循环的情况下找到最里面的异常?

ADO.NET Entity Framework:更新向导不会添加表

程序员应该使用 SSIS,如果是,为什么?

检测到包降级警告(dotnet core,vs 2017)