Nuget 输出资源文件

打印 上一主题 下一主题

主题 837|帖子 837|积分 2526

组件经常有一些文件/环境依赖,提升内聚,可以将文件(exe、dll等)放在到Nuget包内自动输出、启动相应的环境
通过csproj文件配置,Nuget包自动输出到编译目录下。

如上图,vcomp140d.dll是Nuget包内的文件。项目NugetContentFilesDemo引用NugetContentFiles包后,编译时能在输出目录下自动生成vcomp140d.dll文件。
方案一 通过ContentFiles输出

设置文件属性为生成内容、复制输出到目录 ,再补充PackageCopyToOutput属性
  1. 1     <ItemGroup>
  2. 2         <Content Include="vcomp140d.dll">
  3. 3             <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  4. 4             <PackageCopyToOutput>true</PackageCopyToOutput>
  5. 5         </Content>
  6. 6     </ItemGroup>
复制代码
属性解读:

  • CopyToOutputDirectory,在项目NugetContentFilesDemo通过项目方式引用时,能编译输出vcomp140d.dll文件
  • PackageCopyToOutput,在项目NugetContentFilesDemo通过Nuget方式引用时,能自动编译输出vcomp140d.dll文件
Content,默认是输出到content;contentFiles下。

再看nuspec,有下面一行配置,会将contentFiles下的vcomp140d.dll文件复制到输出目录。

然后NugetContentFilesDemo引用此Nuget包,编译下就能看到自动输出的文件。
vcomp140d.dll文件是自动输出了。但Nuget项目编译时,会有警告:“dll文件,请移动到lib文件夹”

 这是啥意思呢?按官方NuGet 警告 NU5100 | Microsoft Learn,dll文件需要放在lib文件夹下,才符合Nuget包结构及规范。
有个属性NoPackageAnalysis,
true
设置后可以跳过检查、规避相应的警告。但这样总有风险,Nuget包真有问题后面也不会有警告了。
另外,输出到lib文件夹确实是合理的,现在content以及contentFiles俩处文件夹,都有vcomp140d.dll文件,导致Nuget包大了点。都是有追求的程序员,能解决咱们一定要找办法
方案二 通过Lib文件夹输出

使用Pack打包并通过PackagePath,添加文件到Nuget包指定位置
[code]1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连全瓷种植牙齿制作中心

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表