我使用Visual Studio 2015 RC创建了一个空白的Windows 10 Universal应用程序:
File > New > Project ... > Windows Universal > Blank App (Windows Universal)
我想使用第三方提供的现有本机库。这些库是从C代码库构建的,只使用列入白名单的Windows Store API。
我在foo.dll
旁边复制了App1.vcxproj
,然后将其添加到项目中并修改了链接设置,以便为x86架构使用foo.lib
(与foo.dll
对应的导入库)。我还右键单击foo.dll
并将Content
属性设置为Yes
,这使得Visual Studio将.dll
嵌入到应用程序中。
到目前为止,我可以使用/调试使用第三方库的应用程序。 Visual Studio以某种方式在foo.dll
文件夹中的App1.exe
旁边部署AppX
。并且foo.lib
(foo.dll
的导入库)设法在应用程序启动时成功加载foo.dll
(这是因为foo.dll
部署在App1.exe
旁边)。
现在,对于第三方库,我每个架构都有一个.dll
文件:
foo/bin/x86/foo.dll
foo/bin/x86/foo.lib
foo/bin/x64/foo.dll
foo/bin/x64/foo.lib
foo/bin/arm/foo.dll
foo/bin/arm/foo.lib
这就是我的问题:为我的应用程序保留一个Visual Studio项目,我怎样才能说服Visual Studio:
foo/bin/x86/foo.dll
旁边部署App1.exe
在构建x64 foo/bin/x64/foo.dll
旁边部署App1.exe
在构建for arm foo/bin/arm/foo.dll
旁边部署App1.exe
到目前为止,我尝试将不同的foo.dll
文件放在解决方案文件夹中,例如
third-party/foo/x86/foo.dll
third-party/foo/x64/foo.dll
third-party/foo/arm/foo.dll
这可能有效,因为我可以为每个Content
文件有条件地将Yes
属性设置为.dll
。但是,使用解决方案文件夹使Visual Studio将.dll
文件部署在子文件夹中,例如x86架构的AppX\third-party\foo\x86\foo.dll
。因此,当应用程序启动时,它不再找到共享库。我希望有一种方法来控制部署目标位置,我认为这将解决我的用例。
希望我的解释足够清楚。
答案 0 :(得分:0)
只需使用预构建命令行 - 每个配置,这样您就可以在打包之前将正确的DLL从不同的源文件夹复制到项目文件夹。