You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Visual Studio 2022打包NuGet包时未包含解决方案内依赖DLL的问题求助

Visual Studio 2022打包NuGet包时未包含解决方案内依赖DLL的问题求助

各位大佬,我最近遇到个NuGet打包的棘手问题,折腾好几天了,想请教下大家怎么解决:

  • 我有一个.NET Core 6的类库解决方案,主项目是XxxApi,它依赖同解决方案里的另外两个类库YyyRepositoryZzzShared
  • 我把XxxApi打包成NuGet包后,解压发现只有XxxApi.dlllib/net6.0目录里,虽然nuspec里已经声明了那两个依赖,但客户端引用这个包时会报错找不到这两个DLL
  • 目前只有把YyyRepositoryZzzShared也单独打包成NuGet包放到本地源,客户端才能正常构建,但这两个DLL本来就是和XxxApi绑定在一起的,单独打包完全没必要啊

我当前使用的nuspec内容如下:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>XxxApi</id>
    <version>1.0.0</version>
    <title>API to XXX database</title>
    <authors></authors>
    <description>A programmable Api that can be used to query and update tables in the XXX database.</description>
    <copyright>xxx (c) 2023</copyright>
    <tags>API XXX Database</tags>
    <dependencies>
      <group targetFramework="net6.0">
        <dependency id="YyyRepository" version="1.0.0" exclude="Build,Analyzers" />
        <dependency id="ZzzShared" version="1.0.0" exclude="Build,Analyzers" />
        <dependency id="Microsoft.EntityFrameworkCore" version="7.0.5" exclude="Build,Analyzers" />
        <dependency id="Microsoft.EntityFrameworkCore.SqlServer" version="7.0.5" exclude="Build,Analyzers" />
        <dependency id="Microsoft.Extensions.Configuration.FileExtensions" version="7.0.0" exclude="Build,Analyzers" />
        <dependency id="Microsoft.Extensions.Configuration.Json" version="7.0.0" exclude="Build,Analyzers" />
      </group>
    </dependencies>
  </metadata>
  <files>
    <file src="C:\DEV\Dis\XxxApi\XxxbApi\bin\Release\net6.0\win-x64\XxxApi.dll" target="lib\net6.0\XxxApi.dll" />
  </files>
</package>

我试过的操作和遇到的困境:

  • 手动编辑nuspec的<files>节点添加那两个DLL,但下次打包时这些修改就丢了,因为nuspec是自动生成的
  • 查了不少资料,大多是老版本VS/.NET的解决方案,感觉不太适用现在的VS2022和.NET 6环境
  • 还有人说要一个DLL对应一个NuGet包,但这对我的场景来说完全不合理啊

按道理来说,打包NuGet包时默认应该把同解决方案里的依赖DLL包含进去才对吧?有没有大佬遇到过同样的问题,知道怎么才能把YyyRepositoryZzzShared的DLL直接打包到XxxApi的NuGet包里,而且不用每次手动改nuspec?

备注:内容来源于stack exchange,提问作者Mark Worrall

火山引擎 最新活动