Csproj 編譯輸出引用Nuget包內的資源文件

組內有個組件,對外部Nuget包Microsoft.Web.WebView2封裝。

因爲WebView2對自身有一些資源文件依賴,資源文件需要隨編譯輸出到啓動目錄,WebView2直接加載啓動目錄下相應文件。

 如果上層應用同時引用Microsoft.Web.WebView2,自然會輸出對應的資源文件。

但應用層很容易遺漏對Microsoft.Web.WebView2的引用依賴,並且強依賴有點耍流氓。

翻山越嶺找技術,Nuget官方倉庫也有遇到類似的問題:How to copy non assembly files to output directory of application · Issue #8843 · NuGet/Home (github.com)

我總結了下,以內容生成、加個PackageCopyToOutput,就行了。

 1   <ItemGroup>
 2       <Content Include="runtimes\win-arm64\native\WebView2Loader.dll">
 3           <PackageCopyToOutput>true</PackageCopyToOutput>
 4       </Content>
 5       <Content Include="runtimes\win-x64\native\WebView2Loader.dll">
 6           <PackageCopyToOutput>true</PackageCopyToOutput>
 7       </Content>
 8       <Content Include="runtimes\win-x86\native\WebView2Loader.dll">
 9           <PackageCopyToOutput>true</PackageCopyToOutput>
10       </Content>
11   </ItemGroup>

不過這種實現有點缺陷,有雙倍的資源文件:

沒有Microsoft.Web.WebView2原生組件處理的好,它只有一份資源文件:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章