2016-08-19 68 views
0

我有一個針對Windows-10桌面平臺的C#應用​​程序。C#應用程序調用用C++編寫的本機組件。我的本機C++代碼具有Visual C++組件擴展(C++/CX)。
我試圖運行WACK測試我的應用程序&我看到這個錯誤:UWP:WACK測試在Windows運行時元數據驗證上失敗

Error Found: The general metadata correctness test detected the following errors: The overloaded method XXX in yyy.winmd have the same number of in parameters without one that has DefaultOverloadAttribute. Exactly one method overload must have DefaultOverloadAttribute
Impact if not fixed: Windows store doesnt allow apps that don't pass Windows Runtime Metadata Validation.
How to fix: Please ensure that the compiler you are using to generate your Windows Runtime types is up to date with the Windows Runtime specifications

過去,這很好地工作VS-2015更新2.我安裝了VS-2015更新-3今天&從那時我看到這個失敗。
奇怪的是,錯誤報告中提到的重載方法根本沒有超載。
我檢查了這個MSDN page,但無法找到任何解決方案。
我的VS詳情如下:

MS VS Professional 2015
Version 14.0.25425.01 Update 3
MS .NET Framework
Version 4.6.01038

我無法找到任何Windows運行時規格的任何地方。安裝VS Update-3後需要額外的東西嗎?

+0

我們很樂意看看。您可以通過微軟公司的網址與我聯繫,通過repro項目,我們可以進行調查嗎? –

回答

1

這似乎是一個VS編譯器問題。基本上WACK工具抱怨任何用戶定義的方法名稱「關閉


編譯器增加了一個IClosable實現每當用戶自定義引用類有一個明確的析構函數。然後它將析構函數映射到「IClosable :: Close」方法。但編譯器不抱怨名爲「Close」的用戶定義方法。


在進一步挖掘時,我發現SQLite也似乎有類似的問題。這正是我所碰到的問題。
這是SQLite使用的solution
查看SQLite解決方案後,我然後修改我的方法名稱從「關閉」到「Closedb」,現在我的WACK測試通過。
從本貼開始,此問題的唯一解決方案似乎在您的代碼中沒有名爲「關閉」的方法。

相關問題