在 UWP 应用程序包中包含体系结构特定文件
Include architecture specific files in UWP application package
我正在使用第 3 方 .NET 库,它本质上是 c++ 库的包装器。
这个库不是 NuGet 包。我只有适用于不同架构(ARM、x86、x64)的 C++ 库和托管库。
我在我的项目中引用了托管库,并且我创建了 Post-build 事件,将正确的 C++ 库复制到构建目录:
xcopy /Y "$(ProjectDir)ExternalReferences\NoesisGUI\uwp_$(Platform)*.*" "$(TargetDir)"
我遇到的问题是这个 C++ 库在部署时没有复制到 AppX 文件夹,所以我得到 System.DllNotFoundException.
在应用程序包中包含体系结构特定文件的正确方法是什么?
这是带有 C++ 库的项目文件夹结构:
不需要编写脚本,将它们添加为项目的 Content
会更容易。
首先,将您的 ExternalReferences 文件夹移出项目。父文件夹(默认情况下是您拥有 .sln 文件的位置)应该没问题。
手动编辑 .csproj 文件并在结束 </Project>
标记前添加以下内容:
<ItemGroup>
<Content Include="..\ExternalReferences\NoesisGUI\uwp_$(Platform)\Noesis.dll">
<Link>Noesis.dll</Link>
</Content>
</ItemGroup>
这将在项目中包含 Noesis.dll 文件,同时考虑到它当前正在构建的平台。
注意:上面我用“..\”来使用父文件夹,如果你把文件夹移到别处,一定要改变这个!
我正在使用第 3 方 .NET 库,它本质上是 c++ 库的包装器。 这个库不是 NuGet 包。我只有适用于不同架构(ARM、x86、x64)的 C++ 库和托管库。
我在我的项目中引用了托管库,并且我创建了 Post-build 事件,将正确的 C++ 库复制到构建目录:
xcopy /Y "$(ProjectDir)ExternalReferences\NoesisGUI\uwp_$(Platform)*.*" "$(TargetDir)"
我遇到的问题是这个 C++ 库在部署时没有复制到 AppX 文件夹,所以我得到 System.DllNotFoundException.
在应用程序包中包含体系结构特定文件的正确方法是什么?
这是带有 C++ 库的项目文件夹结构:
不需要编写脚本,将它们添加为项目的 Content
会更容易。
首先,将您的 ExternalReferences 文件夹移出项目。父文件夹(默认情况下是您拥有 .sln 文件的位置)应该没问题。
手动编辑 .csproj 文件并在结束 </Project>
标记前添加以下内容:
<ItemGroup>
<Content Include="..\ExternalReferences\NoesisGUI\uwp_$(Platform)\Noesis.dll">
<Link>Noesis.dll</Link>
</Content>
</ItemGroup>
这将在项目中包含 Noesis.dll 文件,同时考虑到它当前正在构建的平台。
注意:上面我用“..\”来使用父文件夹,如果你把文件夹移到别处,一定要改变这个!