【问题标题】:Nuget Packages not installing anything in .net core appNuget Packages 未在 .net 核心应用程序中安装任何内容
【发布时间】:2020-08-12 11:11:16
【问题描述】:

我正在尝试通过 Nuget 在 .net 核心应用程序中安装 knockoutjs 和 typescript。

它显示在 Packages 中,但没有像以前在 asp.net 中那样在脚本文件夹中安装任何东西。

我错过了什么?

【问题讨论】:

    标签: visual-studio .net-core knockout.js nuget


    【解决方案1】:

    TL;DR ASP.NET Core 不再以这种方式工作(将 javascript/css 内容复制到项目中的包)。您需要调整您的工作流程。

    .NET Core 项目只适用于 SDK 风格的项目,SDK 风格的项目只使用 NuGet 的PackageReference,而不是packages.configdocs on migrating from packages.config to PackageReference 列出了一个 package compatibility issue as not supporting the content folder,这就是 packages.config 在安装包时将这些资产复制到您的项目中的方式。

    我找不到针对 ASP.NET Core 应用程序的文档列表推荐,但我的理解是您可以使用 LibMan 或使用 NPM,这与 Web 开发行业之外的其他部分基本一致.NET 一直在做。如果您使用新项目模板创建新的 ASP.NET Core Angular 或 ASP.NET Core React 应用程序,您将看到它们创建了一个使用 npm 和所有官方 react/angular CLI 工具的ClientApp 文件夹。 MVC 模板有 jQuery 和 bootstrap 的副本,但没有明确的方法来更新它们。

    【讨论】:

      【解决方案2】:

      可能有些不同步,请从解决方案中删除包文件夹并再次恢复包。它将解决问题。还要检查输出窗口,它会显示错误列表。

      【讨论】:

      • 无法从 Visual Studio UI 中删除 Packages 文件夹,并且 Windows 资源管理器中也没有 packages 文件夹。
      【解决方案3】:

      它显示在包中,但没有在脚本文件夹中安装任何东西 和之前在 asp.net 中一样。

      首先,我同意zivkan。这是PackageReference Nuget Management format 的一个功能。

      VS 有两种格式来管理 nuget 包:Packages.configPackageReference

      由于新的sdk格式项目(Net CoreNet Standard)只使用PackageReference来管理nuget包,与packages.config package management format反映的效果会有很大的不同。

      当您将 nuget 包中的 Content 文件与 PackageReference 一起使用时,它将丢失 Scripts 文件夹中的文件。

      正如this document所说,有这样的兼容性问题。

      其实,你可以输入C:\Users\xxxx\.nuget\packages\knockoutjs\3.5.1,发现有一个名为Content的文件夹,Nuget会在你安装这个nuget时将该文件夹的内容复制到你的项目中包。

      但是Content文件夹可以通过Packages.config格式识别,据我所知,ContentFiles文件夹是在PackageReference中使用的将内容添加到您的项目中。因此,在您的情况下,nuget 包应同时包含 ContentFiles 文件夹。见this official document

      但是knockoutjs nuget 包没有 contentfiles 文件夹。这就是为什么带有packages.config 的 net framework 项目有内容文件,而新的 sdk 项目没有。

      并且这个行为改变只有在你创建nuget包的时候才会生效,所以不能做任何的改变,只能联系包的作者做这个修改,并让他尽快添加这个功能,应用到新的SDK格式项目中。

      建议

      所以现在,你可以试试这些:

      1)您可以通过添加现有项目手动将C:\Users\xxxx\.nuget\packages\knockoutjs\xxxx\Content中的内容文件添加到项目中。

      2)回滚以使用带有packages.config 的Net Framework 项目。

      3) 联系作者this link

      【讨论】:

        猜你喜欢
        • 2018-07-12
        • 2017-09-08
        • 2021-05-28
        • 2017-03-21
        • 2016-09-16
        • 1970-01-01
        • 1970-01-01
        • 2019-01-26
        • 2021-08-12
        相关资源
        最近更新 更多