组内有个组件,对外部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原生组件处理的好,它只有一份资源文件:
标签:Web,文件,包内,Csproj,WebView2,Nuget,Microsoft,资源 From: https://www.cnblogs.com/kybs0/p/17731063.html