繁体   English   中英

针对特定的.NET版本(VS2008)编译托管C ++程序集

[英]Compile Managed C++ Assembly Against Specific .NET Version (VS2008)

我的托管C ++程序集遇到了一个奇怪的问题。 即使我将C#项目和托管C ++(DLL)项目设置为目标.NET 3.5,当我编译托管程序集时,其“运行时版本”也为2.0。

我试图在.NET 3.5项目和.NET 4.0版本的CSScript中使用相同的程序集,而CSScript拒绝与.NET 2.0程序集一起运行(“运行时例外:混合模式程序集是针对版本'v2构建的。运行时间为0.50727',并且在没有其他配置信息的情况下无法在4.0运行时中加载。”)。

我设法将问题本地化为以下内容(所有工作均在VS 2008中完成):

  1. 我创建了一个针对.NET 3.5的C#项目。
  2. 我在相同的解决方案中创建一个空的C ++项目。
  3. 将一个空的.cpp文件添加到C ++项目。
  4. 更改C ++项目属性:配置类型=动态库(.dll),公共语言运行时支持=公共语言运行时支持(/ clr),并确保将公共属性的“目标框架”设置为3.5
  5. 编译C ++项目,并将其添加为对C#项目的引用。

当您查看C#项目中引用的属性时,您将看到“运行时版本”为v2.0.50727。 我的问题是,到底是什么?

为什么运行时版本为2.0? 我将所有内容都设置为3.5 ...如何强制托管C ++项目针对.NET 3.5进行编译?

谢谢,Marek

运行时版本是指虚拟机的版本,而不是.NET类库。 .NET 3.5与.NET 2.0在同一虚拟机上运行,​​因此您的参考资料显示了v2.0.50727。 如果要查看C ++项目是否实际针对框架的3.5版本,则应检查该项目中的各个库引用。

您的“修复”实际上无法解决问题。

运行时异常:混合模式程序集是针对运行时的版本“ v2.0.50727”构建的,如果没有其他配置信息,则无法在4.0运行时中加载

您需要使用4.0运行时来避免这种情况,即使尝试使用一些神话般的“ 3.5”版本也没有意义。 为此,您需要使用VC ++ 2010编译器进行编译。 由于您需要在.NET 3.5应用程序中使用它,因此这不是启动器。

尝试查看该“其他配置信息”。 这个问题 ,也这一个

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM