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
Razor 跨多个asp.net核心项目使用单个布局页_Razor_Asp.net Core_Virtual - Fatal编程技术网

Razor 跨多个asp.net核心项目使用单个布局页

Razor 跨多个asp.net核心项目使用单个布局页,razor,asp.net-core,virtual,Razor,Asp.net Core,Virtual,我在一家公司工作,该公司开发了许多网站供内部使用,但许多网站都有面向公众的部分。重要的是,我们所有的网站看起来都一样。在迁移到dotnet core时,我们发现我们不再能够使用虚拟目录来承载站点的布局页面 我们将布局页面存储在文件共享上,并在项目中使用虚拟目录引用它。这样,如果我们需要更改页脚、页眉或某些样式/js中的信息,我们可以将单个更改上传到布局页面,并且这些更改将在我们的所有站点上进行 我已经尝试过研究任何可能的方法,我唯一能想到的是一个自定义中间件,它可以从文件共享下载布局页面,并在当

我在一家公司工作,该公司开发了许多网站供内部使用,但许多网站都有面向公众的部分。重要的是,我们所有的网站看起来都一样。在迁移到dotnet core时,我们发现我们不再能够使用虚拟目录来承载站点的布局页面

我们将布局页面存储在文件共享上,并在项目中使用虚拟目录引用它。这样,如果我们需要更改页脚、页眉或某些样式/js中的信息,我们可以将单个更改上传到布局页面,并且这些更改将在我们的所有站点上进行


我已经尝试过研究任何可能的方法,我唯一能想到的是一个自定义中间件,它可以从文件共享下载布局页面,并在当前布局页面过期时更新它。

.NET Core为您提供了创建布局页面的功能。这将是一个单独的项目,您可以在其中共享视图并将其引用到其他项目。你可以找到一份工作

您可以从这两个选项中选择一个来执行此操作

  • 在每个解决方案中引用此项目。由于您的解决方案直接引用razor库,因此在公共库中所做的任何更改都将反映在每个解决方案中,而无需重新打包和发布

  • 使用
    dotnet-pack
    在共享位置创建nuget。虽然此选项将要求您每次重新打包和发布,但在某些情况下,它将是一个更有组织的解决方案。您可以进行版本设置。这意味着当您更新共享razor项目时,您将定义一个新的版本号。您可以在每个解决方案上更新此信息。这降低了项目中断的风险。假设您有5个项目,其中2个与最新更新不兼容。在这种情况下,您可以立即更新3。当您可以花时间更新这些项目以满足新的需求时,可以更新其余的2个项目


  • 谢谢,但我正在寻找一些可以更新的东西,而不必更新库和为每个项目重新发布。你不应该重新发布。您可以在所有解决方案中引用此项目。根据我对库和Nuget包的理解,在更新Nuget包/razor库之后,我必须进入引用该库的每个项目,更新包,然后重新发布以获得所做的更改。我错了吗?我已经指出了两种选择。你所说的对第二种选择是正确的。如果使用引用库的第一个选项,则不必更新任何内容。您的更改将直接反映在所有解决方案中。我刚刚更新了我的问题。我相信选项1将满足您的需求。我只是为其他人提供了第二种选择。