ClickOnce 在发布时包含导入的 .targets (FFMPEG)
ClickOnce include imported .targets when publishing (FFMPEG)
我有一个通过 ClickOnce 发布的 WinForms 应用程序。此应用程序包括作为参考包含的 Accord FFMPEG 库。
FFMPEG NuGet 包文件夹包含一个 .targets 文件,其中包含正常运行 FFMPEG 库所需的各种 dll (avcodec.dll、avformat.dll、avutil.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 发布应用程序时,这些文件不包含在发布的文件夹中。有没有办法 运行 导入项目任务并将文件添加到发布的文件夹中?
不幸的是,我没能使用 .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。
我有一个通过 ClickOnce 发布的 WinForms 应用程序。此应用程序包括作为参考包含的 Accord FFMPEG 库。
FFMPEG NuGet 包文件夹包含一个 .targets 文件,其中包含正常运行 FFMPEG 库所需的各种 dll (avcodec.dll、avformat.dll、avutil.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 发布应用程序时,这些文件不包含在发布的文件夹中。有没有办法 运行 导入项目任务并将文件添加到发布的文件夹中?
不幸的是,我没能使用 .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。