簡體   English   中英

在其他項目上升級TypeScript后,Visual Studio AngularJS項目上的錯誤

[英]Errors on Visual Studio AngularJS Project after upgrading TypeScript on a different project

更新 -我剛剛發現這篇文章:

http://blog.davidjs.com/2015/11/visualstudio-has-problem-when-multiple-versions-of-typescript-are-installed/

這表明我的問題可能是這樣的:

VisualStudio使用文件lib.d.ts來學習窗口對象,事件等的界面。此lib.d.ts隨安裝的每種打字稿版本更新。 當某個接口過時后,將從lib.d.ts中刪除該接口,然后VisualStudio將該接口的使用標記為無效,並拒絕構建。

文章說:

您可以使用以下命令指定要在特定項目中使用的lib.d.ts版本

/// <reference path=”custom/path/to/lib.d.ts” />

在特定於項目的_reference.ts文件中。

我該怎么辦呢? 編譯器抱怨無法解決的解決方案中存在lib.d.ts,因此我必須指定哪個lib.d.ts才能使lib.d.ts與TypeScript 1.8一起使用?


問題:

我有一個包含多個項目的Visual Studio 2015解決方案。 我已經將其中一個項目(具有AngularJS)升級為使用TypeScript 2.6.2的混合AngularJS / Angular應用程序,現在由於TypeScript,同一解決方案中的其他項目之一(純AngularJS應用程序)無法編譯錯誤。

新升級的項目可以正常編譯(包括TypeScript),並且可以使用以下tsconfig.json文件通過Visual Studio進行編譯:

{
  "compilerOptions": {
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [ "es2015", "dom" ],
    "noImplicitAny": false,
    "suppressImplicitAnyIndexErrors": true,
    "noStrictGenericChecks": true
  },
  "include": [ "**/*.ts" ],
  "exclude": [
    "node_modules"
  ]
}

當我通過Windows中的命令行進入項目根文件夾,然后鍵入'tsc -v'時,輸出為'Version 2.6.2',我相信這可以確認Visual Studio針對該項目構建的TypeScript版本。

另一個項目(包含“純” AngularJS代碼)僅使用Visual Studio進行構建(沒有使用CLI進行的任何tsc編譯)。 現在,該項目顯示了Visual Studio中以前沒有的* .ts錯誤,包括以下內容:

在此處輸入圖片說明

而且我還看到各種* .d.ts錯誤:

在此處輸入圖片說明

在此處輸入圖片說明

該錯誤必須由於某種配置更改而顯示出來,因為該項目沒有任何代碼更改,但是我不理解這一點,因為該項目是通過Visual Studio編譯的, 並且不使用tsconfig.json,並且項目設置未更改。 他們來了:

在此處輸入圖片說明

以及相關的.csproj設置:

<PropertyGroup>
    <TypeScriptTarget>ES5</TypeScriptTarget>
    <TypeScriptToolsVersion>1.8</TypeScriptToolsVersion>    
    ... etc

當我使“混合” Angular / AngularJS項目正常工作時,在一個階段,我使用VS nuget包管理器在Visual Studio解決方案中全局安裝了“ TypeScript編譯器v.2.6.2”,但是從那以后我就卸載了它,並且沒有任何文件寫入受源代碼控制的packages.config文件。 無論如何,項目中已損壞的'TypeScriptToolsVersion'仍指向v1.8,所以我不認為安裝/卸載nuget軟件包是造成此問題的原因。 這是我現在在C:\\ Program Files(x86)\\ Microsoft SDKs \\ TypeScript文件夾中擁有的內容,Visual Studio在編譯TypeScript時通常使用該文件夾

在此處輸入圖片說明

我注意到“版本”文件具有“ LastKnownTypeScriptVersion” 2.6,如下所示,但是當我將其編輯為1.8時,當我關閉並重新打開Visual Studio時,出現錯誤的項目現在無法加載

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LastKnownTypeScriptVersion>2.6</LastKnownTypeScriptVersion>
  </PropertyGroup>
</Project>

在配置混合應用程序正常工作時,我還進行了TypeScript 2.6.2的全局npm安裝,以及TypeScript 2.6.2的npm安裝到新的“ hybrid app”項目中,但是Visual Studio不應該完全使用它們,因為它們應該是完全獨立的TypeScript安裝。

有什么明顯的我可能會想念的嗎? 我需要一些其他的想法。 任何給我一些提示或答案的提示或答案,我將不勝感激!

我發現問題可能是從這里最初為VS2015安裝TypeScript 2.6.2的事情:

https://www.microsoft.com/zh-cn/download/details.aspx?id=48593

卸載並重新安裝后,除了另一個(完全不同的)項目無法加載之外,其他所有東西都無法正常工作-我必須右鍵單擊並“重新加載項目”,然后它才能正常工作。 然后,當我嘗試打開JavaScript文件“找不到符合約束合同名稱的導出文件”時,我的混合應用程序出現錯誤,我按照這篇文章中的建議進行了解決:

錯誤消息“未找到與約束合同名稱匹配的出口”

我特別需要安裝TypeScript for Visual Studio 2015軟件包(與TypeScript 2.6.2編譯器nuget軟件包相對),以修復最初創建混合AngularJS / Angular應用時在Visual Studio中遇到的一些錯誤。

似乎Visual Studio不能僅僅基於.csproj文件中的<TypeScriptToolsVersion>1.8</TypeScriptToolsVersion>正確地管理依賴項,因為已為所有項目正確配置了依賴項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM