Csproj 编译输出引用Nuget包内的资源文件

发布时间 2023-09-26 20:19:26作者: 唐宋元明清2188

组内有个组件,对外部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原生组件处理的好,它只有一份资源文件: