簡體   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