【问题标题】:Visual Studio thinks everything is a TypeScript resourceVisual Studio 认为一切都是 TypeScript 资源
【发布时间】:2016-03-11 07:00:51
【问题描述】:

我正在使用 Cordova 构建一个应用程序,并且我正在尝试构建一个 Windows 应用程序。使用 Cordova CLI 没有产生任何好的结果,所以我尝试在平台/windows 文件夹中构建 Visual Studio 解决方案。

问题在于它无法构建并返回一长串错误,所有这些几乎都只是说类似这样的话:

TS6054 构建:文件 'C:/Code/ProjectClosr/Cordova App/platforms/windows/www/Gruntfile.js' 的扩展名不受支持。这 仅支持的扩展名是“.ts”、“.tsx”、“.d.ts”。

现在,事实证明它认为所有这些文件都是 TypeScript 文件,即使它们只是自述文件、JavaScript 文件、CSS 文件等,它这样做是因为出于某种原因,它们的属性中的所有这些文件都有“包” Action' 设置为 TypeScriptCompile。现在,我显然没有创建这个解决方案,它是由 Cordova 自动生成的,但我需要一种方法来解决这个问题,方法是以某种方式将所有这些“Package Action”属性设置回它们的真实值,而不是一切都是 TypeScript资源。

我该怎么做呢?

【问题讨论】:

    标签: visual-studio cordova typescript visual-studio-2015 win-universal-app


    【解决方案1】:

    根据this,您应该在 tsconfig.json 中设置 "allowJs": true 以允许 .js 扩展名。

    希望对您有所帮助!

    "compilerOptions": {
        "noImplicitAny": false,
        "noEmitOnError": true,
        "removeComments": false,
        "sourceMap": true,
        "target": "es5",
        "outDir": "./scripts/",
        "allowJs": true
      }
    

    【讨论】:

      【解决方案2】:

      @Pavel Kozlov 的解决方案非常适合我。

      如果您使用的是 Cordova,可以使用以下脚本自动完成:

      ./reset_windows.sh

      cordova platform rm windows
      cordova platform add windows
      sed -i '9s/.*/        <Content Include="www\\**" Exclude="**\\*.ts" \/>/' platforms/windows/CordovaApp.projitems
      

      确保您要替换的旧行实际上是第 9 行,正如命令开头的 9s 所说。

      【讨论】:

        【解决方案3】:

        看起来您在使用通配符添加的文件夹中的某处有一个 TypeScript 文件。不知道为什么,但是对于您在文件夹中提供的通配符找到的所有文件,MSVS 将 Content 类型更改为 TypeScriptCompile

        在我的情况下,angular-ui-router.d.ts 文件在 www\lib\angular-ui-router\api 中。

        通过在 CordovaApp.projitems 文件中添加 Exclude 指令解决:

        <Content Include="www\**" Exclude="**\*.ts" />
        

        还要注意 $(MSBuildThisFileDirectory) 应该从路径中删除,因为它会神奇地破坏技巧。

        【讨论】:

        • 因为这个,我头疼了好几天。你真是个天才!
        • 在为 windows 平台构建科尔多瓦应用程序时,这对我有用。谢谢。
        【解决方案4】:

        这样做是因为出于某种原因,所有这些文件在其属性中都将“Package Action”设置为 TypeScriptCompile。

        只需通过原始编辑从解决方案中删除 &lt;TypeScriptCompile ... 键。它们可能也已经以 &lt;Content ... 的形式存在,这正是您所需要的。

        【讨论】:

        • 好吧,我尝试使用 TypeScriptCompile 查找任何位置,唯一拥有它的文件是 CordovaApp.projiitems,而不是解决方案文件,并且该行看起来像这样 - 。但是,在更改它并重新加载解决方案后,它似乎不起作用,并且在保存解决方案时它甚至恢复了该行。
        • 看起来我无法手动更改每个文件的打包操作 - 它会立即恢复为 TypeScriptCompile。
        • 删除 &lt;TypeScriptCompile&gt; 节点可以解决问题,但也会从项目中删除文件,因此您必须手动将它们重新添加为现有项目,然后 VS 正确添加它们而不将它们标记为 TS。
        猜你喜欢
        • 2018-12-29
        • 2011-08-06
        • 2012-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-01
        • 1970-01-01
        相关资源
        最近更新 更多