2017-07-31 2 views
0

私はClickOnce経由で公開しているWinFormsアプリケーションを持っています。このアプリケーションには、Accord FFMPEGライブラリが含まれています。ClickOnce公開時にインポートされたターゲットを含める(FFMPEG)

FFMPEG NuGetパッケージフォルダには、FFMPEGライブラリ(avcodec.dll、avformat.dll、avutil.dll)が正しく動作するために必要なさまざまなdllファイルが含まれている.targetsファイルが含まれています。これらは、プロジェクトをビルドするときに\ binフォルダにコピーされます。これは、.csprojにこの行を含めて行われます:ClickOnceのを介してアプリケーションを公開するときに

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')" 

はしかし、これらのファイルは、公開されたフォルダに含まれていません。プロジェクトのインポートタスクを実行し、ファイルを公開フォルダに追加する方法はありますか?

答えて

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を使用しています。

関連する問題