9

在我们的 VS2012 解决方案中,我们有多个 Web 应用程序都需要 javascript。我们使用 Telerik 的 Kendo UI for MVC4 ASP.Net 结合 jQuery 和 TypeScript 开发了一个单页应用程序。

由于有多个 Web 应用程序,我们创建了很多冗余的 TypeScript 和 Javascript。更改代码是一种拖累。我们必须一直同步所有 Web 应用程序的所有代码,这至少可以说很烦人。

我已经研究了这个问题的几种解决方案,但结果都是空的。以下是我调查的一些场景:

Visual Studio 中的链接

可以按住 Alt 键将整个“文件夹”从一个项目拖到另一个项目。这会导致该目标项目中源项目中所有文件的链接。这在 Visual Studio 中可以正常工作以进行编辑。这里的问题是,在运行时,应用程序需要文件位于正在执行的 Web 应用程序层次结构内的磁盘位置。因为它们是指向另一个位置的链接,所以服务器找不到文件。

放弃了这个解决方案。

磁盘上的符号链接

使用 Windows 中的“mklink”命令可以创建所谓的“符号链接”。这在视觉工作室中就像一个魅力。可以通过将现有(符号)目录从文件资源管理器拖到 Web 应用程序的树中来将它们添加到 Visual Studio 中。然后,您可以编辑文件,更改会立即反映在原始位置。我们让项目以此运行,并认为我们有解决问题的方法,直到我们想将它检查到 Subversion 中。Subversion 认为它是一个真正的文件夹,并尝试从原始位置签入带有版本信息的文件。经过几个令人沮丧的试验和错误后,我也放弃了这个解决方案。我们尝试了符号链接和连接点,但在这两种情况下我们都无法让它工作。

放弃了这个解决方案。

更多调查

我还研究了在 ASP.Net 应用程序中使用 WebResources.asxd 结合 JavaScript 作为嵌入资源的解决方案。我们也放弃了那个,因为除了增加的复杂性之外,它会增加我们在开发过程中的周转时间太多。我们必须为某个 JavaScript 文件中的每个更改构建解决方案,因此我们将失去我们现在拥有的非常快速的编辑可能性。我们现在可以简单地更改 JavaScript,将其保存到磁盘并刷新浏览器以使更改生效。

上面我们最喜欢的选项是带有符号链接的选项,但我们还没有找到解决 SubVersion 问题的工作。

4

4 回答 4

6

如果你想在 Subversion 存储库中有类似符号链接的引用,你绝对应该考虑svn:externals

这样您就可以创建指向您的公共代码的链接。

于 2013-11-12T17:20:17.653 回答
4

您是否考虑过为您的 javascript 创建一个 NuGet 包?这是管理依赖项的好方法,您可以为此创建本地提要

如果您一直使用 git 进行版本控制,我本可以建议使用子模块。AFAIK svn 没有等价物。更正:请参阅@bahrep 的答案。

于 2013-11-07T09:35:40.510 回答
0

我们有一个类似的问题,除了我们在一个项目中从 T4 模板生成一个 TypeScript 文件,并且需要在我们的 Web 项目中引用相同的文件。我们尝试了链接文件并遇到了同样的问题。

我们最终做的是使用预构建事件将文件从一个文件夹简单地xcopy传输到另一个文件夹。现在,我们正在使用 TFS,它会在复制时自动检查目标文件。我们确实将这两个文件都置于源代码控制之下,这有点浪费,但在我们的案例中,共享代码的好处超过了这一点。你的旅费可能会改变。

于 2013-11-14T23:28:36.817 回答
0

有趣的问题,我知道我迟到了,但这是我对这个问题的看法。

使用私有 NPM 存储库

创建一个 TS 项目,将所有公共代码作为 NPM 包发布到私有 NPM 服务器(如果您不希望它公开),否则,您始终可以将其发布到公共 NPM。

这有点复杂,并且有许多活动部分,例如创建和管理私有 NPM 服务器或购买一个,在需要时更新项目中的 NPM 模块,但我想这可以解决问题

使用 CDN

为您的 TS/JS 文件保留一个单独的存储库,托管它,以及在任何您想要的地方放置指向该已部署 JS 的链接。

参考:如何创建私有 NPM 服务器

于 2020-10-27T19:35:05.580 回答