Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何将TypeScript构建为独立于MVC项目并依赖于MVC项目的项目,并将生成的JavaScript复制到MVC项目中? 陷害_Asp.net Mvc_Build_Typescript_Webdeploy_Typelite - Fatal编程技术网

Asp.net mvc 如何将TypeScript构建为独立于MVC项目并依赖于MVC项目的项目,并将生成的JavaScript复制到MVC项目中? 陷害

Asp.net mvc 如何将TypeScript构建为独立于MVC项目并依赖于MVC项目的项目,并将生成的JavaScript复制到MVC项目中? 陷害,asp.net-mvc,build,typescript,webdeploy,typelite,Asp.net Mvc,Build,Typescript,Webdeploy,Typelite,我有一个MVC项目,其中包含C#类,这些C#类最终通过ajax进行序列化和使用,等等。我使用生成这些C#类的定义(TypeLite的替代方案在中讨论),因此我可以对使用这些json序列化C#类的代码进行编译时检查。这样,如果C#定义发生更改而我的TypeScript代码没有更改,我将得到一个编译时错误,因为它直接与C#定义关联 初始问题 目前,我的TypeScript与我的C#类存在于同一个项目中。所以我有一个非常奇怪的循环依赖问题。要解决这个问题,我必须遵循一个非常特殊的模式 更新C#类 编译

我有一个MVC项目,其中包含C#类,这些C#类最终通过ajax进行序列化和使用,等等。我使用生成这些C#类的定义(TypeLite的替代方案在中讨论),因此我可以对使用这些json序列化C#类的代码进行编译时检查。这样,如果C#定义发生更改而我的TypeScript代码没有更改,我将得到一个编译时错误,因为它直接与C#定义关联

初始问题 目前,我的TypeScript与我的C#类存在于同一个项目中。所以我有一个非常奇怪的循环依赖问题。要解决这个问题,我必须遵循一个非常特殊的模式

  • 更新C#类
  • 编译MVC项目
  • 运行TypeLite,生成定义
  • 更新TypeScript或在下次生成时遇到编译错误
  • 我不喜欢这样,因为我不能在构建过程中自动运行TypeLite。我不能这样做,因为TypeLite需要首先构建MVC项目中的C#程序集,以便运行和访问定义。此外,我必须将生成的定义包含在代码存储库中,我不喜欢这样做,因为它生成的代码可能会让人忘记生成并提交/签入

    提议的解决办法 如果我有一个依赖于MVC项目的TypeScript项目,我可以很容易地打破这种循环依赖关系。通过这种方式,我可以将TypeLite从MVC项目中删除并放置在TypeScript项目中,从而将其包含在构建中

    我觉得这种方法非常正确,因为TypeScript项目是一个独立的编译项目,它依赖于在自己的项目之前构建的程序集

    实际问题 不幸的是,我不知道如何在我的MVC项目之外拥有一个TypeScript项目,该项目构建并将生成的JavaScript复制回MVC项目(用于通过web部署和/或azure web角色部署进行部署)那么,我如何拥有一个独立于MVC项目的TypeScript项目,该项目在MVC项目之后构建,然后将生成的JavaScript复制回MVC项目进行部署?

    那么,我如何拥有一个与MVC项目分离的TypeScript项目,该项目在MVC项目之后构建,然后将生成的JavaScript复制回MVC项目进行部署

    您可以使用以下语句将文件夹中的所有TS/JS文件包含到
    .csproj
    等中:

    <Content Include="src\**\*.*">
    </Content>
    
    
    
    然后使用
    grunt ts
    之类的工具从外部编译这些文件:


    另外还有一个好处:你的队友可以使用他们喜欢的任何TS编辑器,而不是VS。这也有助于你的设计师。

    我使用typelite很短一段时间,我所做的是:

  • 将typelite dll引用到写入我的实体的位置(我假设您有一个放置所有实体的dll)

  • 转到我的WWW项目(在我的例子中,它引用了entities dll)并创建了一个tt文件,该文件创建了ts文件。tt文件导入dll并完成它的工作


  • 当我编译我的WWW网站时,实体项目被编译,并且.ts文件被重新生成。.ts文件正好位于我希望它们放置的位置,一切正常。

    当TypeScript编译器无法处理大量源文件时,我们使用了一种非常简单的方法: 在MVC项目的子目录下创建typescript项目: 因此,如果您的MVC结构如下所示:

    \Content
    \Controllers
    \Scripts
    
    在以下位置创建TypeScript项目:

    \Content\tscode\TypeScriptProject.sln.
    
    然后,在typescript项目中,可以引用项目根目录下的文件:

    /// <reference path="../../../Scripts/typings/jasmine/jasmine.d.ts"/>
    
    //
    
    然后,您应该能够在TypeScript之前设置生成定义以生成MVC。

    希望这能有所帮助。

    这是一个非常有趣的方法,Basarat,很高兴收到你的来信!我需要关注你的youtube视频。我完全忘了用咕噜!因为这里的每个开发人员都使用VS,我们使用TFS进行构建,所以我想要一些集成到MSBuild中的东西。因此,我将研究如何将grunt ts集成到msbuild构建中。是否有任何类型的*.proj文件可用于grunt/grunt ts?到目前为止,我已经尝试过删除csproj并添加必要的目标,以使其构建.js文件。到目前为止,这是我最喜欢的两条线索。找到了一篇关于grunt ts和visual studio的好文章!这样,我就可以在MVC项目中包含TypeScript,并通过grunt和后期构建任务来构建它们。这将解决复制文件的问题。只要我不在csproj中包含.targets文件,它就不会尝试构建类型脚本(将其留给grunt ts)