2011-10-11 19 views
14

我明白,我們可以在C#編寫的Metro風格應用訪問.NET API和所有的WinRT API的一部分。 但是,如果其他第三方組件的目標.net 2.0或3.5等 我們能夠將它們作爲引用添加到metro風格的應用程序項目中嗎?使用傳統組件

回答

9

是,有時你可以從地鐵應用程序引用第三方.NET程序集。它們應該部署在與您的應用程序相同的文件夾中,並且只使用受支持的API。

我創建了一個.NET庫,一類和Metro應用中使用它。得到以下警告:The project 'EmptyLib' cannot be referenced.但是,該應用程序已經建成,我能夠調試它,並在調試器中探索我的類的實例。

然後我試圖通過Windows應用程序認證。它失敗了(見下面的細節)。

接通編譯器優化爲傳遞應用認證後。


它第一次失敗的原因是該庫使用不支持的API。詳細信息:

錯誤:此應用程序未能通過支持的API檢查。在MSCORLIB

  • API System.Runtime.CompilerServices.CompilationRelaxationsAttribute公鑰= B77A5C561934E089不支持此應用程序類型。 EmptyLib.dll調用這個API。

  • API System.Runtime.CompilerServices.CompilationRelaxationsAttribute。#ctor(System.Int32)in MSCORLIB,PUBLICKEYTOKEN = B77A5C561934E089不適用於此應用程序類型。 EmptyLib.dll調用這個API。

影響如果不是固定的:應用程序正在使用一個或多個不在Windows SDK中用於Metro風格應用程序的API。使用不受支持的API違反了Windows Store策略,並可能對用戶體驗產生負面影響,並有可能阻礙整體系統的穩定性。

如何解決:在看短信above2對於需要修復的確切API錯誤。有關支持的API列表,請參閱適用於Metro風格應用程序的Windows SDK。

+5

如果庫作者希望他們的圖書館是臺式機和地鐵上使用,就應該使用「便攜式圖書館」項目,以確保它們只能使用普遍支持的API。 –

+1

參見http://msdn.microsoft.com/en-us/library/windows/apps/br230301(v=VS.85).aspx#KnowTheRules –