ClickOnce包含发布时导入的.targets(FFMPEG)

时间:2017-07-31 15:41:10

标签: c# winforms ffmpeg msbuild clickonce

我有一个WinForms应用程序,我通过ClickOnce发布。此应用程序包括Accord FFMPEG库,它们作为参考包含在内。

FFMPEG NuGet包文件夹包含一个.targets文件,其中包含正确操作FFMPEG库(avcodec.dll,avformat.dll,avutil.dll)所需的各种dll。在构建项目时,这些文件将复制到\ bin文件夹中。这是通过在.csproj中包含这一行来完成的:

Import Project="..\packages\Accord.Video.FFMPEG.3.3.0\build\Accord.Video.FFMPEG.targets" Condition="Exists('..\packages\Accord.Video.FFMPEG.3.3.0\build\Accord.Video.FFMPEG.targets')" 

但是,通过ClickOnce发布应用程序时,这些文件不包含在已发布的文件夹中。有没有办法运行导入项目任务并将文件添加到已发布的文件夹中?

1 个答案:

答案 0 :(得分:1)

不幸的是,我没有设法使用.targets文件。我的解决方案最终是将所需的dll复制到部署文件夹并将其包含在清单中,如下所示。

  <ItemGroup Label="FFMPEG DLL">
    <ClickOnce Include="..\packages\Accord.Video.FFMPEG.3.3.0\build\*.dll">
      <InProject>false</InProject>
      <Visible>false</Visible>
    </ClickOnce>
  </ItemGroup>

  <Target Name="BeforeBuild">
    <CreateItem Include="@(ClickOnce)" AdditionalMetadata="TargetPath=%(FileName)%(Extension);IsDataFile=false">
      <Output TaskParameter="Include" ItemName="_DeploymentManifestFiles" />
    </CreateItem>
  </Target>

  <Target Name="BeforePublish">
    <Touch Files="@(IntermediateAssembly)" />
  </Target>

这是使用.NET 4.6.1和VS2017。