我的任务涉及创建一个JavaScript库,然后由Visual Studio解决方案中的多个项目使用。理想情况下,我想找到一个项目类型,对于我的JavaScript代码,它的行为就好像它是一个C#类库,即:
VS 2010/11可以实现这一点,还是我需要编写一些BAT / PowerShell文件并自行编写脚本?
类似但略有不同的问题:Visual Studio Project Template for JavaScript/VBScript?
答案 0 :(得分:9)
根据我开发Asp.Net MVC的经验,Visual Studio对JavaScript的支持有限。我想你可以做些什么来模仿你想要的行为:
创建一个项目来存储你的JavaScript文件,也许是一个真正无关紧要的类库项目,只要它支持构建事件。将您的JavaScript文件放在新项目中。
在此项目上创建一个后期构建步骤,以使用外部工具最小化您的JavaScript。我使用YUI Compressor。您的帖子构建步骤应包含类似于以下内容的行:
java -jar $(ProjectDir)Scripts \ yuicompressor-2.4.7.jar $(SolutionDir)Scripts \ yourJsFile.js -o $(SolutionDir)Scripts \ yourJsFile.min.js --charset utf-8
在您的解决方案中包含此新项目。然后,对于您的Asp.Net项目,设置您的Active Server Pages以便它们引用JavaScript文件,我使用Razor语法作为示例。具体而言,确定正确的路径可能很棘手:
@if (@Model.IsDebug) { <script src="@Url.Content("~/Scripts/yourJsFile.js")" type="text/javascript"> </script> } else { <script src="@Url.Content("~/Scripts/yourJsFile.min.js")" type="text/javascript"></script> }
再次确保您可以准确地引用Asp.Net项目中的JavaScript文件可能很棘手。但我确信有办法做到这一点。也许您可以让您的帖子构建步骤将JavaScript文件复制到某个公共位置。如果这样做,您还需要将JavaScript项目上的post build事件标记为“Always Run”,因此始终会复制JavaScript文件。
答案 1 :(得分:7)
好问题(+1)。我的决定是将所有javascript通用文件放在单独的javascript项目中,并使用linked files在web / mvc项目中使用所需的js文件。
通过这种方式,您可以使用所有可用工具从javascript项目端使用subversioning控件,并从单独的常规项目侧压缩和合并js文件。
答案 2 :(得分:3)
我真的好奇这个!如果有人提出其他/更好的想法,请@评论给我。
如果您只想要一个前端javascript项目,这是一个简单的选择。 Web Essentials易于使用并在Visual Studio中安装。您可以使用它来轻松缩小。然后您可以使用 Qunit 进行测试。这是javascript客户端开发的一个非常简单和轻量级的切入点。
使用Node.js Tools for Visual Studio。它将为您提供许多这些好东西的项目模板。你最终可能不会使用node.js,特别是如果你只是创建一个客户端js库,但是让node.js有助于测试,你需要/需要npm来安装我原来答案中提到的所有其他好东西(选项3)。
这个涉及很多设置。对于某些.NET开发人员来说,这可能是一个障碍。
以下是我过去所做的事情:
我实际上在Eclipse中创建了this project! (不要恨我)。后来我用网站项目创建了一个Visual Studio解决方案。我安装了node.js,这当然不是必需的,但我将它用作轻量级Web服务器。
然后您可以使用 Nuget或Bower 来安装其他内容,例如:
并非所有这些都是必需的。我认为Bower已经集成到Visual Studio 2015中。其中一些需要命令行构建,但是一旦设置它就会运行很少的命令。
答案 3 :(得分:0)
如果你想访问pre-build / pos-build(不需要使用任务运行器浏览器),创建一个空的ASP.net Core项目(它将隐藏node_modules文件夹,文件将自动放入项目中(只是复制它们,不需要手动添加它们。)但是,这会生成一个obj和bin文件夹,这可能很烦人。这里有一件好事,如果你在www文件夹中构建你的项目,你可以使用来自Visual Studio。
如果您不关心上述任何一项,那么共享的C#项目不会生成输出,因此它是制作javascript项目的好模板(我将其用于所有我的vue spa项目)。这里的缺点是文件嵌套赢得了工作= \