Visual Studio认为一切都是TypeScript资源

问题描述 投票:12回答:4

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

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

TS6054 Build:File'C:/ Code / ProjectClosr / Cordova App / platforms / windows / www / Gruntfile.js'具有不受支持的扩展名。唯一支持的扩展名是“.ts”,“。tsx”,“。d.ts”。

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

我该怎么做呢?

visual-studio cordova typescript visual-studio-2015 win-universal-app
4个回答
12
投票

看起来你在使用通配符添加的文件夹中的某处有一个TypeScript文件。不知道为什么MSVS会将内容类型更改为TypeScriptCompile,因为您在文件夹中提供的通配符找到了整个文件。

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

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

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

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


3
投票

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

只需通过原始编辑从解决方案中删除<TypeScriptCompile ...密钥。他们可能也已经作为<Content ...出现,这是你需要的。


0
投票

@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在命令开头所说的那样。


0
投票

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

希望这有帮助!

"compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5",
    "outDir": "./scripts/",
    "allowJs": true
  }
© www.soinside.com 2019 - 2024. All rights reserved.