Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 有没有办法将ASP.NET核心应用程序区域打包为NuGet包?_Asp.net Core_Nuget_Asp.net Core Mvc - Fatal编程技术网

Asp.net core 有没有办法将ASP.NET核心应用程序区域打包为NuGet包?

Asp.net core 有没有办法将ASP.NET核心应用程序区域打包为NuGet包?,asp.net-core,nuget,asp.net-core-mvc,Asp.net Core,Nuget,Asp.net Core Mvc,我正在开发一个ASP.NET核心应用程序,我很想将其发布为NuGet包,您可以将其添加到任何核心web项目中。该应用程序实际上完全局限于项目中的一个区域(即/Areas/MyArea),包括控制器、视图、服务类、模型、视图等,除了少数部分。真的,这些是我想神奇地添加到现有web应用程序中的部分: 这个区域和里面的一切 它在wwwroot/lib/myapp中的CSS和JS Startup类中的条目 根目录中的MyApp.json 我知道NuGet将恢复包依赖关系,但我不确定它还会如何考虑客户

我正在开发一个ASP.NET核心应用程序,我很想将其发布为NuGet包,您可以将其添加到任何核心web项目中。该应用程序实际上完全局限于项目中的一个区域(即/Areas/MyArea),包括控制器、视图、服务类、模型、视图等,除了少数部分。真的,这些是我想神奇地添加到现有web应用程序中的部分:

  • 这个区域和里面的一切
  • 它在wwwroot/lib/myapp中的CSS和JS
  • Startup类中的条目
  • 根目录中的MyApp.json

我知道NuGet将恢复包依赖关系,但我不确定它还会如何考虑客户端包。


有什么建议吗?NuGet是用于此目的的错误工具吗?

目前,无法从NuGet软件包将文件传递到web应用程序中。我认为,关于在未来实现这一点,正在进行一些讨论和工作

在我的项目中,我处理这个问题的方式是嵌入视图和所需的静态js和css资源,在project.json中这样做:

“构建选项”:{ “嵌入”:[“视图/”、“js/”、“css/**] },

我创建了一个:

然后我链接到视图中需要加载js和/或css的控制器操作

为了使嵌入式视图正常工作,我创建了RazorViewEngineOptions的扩展方法:

public static RazorViewEngineOptions AddEmbeddedViewsForCloudscribeCore(this RazorViewEngineOptions options)
{
    options.FileProviders.Add(new EmbeddedFileProvider(
            typeof(SiteManager).GetTypeInfo().Assembly,
            "cloudscribe.Core.Web"
        ));

    return options;
}
这必须通过web应用程序中的ConfigureServices调用,如下所示:

services.AddMvc()
    .AddRazorOptions(options =>
    {
        options.AddEmbeddedViewsForCloudscribeCore();

    })
    ;

这项技术在其他领域也应该适用。请注意,一件很酷的事情是,用户可以下载视图并在本地安装它们,这将覆盖嵌入式视图的使用,从而可以轻松地自定义部分或所有视图。通过覆盖视图,如果需要,还可以在本地手动安装js和css,如果需要自定义,还可以更改视图以链接到这些本地文件。最终的结果是,我的nuget拥有它所需要的一切,因此只有一些启动配置才能让事情正常运行。

几年后,在ASP.NET Core>v2.x中,通过使用Razor类库,这是可能的。

我不确定不能添加文件是否属实。一些DI容器库就是这样做的(例如StructureMap MVC),我想象使用PowerShell脚本。事实上,您可以将文件添加到包中,但目前无法将它们交付到应用程序中。NET Core nugets afaik我知道PowerShell现在是开源的,跨平台的,但不确定您是否真的可以跨平台使用nuget,至少目前这个问题是关于您可以获得的进入nuget的视图,但您无法将其导出。谢谢,Joe,这些链接真的很好。第一个正是我已经陷入的周期性文档混乱,但第二个实际上在嵌入视图方面非常有希望。也许从这里开始,静态内容就足够容易了。
services.AddMvc()
    .AddRazorOptions(options =>
    {
        options.AddEmbeddedViewsForCloudscribeCore();

    })
    ;