理想情况下,我们可以简单地将共享的TypeScript项目引用添加到另一个项目,并且能够像使用Visual Basic或C#跨项目引用一样使用引用的代码。唉,那还没有。
希望微软将在不久的将来升级Visual Studio,以便它支持无缝的跨项目TypeScript调试,而无需复制共享文件。在那之前,我们需要一个变通办法。其他几个人也在堆栈溢出上问了类似的问题:
但这些问题都不符合本问题中指出的所有要求。以下是这些问题中的答案不符合我们需要的原因:
任何人都有这个问题的解决方案,或者知道Microsoft是否正在Visual Studio 2015中构建跨项目引用(包括完全调试支持)?
我正在解决类似的问题。我的要求是:
>
在一个解决方案中有多个项目以与C#项目相同的方式组织,因此解决方案文件夹带有. sln,每个项目的子文件夹带有. csproj和打字文件。
在VS和IE11中调试的可能性(使用breakpoins和所有那些很酷的东西运行F5)
理想情况下无需附加脚本。
我试过:
两种解决方案都使用适当的tsconfig(映射设置为必要的),它正在工作,但我不满意。
在第一种情况下,问题在于文件的更新。它是工作后重建,所以它不是舒适的,因为它需要重新启动IE,建立一切,复制一切,它需要这么多的时间。但它起作用了,或多或少。
第二种解决方案更好,但我被指责项目结构混乱和奇怪(我从零开始就知道了,我也不喜欢它)。
所以我更深入地研究了这个问题,并提出了虚拟目录的解决方案。现在,项目结构与标准的C#项目结构相匹配,可以在IE11中调试,也可以在Chrome外部调试(在IIS Express和相同的localhost: port上),也可以使用“编译在正确保存”,包括css修改和页面重载,而不是重建和IE重启。
可以在IIS express(.vs/config/application.host)和IIS上手动(无需其他脚本)或通过生成后脚本自动实现这一点(我到目前为止还不需要完整的IIS,但我确信可以通过命令行将其自动化)。如果您不经常操作项目,我会说手动更新IIS/applicationhost。配置文件就足够了,并且工作得很好(当然,当tsconfig设置正确以生成映射文件并为TS文件设置sourceRoot时)。
Search for the
.vs/config/applicationhost.config -> <system.applicationHost> -> <sites> -> <site name="YOUR-STARTUP-PROJECT">
for each project in the solution add\
<virtualDirectory path="/src/YourSoultionProject1Name" physicalPath="C:\...PATH-TO-YOUR-PROJECT-ROOT-FOLDER-ON-DISK">
对于每个项目,也不要忘记将tsconfig文件的sourceRoot选项设置为/src/your_project_NAME(或在项目属性中配置ts编译器)
这是迄今为止我找到的最好的解决办法。唯一的问题是这个问题。vs与用户相关,通常不会转移到回购,因此每个用户都必须自行设置。这就是为什么我提出下面的解决方案的原因
我决定创建额外的-构建-项目,这是我在开始时想要避免的,但它将允许我做:
我快完成了,我会把链接放在这里,当我完成的时候,只是为了让你知道我是如何进行的。
其工作原理(将在自述文件中提供,但现在仅作简要说明):
目前,我在解决方案中有6个项目,其中5个是带有适当tsonfig和/或HTML/LESS/SASS/CSS/JSON/IMG资源的“true”类型脚本代码。
所有项目都基于“带TypeScript的HTML应用程序”模板。我在创建之后删除了它们的所有内容(包括web.config),所以现在它只包含我的文件。我还设置了对项目的引用,以便能够遵循所需的构建顺序。所有typescript项目都将TS传输到所属项目的bin文件夹(my Tconfig direct compiler只创建一个js文件,但也可以用于多个js文件)(如果需要,包括映射文件和d.TS)。然后,其他项目使用tsconfig中的相对路径(../libproject/bin/lib./d.ts)引用其他项目的bin文件夹中的d.ts。
我试图像C#所做的那样复制到依赖项目。它可以工作,但需要更多的工作和时间才能正常工作(包括clean.Postbuild事件并不理想)。
第六个项目是“构建”和启动项目,所以它不包含任何“真实”代码(除了我需要的构建工具)。它基于gulp和我为阅读解决方案/项目信息和配置而编写的一些脚本。
它还从控制wwwroot构建过程的每个项目中读取我的自定义配置。最后,它将资源从M解决方案项目复制/处理(缩小)到此构建/启动项目。
我希望明天能完成第一个版本,并将其发布到GitHub,这样你就可以看一看,最终至少使用部分代码。你需要node.js安装。
为满足所有要求,我们可以提出的最佳解决方案包括以下步骤:
>
添加对共享TypeScript文件的引用(使用特殊的_references.ts文件,或直接在TypeScript文件中添加引用)。
使用PowerShell自动更新TypeScript生成的映射文件,使其指向共享Web应用程序的项目URL或虚拟目录(可用于IIS Express和完整IIS)。
我意识到这看起来需要做很多工作,但设置起来不应该超过30分钟。它非常有效,从长远来看将节省开发工作和时间:
此步骤确保共享引用使用与Visual Studio、Chrome和Firefox调试配合使用的方法指向原始共享文件(将相对共享引用替换为项目URL或虚拟目录)。
对于Microsoft:在未来的Visual Studio版本中,这种类型的引用应该是可配置和/或自动的,例如,如果文件引用自其他项目,则会自动将引用映射到共享项目的项目URL。
这适用于多个调试系统(使用Visual Studio、Chrome和Firefox进行测试):
>
从Properties|Web|Project URL获取共享应用程序Project URL。
使用生成后事件运行PowerShell脚本,该脚本将替换应用程序中的所有共享引用。js。映射文件以指向项目URL。
生成后命令示例:
Powershell [io.file]::WriteAllText('$(ProjectDir)Scripts\App.js.map', ((gc '$(ProjectDir)Scripts\App.js.map') -replace '../../Shared_TypeScript/','http://localhost:12345/'))
有关更多详细信息,请参阅下面来源下的PowerShell替换。
这不适用于Visual Studio调试,但对于某些场景可能是一个更好的选项,并且它是唯一已知的用于非web应用程序项目的选项(使用Chrome进行测试,可能适用于Firefox):
>
将虚拟目录添加到指向共享TypeScript项目的IIS Express网站配置:https://stackoverflow.com/a/8929315/2033465(请参见编辑)。
使用构建后事件运行Powershell脚本,该脚本将替换pp.js.map文件中的所有共享引用,以指向上面设置的虚拟目录。
生成后命令示例:
Powershell [io.file]::WriteAllText('$(ProjectDir)Scripts\App.js.map', ((gc '$(ProjectDir)Scripts\App.js.map') -replace '../../GlobalRef/','/GlobalRef/'))
有关更多详细信息,请参阅下面来源下的PowerShell替换。
如果您需要能够在生产环境中调试TypeScript文件(不是我们的要求之一),那么您可以更改生成后脚本以运行不同的命令(类似,但指向共享网站的虚拟目录,而不是本地主机)。这超出了本文的范围。
到目前为止,这是我能想出的(感谢所有其他来源)满足所有需求的最佳方法。
如果你有更好的方法,请告诉我们。
我已经建立了一个小Java项目使用一些参考库(Lucene jar文件,位于我的PC上的某个地方)。 我正在尝试使用Saro与一位朋友分享这些项目,以便我们可以同时进行工作。 除了他看不到被引用的库和应用程序不能在他的计算机上运行之外,一切都很好。 有什么建议吗?
刚开始一个新的Clojure项目,就遇到了一些让LightTable玩得很好的问题。应用程序/REPL可以通过/等正常运行,但尝试连接到LightTable中的任何文件只会使蓝色微调器…旋转…即使在它说它已连接之后。 这些是我的deps(与LightTable 1.5.4-刚刚更新从1.4.something做同样的事情) 有问题的文件是 然后我试图摆脱所有的要求等调试所以我有一个新的文件 有什么
我有一个链接到我的Firebase帐户的Flutter项目(使用< code>FlutterFire CLI)。< br >现在我已经完成了这个项目,我想卖掉源代码。< br >如何更改与此项目关联的Firebase帐户? 当使用时,它会生成一个名为包含每个平台的Firebase选项,如下所示: 我必须改变这些值吗?如果是,我在哪里可以找到所有这些? 我试图更改值(在中),这导致了此错误: 它抛出
标题中的问题。这里提出了一个类似的问题,当时唯一的解决办法是将项目发布到本地Maven存储库中。 这个问题在Android Studio 0.5中修复了吗(正如一些人所声称的)?在其发行说明中有一条声明说“支持模块内容根目录之外的源文件夹”。这是否意味着我们最终可以从项目文件夹外部导入库? 我试过文件- 编辑2:查看最新解决方案的接受答案(截至0.8。) 编辑: 我的项目目录结构只有一个模块,如下
问题内容: 我是Java的新手(基本上是LAMP开发人员)。我得到了这个JAVA API来解析文件并显示所有收件箱消息。 我尝试执行给定的文件,但会引发异常。我需要添加/引用API提供的一些文件。 我还没有Java的IDE。维基怎么说 当您的Java项目要求JAR库起作用时,您必须配置项目以在其构建路径中包括这些库。幸运的是,Eclipse使此过程变得简单易记。这里使用的构建是Eclipse Ja
问题内容: 我有一个Java项目,我想开发它而不替换源代码。我想将代码链接到我的工作空间而不进行物理替换吗? 问题答案: 从中选择您要引用的 右键单击并转到(或按Ctrl-Enter)。 在中,您可以添加当前打开的另一个项目。 如果您要覆盖某个类,则可以在当前项目中对其进行复制,然后将其移至中的类路径中。