【问题标题】:No files appear from Nuget package when imported导入时 Nuget 包中没有文件出现
【发布时间】:2021-07-13 08:49:21
【问题描述】:

我们希望使用 Nuget 在存储库之间共享代码。

我创建了一个 Nuget 包,其中包含指定子目录中的所有源代码。 在 7Zip 中,我可以浏览它并查看所有文件。

我需要将它导入另一个项目,维护目录结构以便项目可以构建、调试等。

所以我有:

../repo/applications/CommonCore

但是 CommonCore 来自于导入的 nuget 包。

当我导入这个 Nuget 包时,似乎没有文件存在,也没有明显的方法可以控制它将转到哪个目录。

我已经阅读了关于使用 contentFiles 标签来指定所有源文件的信息,但这对我来说是不可行的,因为在不同的子目录中有数百个文件,所以我尝试使用如下格式:

<contentFiles>
    <files include="Fabric\*.*" buildAction="Content" copyToOutput="true" />
</contentFiles>

<files>
    <file src="*.*" target="contentFiles\Fabric" />  
</files>

但这并没有帮助。

我是否误解了 Nuget 的工作原理?还是我执行不正确?

【问题讨论】:

    标签: nuget nuget-package-restore nuget-spec


    【解决方案1】:

    NuGet 包是为二进制依赖而设计的,因此这里的正常做法是从一个存储库构建代码,在 NuGet 包中发布生成的二进制文件(而不是源代码),然后从其他项目中引用该包。

    你可以在 NuGet 包中包含任何你喜欢的东西,这样就可以添加源文件,但试图将它们用作一种实现源依赖的方式并不是它们的设计目的。

    【讨论】:

    • 我知道它们最初不是为它设计的,但从查看文档看来他们可以做到
    • @Stefan 您问您是否误解了 NuGet 的工作原理,如果您尝试将它用于源依赖项,那么答案是肯定的,您误解了它的工作原理。您的用例并不罕见,这正是 NuGet 专为该用例而设计的
    • 对不起,如果我的情况正是用例 nuget 是为我如何误解它的工作原理而设计的?我现在包含了这些文件,但我需要它们转到特定目录,尽管各种答案说您可以更改目标目录,但它们似乎总是转到包目录。
    • @Stefan 我的意思是您在存储库之间共享代码的用例。实现它的方法是从一个存储库构建代码,将生成的二进制文件发布到 NuGet 包中,然后通过 PackageReference 在另一个存储库中使用该包(而不是尝试将源代码本身放入 NuGet 包)
    猜你喜欢
    • 1970-01-01
    • 2011-09-11
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    相关资源
    最近更新 更多