我正在尝试使用C#打包项目将wpf应用程序打包到UWP包中。问题是我的应用程序具有dll依赖项(c ++ dll),这些依赖项随其输出中的生成后事件提供。因此,当我在打包项目中添加对我的应用程序的引用时,其输出仅包含从桌面应用程序的生成中生成的dll-所有其他dll(来自生成后事件)都将被忽略。
然后,我决定为打包项目进行相同的构建后事件,并提供缺少的dll,但是不幸的是,打包过程并未考虑它们。
有没有办法强制将这些dll打包在结果appx中?
答案 0 :(得分:1)
扩展 Yordans 答案,如果您想引用项目外部的目录,请包含 Link
元数据:
<Content Include="..\release\win-unpacked\\**\*.*" Link="app\%(RecursiveDir)%(Filename)%(Extension)">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
答案 1 :(得分:0)
我想出了一个适合自己情况的决定(不确定是否是最好的决定……)。
假设桌面应用程序的名称为MyApp。该解决方案包含以下步骤:
在桌面应用程序中添加构建后事件,以将其输出复制到打包项目中的目录“ MyApp”。
将此目录包含在打包项目中,并使其复制为内容。
要使整个目录作为内容,请在打包项目wapproj文件中添加以下ItemGroup:
<ItemGroup>
<Content Include="MyApp\\**\*.*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
这将使文件夹的内容复制到打包项目的输出中。由于它与引用的应用程序具有相同的名称,因此将其复制到相同的输出目录中,打包项目将为每个引用的应用程序创建。它表明这是在正确的时间(在调用MakePri.exe之前)发生的,并且从打包项目的构建过程中考虑了所有依赖项。