翼度科技»论坛 编程开发 .net 查看内容

Nuget 输出资源文件

8

主题

8

帖子

24

积分

新手上路

Rank: 1

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

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

设置文件属性为生成内容、复制输出到目录 ,再补充PackageCopyToOutput属性
  1. 1     2         3             PreserveNewest4             true5         6     
复制代码
属性解读:

  • 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

举报 回复 使用道具