2017-04-14 96 views
0

通用Windows dll實際上是通用的,還是僅用於UWP?用於UWP和經典桌面的C++通用Windows DLL

我建立一個本地C++的dll的所有默認設置,但是當我從經典桌面應用程序中引用它(這是一個單元測試),然後我得到這個異常:

此操作只在應用程序容器的上下文中有效。

當然,「通用Windows」中的「Universal」可能適合那些很酷的傢伙:),但我真的不想爲Windows 10構建兩個單獨的dll,只是因爲。

我在構建NuGets for .NET Core時也注意到了這一點,我將我的本地庫粘貼在win10文件夾中。我還爲Windows 7準備了一個特殊版本,以便進入win7文件夾。所有看起來不錯,直到運行時,甚至沒有.NET Core可以加載此通用DLL。

C++通用Windows僅適用於UWP嗎?有沒有辦法使用.NET核心,UWP和經典桌面的單個DLL?任何特殊的標誌設置?

如果沒有辦法擁有真正的通用dll,那麼如何區分Windows 10 dll是否適用於UWP或經典桌面?

+0

「通用」,似乎意味着它可以在Windows Phone的使用,而不是它是普遍有用。 –

回答

0

我與球隊的NuGet的討論,他們有一個解決方案:

與#2782

添加runtimes/{rid}/nativeassets/{tfm}/{any?}支持你nuspec設置的3.5.0一分鐘的客戶端版本確保消費者擁有正確的客戶端版本來獲取此nupkg路徑。

https://github.com/NuGet/Home/issues/5042

所以在我.nuspec的情況下:

<file src="Managed.dll" target="lib\netstandard1.3" /> 
<file src="Native-Win7.dll" target="runtimes\win7-x64\native" /> 
<file src="Native-Win10.dll" target="runtimes\win10-x64\native" /> 
<file src="Native-Uap10.dll" target="runtimes\win10-x64\nativeassets\uap10.0" />