Windows 10 14393之后的应用如果想发布到微软应用商店必须打包成类似UWP的包,打包后的程序以沙箱运行,彼此独立。至此之后UWP应用只需要考虑windows桌面运行的情况下,其实可以混合现有所有技术进行开发了。

C#可以通过invoke的方式去调用C++编写的动态链接库,但生成打包成misx发布到微软应用商店会出现无法加载C++dll的问题,而且不会报错,用电脑的事件查看器也看不到任何问题。

后来发现C++的dll默认存储在C:\Program Files\WindowsApps\应用目录,而这个目录是没有可执行权限的,问题就出在权限问题。当使用Visual Studio调试的时候安装目录不是C:\Program Files\WindowsApps\所以能正常运行。

解决办法和思路:

C#程序运行的时候将C++编写的dll拷贝到C:\Users\<用户名>\AppData\Local\Packages\应用目录 ,然后通过C#的Invoke技术去读取加载C++编写的dll。