【问题标题】:How to copy Nuget Package Dependencies如何复制 Nuget 包依赖项
【发布时间】:2019-06-04 17:27:22
【问题描述】:

我们目前正在重构一个旧的 win 表单应用程序,它使用一个框架作为整个应用程序的引用项目。我对 nuget 和 .net 还很陌生,所以希望您不要介意我的新手问题。

我们从 csproj (Syncing.nupgk) 创建了一个 nuget 包。该软件包引用了其他软件包,例如 Newtonsoft 或 Consul。当我构建项目时,我的 syncing.dll 被复制到 win forms 项目的 bin 文件夹中,但其他 dll(newtonsoft.dll、consul.dll)被复制到外部具有结构 lib\net45 等的包文件夹中。

我如何告诉 Visual Studio 我还需要项目 bin 文件夹中的 newtonsoft.dll,因为它是我的 syncing.dll 的依赖项

谢谢!

【问题讨论】:

  • 这就是 NuGet 的工作方式,将包拉到包文件夹中。您是否尝试过构建您的项目?我希望看到 DLL 出现在你的 bin 文件夹中。
  • 项目构建良好,只是它抛出 System.IO.FileNotFoundException 因为它找不到不在 bin 文件夹中的 consul 和 newtonsoft dll。它是一个 dotnet 框架 4.6.1 类库。

标签: c# nuget


【解决方案1】:

我通常为此使用nuspec 文件。在您的情况下,您将拥有Syncing.csproj.nuspec,它看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>Syncing</id>
    <authors></authors>
    <owners></owners>
    <requireLicenseAcceptance>true</requireLicenseAcceptance>
    <licenseUrl></licenseUrl>
    <projectUrl></projectUrl>
    <iconUrl></iconUrl>
    <description></description>
    <language></language>
    <tags></tags>
    <dependencies>
      <group targetFramework=".NETStandard2.0">
        <dependency id="Newtonsoft.Json" version="12.0.2" exclude="Build,Analyzers" />
        ...
      </group>
    </dependencies>
  </metadata>
</package>

您可以查看这两个链接以获取更多信息: - https://docs.microsoft.com/en-us/nuget/reference/nuspec - 这就是我使用 .nuspec 文件在https://github.com/borkke/opentracing-csharp-mongo/blob/master/src/OpenTracing.Contrib.Mongo/OpenTracing.Contrib.Mongo.csproj.nuspecnuget上发布仪器库的方式@

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-19
    • 2020-05-15
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 2017-08-03
    相关资源
    最近更新 更多