接受的答案不允许调试在Visual Studio。 (充其量,调试器将停止在编译后的javascript中的一行,但不是原始的Typescript,当然也不在其原始的项目位置。)
在共享项目的属性中,我们假设将结合到[a单]文件检查并设置为AllShared.js
,这也使得AllShared.d.ts
文件,因为生成申报文件被选中,并且也使得AllShared.js.map
因为生成源映射检查。
引用项目不应以接受的解决方案的方式复制或链接这些文件。相反:
第1部分在引用项目中创建/typings/tsd.d.ts
(如果它尚不存在),并在该文件的底部追加行///<reference path="../../SharedProject/AllShared.d.ts" />
。一旦完成(至少一次SharedProject的成功编译完成),Intellisense和Typescript编译器应该看到Interface1等等(如果路径/文件不存在,您可能会得到一条红色的波浪线,这很好。)
第2部分,在参考项目的index.html
中,在该项目自己的脚本标记之前添加行<script src="http://localhost:29944/AllShared.js"></script>
。localhost部分来自Shared项目的Properties,Web选项卡Project Url。 (“IIS Express”和“本地IIS”均可用)。
现在,当您运行引用项目时,您应该看到Internet Explorer **从各自的“网站”请求相关文件。不管它们是在SharedProject还是在引用项目中,都应该命中Visual Studio断点。
。尽管此解决方案没有使用gulp/grunt/powershell,但Visual Studio的将Javascript输出合并到一个文件中并不会将文件按任何特定顺序粘合在一起,并且最终会破坏您的代码。然后你需要添加Gulp/etc。在参考项目中为共享***中的每个文件插入一个<script src="http://localhost:29944...
标记,因为手动更新index.html
是一个糟糕的选项。 (将Gulp添加到共享项目中,将.js和.d.ts文件连接成单曲会遇到无法简单连接的.js.map文件的问题。)
** IE和VS都是微软的产品,所以如果你想使用VS的断点和调试器代替Web浏览器,那么IE的效果会更好。
*** Gulp不喜欢注入URL,只有文件路径。由于HTML注释中index.html
像<!-- SharedStuff:js --><!-- endinject -->
,绕过这个像这样:
gulp.task('insert-into-html', [], function() {
var common = gulp.src(['../SharedProject/**/*.js'], { read: false });
return gulp.src('./index.html')
.pipe(inject(common, {
relative: true,
name: "SharedStuff",
transform: function (filepath) {
return '<script src="http://localhost:29944/'+filepath+'"></script>';
}
}))
.pipe(gulp.dest('./'));
});
正是我想要做的!:)在19h奖励,因为现在不能授予它: S – Nickon
太好了,我很高兴能帮到你!只是一个附加说明...说你有一个情况,你想跨多个项目共享一个“打字稿库”。为此,您需要提出自己的构建方法,包括生成'.js','.d.ts'和'.js.map'文件(如上所示),然后将这些文件复制到每个项目需要它。在生成文件('Project> Properties> Build Events> Post-build event command line')后,您可以使用Post-build事件进行复制。 –
是的,我发现它,当你给我第一个答案:) – Nickon