gpt4 book ai didi

.net - NuGet包显示没有依赖关系?

转载 作者:行者123 更新时间:2023-12-04 18:56:22 24 4
gpt4 key购买 nike

我尝试从.NET 4.7.2类库(VS2017)制作NuGet程序包,但是生成的NuGet程序包令人惊讶地显示没有依赖项(这是一个错误)。

我的设置是这样的:

  • 我的类库是.NET Framework 4.7.2
  • 我的类库使用另一个NuGet包(具有依赖项)。
  • 我的类(class)库在.csproj中使用packageReferences
  • 我的类(class)库包含一个适当的.nuspec文件
  • 我使用nuget.exe包来创建包

  • nuget.exe pack命令应自动填写所需的依赖关系-以前(在另一个项目中)也是如此。但是,那时我在类库中使用packages.config而不是packageReferences。这会改变什么吗?

    到底是怎么回事?

    如何强制系统在软件包中再次包含所需的依赖项?

    笔记:
  • 该软件包由TeamCity构建服务器上的MSBuild脚本构建(不带VS2017)。作为其构建逻辑的一部分,该构建脚本同时调用“nuget.exe restore”和更高版本的“nuget.exe pack”。
  • MSBuild是15.7版
  • nuget.exe是版本4.6.2
  • 最佳答案

    How can I force the system to again include the needed dependencies in my package?



    这是关于 nuget pack is ignoring dependencies when using PackageReference instead of packages.config的已知问题。

    要解决此问题,您可以使用以下解决方法,NuGet团队仍在积极努力改善此情况:

    To package your C# Class Library which manages your dependencies via PackageReference in the csproj itself,

    please add a reference to NuGet.Build.Tasks.Pack ( https://www.nuget.org/packages/NuGet.Build.Tasks.Pack/) and run msbuild /t:pack from the command line.



    我已经测试了这种解决方法,它工作正常。为确保此替代方法能正常工作,我们需要注意以下 要点:
  • 需要将nuget包NuGet.Build.Tasks.Pack添加到项目中。
  • 需要添加属性/p:PackageOutputPath="D:\TesterFolder" -p:Authors=tester
  • 使用命令 msbuild.exe /t:pack ,例如:msbuild.exe /t:pack "MyTestLibrary.csproj" /p:PackageOutputPath="D:\TestFolder" -p:Authors=tester

  • 此外,如果要使用 .nuspec文件创建nuget包,则应使用以下 .nuspec文件:
    <?xml version="1.0"?>
    <package >
    <metadata>
    <id>MyTestLibrary</id>
    <version>1.0.0</version>
    <authors>Tester</authors>
    <owners>Tester</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Package description</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2018</copyright>
    <tags>Tag1 Tag2</tags>
    <dependencies>
    <group targetFramework=".NETFramework4.7.2">
    <dependency id="Microsoft.Owin" version="4.0.0" exclude="Build,Analyzers" />
    </group>
    </dependencies>
    </metadata>

    <files>
    <file src="bin\Debug\MyTestLibrary.dll" target="lib\net472\MyTestLibrary.dll" />
    </files>
    </package>

    然后,我们可以使用 nuget.exe pack创建nuget包。但是,使用这种方法,我们必须在 .nuspec文件中手动填写所需的依赖项。

    希望这可以帮助。

    关于.net - NuGet包显示没有依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51822826/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com