knockout.js Nuget Packages未在.net核心应用程序中安装任何内容

x9ybnkn6  于 2022-11-23  发布在  .NET
关注(0)|答案(3)|浏览(137)

我正试图通过Nuget在一个.net核心应用程序中安装knockoutjs和typescript。
它显示在Packages中,但不像以前在ASP.NET中那样在scripts文件夹中安装任何内容。

我错过了什么?

7gcisfzg

7gcisfzg1#

NET核心不再以那种方式工作(将javascript/css内容复制到您的项目中)。您需要调整您的工作流。
. NET核心项目只能在SDK风格的项目中工作,而SDK风格的项目只能使用NuGet的PackageReference,而不是packages.configdocs on migrating from packages.config to PackageReference列出了一个包兼容性问题,因为它不支持content文件夹,这就是packages.config中这些资源在包安装时复制到项目中的方式。
我找不到一个列出ASP.NET核心应用程序建议的文档,但我的理解是,您可以使用LibMan,或者使用NPM,这基本上与. NET之外的Web开发行业的其他人一直在做的事情是一致的。如果您使用新的项目模板创建新的ASP.NET核心Angular或ASP.NET核心React应用程序,您将看到他们创建了一个ClientApp文件夹,其中使用了npm和所有官方的react/angular CLI工具。

axkjgtzd

axkjgtzd2#

可能存在一些不同步,请从解决方案中移除包文件夹,然后再次还原包。这样可以修复此问题。还要检查输出窗口,该窗口将显示错误列表。

o2g1uqev

o2g1uqev3#

它显示在Packages中,但不像以前在ASP.NET中那样在scripts文件夹中安装任何内容。

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

VS有两种管理Nuget包格式:软件包.config软件包引用
由于新的sdk格式项目(Net CoreNet Standard)只使用PackageReference来管理nuget包,因此与packages.config package management format反映的效果会有很大的不同。
当您将nuget套件中的Content档案与PackageReference搭配使用时,将会遗失Scripts文件夹中的档案。
正如这份文件所说,它有这样的兼容性问题。

实际上,您可以输入C:\Users\xxxx\.nuget\packages\knockoutjs\3.5.1并找到一个名为Content的文件夹,当您安装此nuget包时,Nuget会将该文件夹的内容复制到您的项目中。

但是Packages.config可以识别Content文件夹,而且据我所知,PackageReference中使用了ContentFiles文件夹来将内容添加到您的项目中,所以在您的情况下,nuget包中应该同时包含ContentFiles文件夹,请参见此正式文件。
但是knockoutjs nuget包没有contentfiles文件夹,这就是为什么net framework的packages.config项目有内容文件,而新的sdk项目没有。

而且此行为更改仅在您创建nuget包时生效,因此您不能进行任何更改,您只能联系包的作者进行此修改,并让他尽快添加此功能以应用于新的SDK格式项目。
建议

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

1)您可以通过添加现有项手动将C:\Users\xxxx\.nuget\packages\knockoutjs\xxxx\Content中的内容文件添加到项目中。
**2)**回滚以使用带有packages.config的Net Framework项目。
**3)**通过this link与作者联系。

相关问题