跨项目共享母版页的最佳方式是什么

发布于 2024-07-04 00:47:46 字数 117 浏览 6 评论 0原文

假设您有两个独立的 ASP.NET Web 应用程序项目,它们都需要使用公共母版页。

在项目之间共享 MasterPage 而无需重复代码的最佳方式是什么? 最好不必诉诸源代码控制或文件系统黑客。

Suppose you have two seperate ASP.NET Web Application projects that both need to use a common MasterPage.

What's the best way to share the MasterPage across projects without having to duplicate code? Preferably without having to resort to source control or file system hacks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

江挽川 2024-07-11 00:47:46

使用符号链接

符号链接是指向另一个文件的文件系统对象
系统对象。 所指向的对象称为目标。
符号链接对用户是透明的; 链接显示正常
文件或目录,并且可以由用户或应用程序执行
以完全相同的方式。

Use a symbolic link:

A symbolic link is a file-system object that points to another file
system object. The object being pointed to is called the target.
Symbolic links are transparent to users; the links appear as normal
files or directories, and can be acted upon by the user or application
in exactly the same manner.

遮了一弯 2024-07-11 00:47:46

我不明白为什么你会想在不同的项目中使用相同的标记,如果你这样做,我不知道一个简单的方法。

然而,对于代码,显然您可以编写一个继承自

System.Web.UI.MasterPage

Put 的代码文件,在其中的所有母版页中放入您想要的任何逻辑。 将其构建为您出色的 dll,然后将其包含在您的项目中。

I cant see why you would want to have the same markup accross different projects, if you do, I dont know an easy way.

However with code, obviously you can write a code file which inherits from

System.Web.UI.MasterPage

Put in whatever logic you want in all your master pages in there. Build it as your awesome dll then just include that in your projects.

懒的傷心 2024-07-11 00:47:46

AFAIK 没有优雅的方法来完成你想要的事情.. VS 最终总是会复制它。

我认为说实话,这可能不是一个好主意..显然您想共享最低的通用代码,但是整个MasterPage?..听起来您可能会自找麻烦,因为一个微小的更改可能会对一个人产生如此大的影响或更多应用程序..

我建议将好的功能分离到组件/控件中并部署它们。

AFAIK there is no elegant way to do what you are looking to.. VS will always end up copying it.

I think to be honest it may not be a great idea.. Obviously you want to share the lowest common code, but a whole MasterPage?.. Sounds like you could be asking for trouble since one minor change could have such an impact on one or more applications..

I would suggest instead seperating out the good bits of functionality into components/controls and deploying them.

云朵有点甜 2024-07-11 00:47:46

在源代码管理中保留一个主副本,并让您的源代码管理系统来处理它。

Keep a primary copy in source control, and let your source control system worry about it.

一杆小烟枪 2024-07-11 00:47:46

假设您可以为所有项目创建一个公共存储库(例如,源代码控制树中的公共文件夹),则可以使用相对路径将母版页添加为链接。

但是,IIRC、Visual Studio 会制作从外部路径添加的文件的本地副本。 您可能必须对解决方案/项目文件进行文本编辑才能添加链接文件。

当然,这是假设您使用“Web 应用程序”格式。 旧版 VS“网站”没有项目文件,并且依赖于网站文件夹中的所有文件。

Supposing you can create a common repository for all your projects (a common folder in your source control tree, for example), you could add the master pages as links by using relative paths.

However, IIRC, Visual Studio makes local copies of files added from external paths. You might have to text-edit the solution/project file to add the linked files.

This, of course, is assuming you use "Web Application" format. Older VS "Web Sites" do not have project files and rely on having all files within the site folder.

心在旅行 2024-07-11 00:47:46

来自 K. Scott Allen 的 ASP.Net 母版页:提示、技巧和陷阱 文章, “共享母版页”:

第一种选择是将共享母版页文件复制到
IIS Web 服务器上的单个位置。 然后每个应用程序都可以创建
虚拟目录作为子目录并指向虚拟目录
到母版页的真实目录。 然后应用程序可以设置
将页面的 MasterPageFile 属性更改为虚拟的名称
目录,加上母版页文件的名称。 当我们放下一个
更新母版页文件到真实目录下,新的母版页
将立即出现在所有应用程序中。

第二种方法是使用版本控制系统来共享一组
跨多个项目的母版页文件。 大多数源代码控制/
版本控制系统支持某种程度的“共享”功能,
其中一个文件或文件夹可以出现在多个项目中。 当一个
开发人员签入更新的母版页文件,其他项目
会立即看到变化(尽管这种行为通常是
可配置)。 在生产和测试中,每个应用程序都需要
重新部署以显示更新母版页。

最后,ASP.NET 2.0 中的 VirtualPathProvider 可以提供以下文件:
文件系统上不存在。 使用 VirtualPathProvider,一组
的母版页可以存在于所有应用程序的数据库表中
使用。 有关 VirutalPathProvider 的优秀文章,请参阅“虚拟化内容访问:为您的 Web 提供服务ZIP 文件中的站点”。

From K. Scott Allen's ASP.Net Master Pages: Tips, Tricks, and Traps article, on "Sharing Master Pages":

The first alternative is to copy shared master page files into a
single location on an IIS web server. Each application can then create
a virtual directory as a subdirectory and point the virtual directory
to the real directory of master pages. The applications can then set
the MasterPageFile property of a page to the name of the virtual
directory, plus the name of the master page file. When we drop an
updated master page file into the real directory, the new master page
will appear in all the applications immediately.

A second approach is to use a version control system to share a set of
master page files across multiple projects. Most source control /
version control systems support some level of “share” functionality,
where a file or folder can appear in more than one project. When a
developer checks in an updated master page file, the other projects
will see the change immediately (although this behavior is generally
configurable). In production and test, each application would need to
be redeployed for the update master page to appear.

Finally, the VirtualPathProvider in ASP.NET 2.0 can serve files that
do not exist on the file system. With the VirtualPathProvider, a set
of master pages could live in database tables that all applications
use. For an excellent article on the VirutalPathProvider, see “Virtualizing Access to Content: Serving Your Web Site from a ZIP File”.

眼眸印温柔 2024-07-11 00:47:46

我一直在努力完成同样的事情。 我研究了几个解决方案,但我认为使用虚拟目录可能是共享母版页的最佳方法。

您可以查看以下几个来源。

接近末尾的第三个项目符号文章还告诉您共享母版页的可能方法。

I have trying to accomplish the same thing. I look into a couple of solutions but I think using a virtual directory is probably the best way to share master pages.

Here are a couple sources that you can look at.

The third bullets near the end the article tells you of possible ways you can share Masterpages also.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文