在VS2012的解决方案中,我们有多个Web应用程序都需要javascript。我们使用Telerik的Kendo UI为MVC4 ASP.Net开发了一个单页应用程序,结合了jQuery和TypeScript。
由于多个Web应用程序,我们创建了大量冗余的TypeScript,因此创建了Javascript。改变代码是一种阻力。我们必须始终同步所有Web应用程序的所有代码,这至少可以说是烦人的。
我已经研究过这个问题的几个解决方案并且已经空了。以下是我调查的一些场景:
Visual Studio中的链接
可以拖动整个文件夹'从一个项目到另一个持有Alt键的项目。这会导致源项目中所有文件的目标项目中的链接。这在Visual Studio中可以正常工作以进行编辑。这里的问题是,在运行时,应用程序需要将文件放在执行Web应用程序层次结构内的磁盘上的位置。因为它们是指向另一个位置的链接,所以服务器无法找到这些文件。
放弃了这个解决方案。
磁盘上的符号链接
使用' mklink' Windows中的命令可以创建所谓的符号链接'。这就像视觉工作室的魅力。可以通过将现有(符号)目录从文件资源管理器拖到Web应用程序的树中,将现有(符号)目录添加到visual studio中。然后,您可以编辑文件,更改会立即反映在原始位置。我们用这个运行了项目并且认为我们有解决问题的方法,直到我们想要检查这个到Subversion。 Subversion认为它是一个真实的文件夹,并尝试使用原始位置的版本信息签入文件。经过几个令人沮丧的反复试验后,我也放弃了这个解决方案。我们尝试了符号链接和连接点,但在这两种情况下我们都无法使用它。
放弃了这个解决方案。
更多调查
我还研究了使用WebResources.asxd结合JavaScript作为嵌入资源的ASP.Net应用程序中使用的解决方案。我们也放弃了这一点,因为在增加的复杂性的帮助下,它会在开发过程中增加我们的周转时间。我们必须为某些JavaScript文件中的每个更改构建解决方案,这样我们就会失去现在非常快速的编辑可能性。我们现在可以简单地更改JavaScript,将其保存到磁盘并刷新浏览器以使更改生效。
我们最喜欢的选项是具有符号链接的选项,但我们没有找到SubVersion与该问题的工作。
答案 0 :(得分:6)
如果你想在Subversion资源库中有类似符号链接的引用,你一定要考虑svn:externals
:
这样您就可以创建指向公共代码的链接。
答案 1 :(得分:4)
你有没有考虑为你的javascript创建一个NuGet包?这是一种很好的管理依赖关系的方法,你可以为此create a local feed。
如果您一直使用git进行版本控制,我可以建议使用子模块。 AFAIK svn没有等效物。更正:见@ bahrep的回答。
答案 2 :(得分:0)
我们遇到了类似的问题,除了我们在一个项目中从T4模板生成一个TypeScript文件,并且需要在我们的Web项目中引用相同的文件。我们尝试了链接文件并遇到了同样的问题。
我们最终做的是使用预构建事件简单地xcopy
从一个文件夹到另一个文件夹的文件。现在,我们正在使用TFS,它会在复制时自动检出目标文件。我们确实在源代码控制下有两个文件,这有点浪费,但在我们的例子中,共享代码的好处超过了这一点。您的里程可能会有所不同。
答案 3 :(得分:0)
有趣的问题,我知道我来晚了,但是这是我对这个问题的看法。
使用私有NPM存储库
创建一个TS项目,并将所有公共代码作为NPM包发布到私有NPM服务器(如果您不希望公开),否则,您始终可以将其发布到公共NPM。
这有点复杂,有许多活动的部分,例如创建和管理私有NPM服务器或购买一个,在需要时根据需要更新项目中的NPM模块,但是我想这可以解决问题
使用CDN
为您的TS / JS文件保留一个单独的存储库,将其托管以及在您希望放置到已部署JS的链接的任何位置。