gpt4 book ai didi

asp.net-mvc - 跨项目共享 Razor View

转载 作者:行者123 更新时间:2023-12-02 01:19:52 24 4
gpt4 key购买 nike

我想在多个 ASP.NET MVC 项目之间共享布局(页眉、导航和页脚 Razor View )。我怎样才能做到这一点?

我可以创建自定义 NuGet package 来包装常见的 Razor 文件、图像和 CSS?

最佳答案

我现在已经通过 Google 不止一次遇到过这个问题,尽管我会提出另一个解决方案(在我看来,它比使用预编译器和包更安全、更易于管理)。

事实上,我已经无耻地逐字逐句地抄取了 Erik Phillips 的答案,所以请相信他。

what he said... (he says this for javascript files in particular, but this works just as well with any other types) source answer

这是我的建议:

右键单击解决方案并创建一个名为Common Javascript Files(或任何您喜欢的名称)的新解决方案文件夹

New Solution Folder

Common Javascript Files Solution Folder

右键单击解决方案,单击在 Windows 资源管理器中打开文件夹,或者手动导航到其他版本的 Visual Studio :(

Open Folder In Windows Explorer

在解决方案目录中,创建一个与解决方案文件夹同名的目录(解决方案文件夹通常与源代码级别的目录不匹配,但这是为了理智起见)。

Common Javascript Files Directory

在此新目录中,添加需要在解决方案之间共享的文件。

Add Javascript Files To Directory

在 Visual Studio 中,单击解决方案文件夹并选择添加 - 现有项

Visual Studio Add - Existing Itme

在文件选择对话框中,导航到先前创建的目录,选择添加到该目录的文件,然后单击添加

Select Files To Add

Solution Folder Files

在每个需要共享文件的项目中,右键单击该项目(或项目内的目录),然后单击添加 - 现有项目

Project Add Existing Item

导航到共享目录,选择文件并单击下拉箭头,然后单击添加为链接

Add As Link

现在,项目中的文件本质上是解决方案文件夹中文件的快捷方式。但它们被视为项目中的实际文件(这包括.CS或Visual Basic文件,它们将被编译为项目中实际存在的文件)。

Linked Files

优点

  • 文件在设计时真正跨项目共享
  • 只能添加每个项目所需的文件,不是全有或全无
  • 不需要在 IIS 中进行任何配置(虚拟目录等)
  • 如果解决方案位于 TFS 源代码控制中,您可以将目录添加到 TFS 源,共享文件将受到源代码控制。
  • 通过在项目中选择文件来编辑文件,将编辑实际文件。
  • 删除链接文件不会删除该文件。
  • 这不限于 JS 文件,链接文件可以是您可能需要的任何文件(图像、Css、Xml、CS、CSHTML 等)

缺点

  • 每个部署都有自己的文件。
  • 了解解决方案文件夹不是解决方案目录中存在的目录时,有一个小的学习曲线。

AND - stealing from one more answer to consolidate info, here's how you get these to output for debugging (taken from comment below the scraped answer, link to blog post for build target for output for debugging)

将此添加到每个使用项目的 .csproj 文件中:

  <Target Name="CopyLinkedContentFiles" BeforeTargets="Build">
<Copy SourceFiles="%(Content.Identity)"
DestinationFiles="%(Content.Link)"
SkipUnchangedFiles='true'
OverwriteReadOnlyFiles='true'
Condition="'%(Content.Link)' != ''" />
</Target>

关于asp.net-mvc - 跨项目共享 Razor View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20631538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com