如何将具有构建后依赖性的WPF应用程序打包到UWP包中?

时间:2018-08-27 12:40:10

标签: c# uwp packaging desktop-bridge

我正在尝试使用C#打包项目将wpf应用程序打包到UWP包中。问题是我的应用程序具有dll依赖项(c ++ dll),这些依赖项随其输出中的生成后事件提供。因此,当我在打包项目中添加对我的应用程序的引用时,其输出仅包含从桌面应用程序的生成中生成的dll-所有其他dll(来自生成后事件)都将被忽略。

然后,我决定为打包项目进行相同的构建后事件,并提供缺少的dll,但是不幸的是,打包过程并未考虑它们。

有没有办法强制将这些dll打包在结果appx中?

2 个答案:

答案 0 :(得分:1)

扩展 Yordans 答案,如果您想引用项目外部的目录,请包含 Link 元数据:

<Content Include="..\release\win-unpacked\\**\*.*" Link="app\%(RecursiveDir)%(Filename)%(Extension)">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

答案 1 :(得分:0)

我想出了一个适合自己情况的决定(不确定是否是最好的决定……)。

假设桌面应用程序的名称为MyApp。该解决方案包含以下步骤:

  1. 在桌面应用程序中添加构建后事件,以将其输出复制到打包项目中的目录“ MyApp”。

  2. 将此目录包含在打包项目中,并使其复制为内容。

要使整个目录作为内容,请在打包项目wapproj文件中添加以下ItemGroup:

<ItemGroup>
    <Content Include="MyApp\\**\*.*">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
  </ItemGroup>  

这将使文件夹的内容复制到打包项目的输出中。由于它与引用的应用程序具有相同的名称,因此将其复制到相同的输出目录中,打包项目将为每个引用的应用程序创建。它表明这是在正确的时间(在调用MakePri.exe之前)发生的,并且从打包项目的构建过程中考虑了所有依赖项。