【问题标题】:NuGet package contentFiles artifacts installed as links in ASP.NET Core MVC project在 ASP.NET Core MVC 项目中作为链接安装的 NuGet 包 contentFiles 工件
【发布时间】:2018-02-26 18:16:31
【问题描述】:

我们有一个内部 JavaScript 库,希望在多个项目之间共享。实际上我们已经通过文件复制来共享它,但这(可以预见)导致了代码的多个分支。

消费项目是“完整”的 ASP.NET(MVC 和 Web 窗体)和 ASP.NET Core MVC 的混合体。 (我打算创建两个单独的包。)

安装到 ASP.NET 项目中似乎可以正常工作,但我在使用 ASP.NET Core 时遇到问题。

最初,我将所有工件都放在 files 元素中,而消费项目中根本没有出现任何内容。重新阅读文档后,我意识到 ASP.NET Core 项目将使用 PackageReference ...所以我必须使用 contentFiles 元素而不是(或除了)files 元素。

我创建了一个 contentFiles 文件夹和一个脚本,用于将所需文件从源项目文件夹结构复制到 contentFiles/any/any/wwwroot/lib/ourAwesomeWidget,并相应地修改了包清单。

这行得通。有点。该软件包似乎可以正确构建。这些文件确实被添加到消费项目中,但它们被添加为链接;实际文件(链接目标)驻留在我的本地包缓存中。

包清单的相关部分是:

<metadata minClientVersion="3.3">
    ...
    <contentFiles>
        <files include="**/*" buildAction="Content"  
               copyToOutput="true" flatten="false" />
    </contentFiles>
</metadata>
<files>
    <file src="contentFiles\**" target="contentFiles" />
</files>

部分问题是我发现有关contentFiles 的文档不是很清楚。所有示例都显示了单个 file 元素......但 files 元素上的 include 属性是必需的,因此不清楚单个 file 元素甚至会做什么。

有没有办法将实际文件(不是链接)添加到消费项目中?或者,有没有办法让包安装为“普通”包(而不是PackageReference)?

更新: 我做了一些进一步的挖掘,找到了this answer by @Martin to a similar question——但他在我有机会更新之前回答了这个问题。
这种行为(将文件添加为链接)似乎是设计使然。

我觉得这非常不令人满意,因为(正如@Martin 指出的那样),我们的 JavaScript 库在消费项目的开发过程中将不可用。

但我的问题的第 2 部分仍然有效。根据the docs

默认情况下,PackageReference 用于面向 Windows 10 Build 15063(Creators Update)及更高版本的 .NET Core 项目、.NET Standard 项目和 UWP 项目。

有没有办法触发非默认行为,即允许 .NET Core 项目通过 PackageReference 以外的方式使用包?

【问题讨论】:

    标签: asp.net-core nuget asp.net-core-mvc nuget-package


    【解决方案1】:

    contentFiles 应该作为链接添加。 contentFiles 部分控制为这些文件生成的 msbuild 项到 obj\projectname.csproj.nuget.g.props 文件中。

    copyToOutput="true" 将导致项目被复制到输出和发布目录。但是,在开发期间运行应用程序时,这对您没有帮助,因为它将从项目目录而不是输出目录运行。

    考虑consuming client libraries via npm(因为不推荐使用 bower)。

    【讨论】:

      猜你喜欢
      • 2015-12-25
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 2017-12-11
      • 2013-11-11
      相关资源
      最近更新 更多