簡體   English   中英

啟用生成序列化程序集時使用C ++ / CLI dll

[英]Using C++/CLI dll when generate serialization assembly is enabled

我有一個C ++ / CLI dll,其中包含一些我想在C#項目中使用的本地C ++代碼。

如果將Generate serialization assembly屬性設置為AutoOff則一切正常。 但是,當我將此屬性設置為On ,出現以下錯誤: SGEN : error : An attempt was made to load an assembly with an incorrect format: example.dll

不需要禁用序列化程序集的解決方案嗎?

您的C ++ / CLI程序集包含非托管代碼,只能由運行相同目標體系結構的程序加載。 SGen加載它以訪問元數據。 SGen.exe有兩個版本,一個32位版本和一個64位版本。

因此,如果32位版本的SGen嘗試加載C ++ / CLI程序集的x64版本,則此錯誤將落在此錯誤上。 或相反。 您可以通過查看詳細的MSBuild跟蹤並注意sgen.exe路徑來進行診斷。 工具>選項>項目和解決方案>生成並運行> MSBuild項目生成輸出詳細程度=詳細。 sgen.exe的32位版本位於“ NETFX 4.x工具”目錄中,而64位版本位於“ NETFX 4.6 Tools \\ x64”目錄中。

當您沒有將C#項目配置為與C ++ / CLI項目的目標體系結構兼容時,會誤認為該工具的經典用法。 右鍵單擊它>屬性>構建選項卡>平台目標設置。 使它與您的C ++ / CLI項目目標相匹配。 如果選擇x86或AnyCPU,則將獲得SGen的32位版本,而x64將獲得SGen的64位版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM