2017-04-12 50 views
2

我使用的第三方.NET庫基本上是C++庫的封裝。 這個庫不是NuGet包。我只有用於不同體系結構(ARM,x86,x64)和託管庫的C++庫。在UWP應用程序包中包含體系結構特定文件

我已經提到的託管庫在我的項目,我已經創建生成後事件拷貝正確的C++庫來構建目錄:

XCOPY/Y「$(PROJECTDIR)EXTERNALREFERENCES \ NoesisGUI \ UWP _ $(平臺)*。*」, 「$(TARGETDIR)」

我的問題是,這個C++庫不被複制到部署時AppX中文件夾,所以我得到System.DllNotFoundException

在應用程序包中包含體系結構特定文件的正確方法是什麼?

這是該項目的文件夾結構與C++庫:

Project folder structure with C++ libraries

回答

0

沒有必要的腳本,它更容易只是添加那些作爲項目的Content

首先,將您的ExternalReferences文件夾移動到項目之外。父文件夾(默認情況下是你有.sln文件的地方)應該可以。

手動編輯.csproj的文件,並結束</Project>標記之前添加以下內容:

<ItemGroup> 
    <Content Include="..\ExternalReferences\NoesisGUI\uwp_$(Platform)\Noesis.dll"> 
    <Link>Noesis.dll</Link> 
    </Content> 
</ItemGroup> 

這將包括在項目中考慮到它是目前在建的平臺Noesis.dll文件。

注意:上面我使用「.. \」來使用父文件夾,請務必在其他位置移動文件夾時更改此設置!

+0

其實你也需要選擇Build Action to Content。 但是這對我不起作用,因爲我有3個不同的庫用於3種體系結構。所以我必須將它們放在子文件夾中。 我已將我的文件夾結構添加到我的問題中。 我只需要包含基於我正在構建的體系結構的正確庫。 – Kenshin

+0

@Kenshin如果將構建操作設置爲「內容」,則不需要將「複製到輸出目錄」設置爲「始終」,因爲這幾乎是默認設置 –

+0

當我僅將「複製到輸出目錄」切換到「始終」時,文件被複制到構建目錄,但未在部署時複製到AppX目錄。 – Kenshin