繁体   English   中英

.NET从3.5升级到4.5打破了依赖关系

[英]Upgrading .NET from 3.5 to 4.5 breaks dependencies

面向.NET 3.5框架项目的现有应用程序使用第三方DLL。 我决定重新定位到4.5,以使用默认的CultureInfo设置。

重新定向后,调用第三方dll的代码不再编译。

这是一个多语言的应用程序(英语/法语),我认为这可能与它有关,因为该构建的错误列表现在以法语显示。 在3.5中,错误列表是英文的。

我对错误消息的解释是:

"Impossible to incorporate the type interop 'Envox.ADXVoice.ADXVoiceClass.' Utilise the interface appropriate to the place." 

该应用程序具有各种线程,这些线程有条件地调用法国文化,因此将测试移至基类并设置应用程序默认文化会很好。

有人遇到过类似的问题吗?

逐字错误是:

Error   7   Impossible d'incorporer le type interop 'Envox.ADXVoice.ADXVoiceClass'. Utilisez l'interface applicable à la place. 

英文错误消息是:

错误CS1752:无法嵌入互操作类型'Envox.ADXVoice.ADXVoiceClass'。 请改用适用的界面。

生成它是因为您在Envox互操作库上将“嵌入互操作类型”属性设置为True。 .NET 4.0中的一项新功能非常理想,因为您不再需要部署互操作库或PIA。 它确实要求您使用略有不同的编程样式,并使用以下命令创建该COM服务器的对象:

  var obj = new Envox.ADXVoice.ADXVoice();

换句话说,您在接口类型而不是类类型上使用new运算符。 C#程序员在看到这种情况时往往会吹破垫片,这通常是完全非法的。 但是准确的是,用C#处理COM对象的方式有点不寻常。 否则,它非常适合COM编程模型,因此您必须严格使用COM中的接口。

您还可以将“嵌入互操作类型”属性设置回False,这样就不必进行任何代码更改。 真的有点浪费。

Fwiw,让C#编译器说英语而不是法语,可能会领先一步。 检查此答案

暂无
暂无

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

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