.net-core - Nuget 包创建不包括引用的 dll

标签 .net-core nuget nuget-package packagereference

我使用的是 visual studio 2019 社区版和包管理器控制台。我正在使用 .net core 2.2 并启用了包引用。我希望能够创建一个单独的 nuget 包 coreproj1,其中还将包含 Coreproj2 和 coreProj3 的 dll,而不必打包 CoreProj2 和 CoreProj3,因为有很多项目并且将它们全部打包是不可行的。我在网上看过,但找不到明确的解决方案,因为没有多少人使用包引用

  CoreProj1 references CoreProj2 and CoreProj3 
  CoreProj2 and CoreProj3 do not reference anything

我正在使用

   dotnet pack "full project path" --output "outputPath" 

当我尝试安装包时出现以下错误(我对 CoreProj3 也出现同样的错误)

  Error NU1101  Unable to find package CoreProj2. No packages exist with this id in source(s): LocalPackages, Microsoft Visual Studio Offline Packages, nuget.org,  TestNuget   source\repos\TestNuget\TestNuget\TestNuget.csproj   1

最佳答案

包括使用 MSBuild 包目标的引用项目程序集(dotnet pack 实际上只是 dotnet msbuld -t:pack 的别名)is not supported . nuget.exe pack有一个 IncludeReferencedProjects可以按您的意愿行事的参数,但对于使用 PackageReference 的项目无法正常工作或 SDK 样式的项目(始终为 PackageReference )。

一种可能的解决方法是创建一个构建脚本,该脚本首先构建所有项目,然后将所有程序集复制到 nuget 包布局中,并使用 nuget.exe pack打包该目录布局。

另一种解决方法是使用 nuspec一堆 <file src="..." target="lib\<tfm>\">告诉 NuGet 从编译位置打包所有程序集的元素。

另一种解决方法是使用 MSBuild 扩展性来告知 NuGet 的 MSBuils 目标您希望在构建之后但在打包之前打包的程序集。上面链接的线程中有一些评论给出了如何完成的示例。

关于.net-core - Nuget 包创建不包括引用的 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56295590/

相关文章:

.net-core - Dotnet 还原错误 "error NU3004: The package is not signed."

c# - HRESULT : 0x80131040 - Microsoft. WindowsAzure. 未找到存储

typescript - 如何在 VS2017 中使用通过 NuGet 安装的 Typescript 定义(类型)文件?

c# - 为客户将目标打包到 nuget 中

nuget - 为什么 NuGet 将包放在 "solution level"?

c# - 原始痴迷 - 具有自动增量的强类型 int ID

.net - Visual Studio : How to change target framework used by editor?

c# - 为什么使用 JWT 时 UserManager.GetUserAsync 会返回 null?

c# - Microsoft.WindowsAzure.ServiceRuntime 的 NuGet 包在哪里?

c# - 无法让 TinyMCE.MVC.Jquery.Sample 工作