組內有個組件,對外部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原生組件處理的好,它只有一份資源文件: