MSBUILD веб-проекта с машинописным текстом выдает множество JQuery связанных ошибок - PullRequest
0 голосов
/ 13 июля 2020

У меня есть проект страниц с расширением. net core 3.1 (netcoreapp3.1), который состоит из файлов машинописного текста (и нескольких файлов javascript). С Visual Studio 2019 (профессиональная) проект отлично строится. Из командной строки проект отлично строится с использованием MSBuild.

Однако, когда я пытаюсь выполнить сборку из папки «развертывания», где я «проверил» проект из системы управления версиями, я получаю много ошибок машинописного текста. Они выглядят следующим образом:

error TS2315: Build:Type 'JQuery' is not generic.
error TS2702: Build:'JQuery' only refers to a type, but is being used as a namespace here.
error TS2339: Build:Property 'css' does not exist on type 'string'.

(примечание: только один из последних, два других разделены примерно поровну)

Похоже, что файлы набора jquery не подбирают. Они указаны в .csproj:

  <ItemGroup>
    <PackageReference Include="jquery.TypeScript.DefinitelyTyped" Version="3.1.2" />
    <PackageReference Include="jqueryui.TypeScript.DefinitelyTyped" Version="1.5.1" />
    <PackageReference Include="Microsoft.TypeScript.MSBuild" Version="3.9.6">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>

My tsconfig. json тоже выглядит довольно нормально:

{
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5",
    "skipLibCheck": true,
    "outDir": "../Source"
  },
  "exclude": [
    "node_modules"
  ]
}

Изменить: Итак, я взял копию всего решения из источника в чистый каталог. Восстановил nuget, сделал tnet restore и msbuild / t: restore. MSBuild по-прежнему не работает с тем же набором ошибок. Открыл решение в VS2019 и попытался построить оттуда ... исправьте ошибки.

Итак, теперь у меня есть одно решение, которое правильно строит проект, а другое - нет. Grrrrrrrr

Я не понимаю, что мне смотреть.

Есть какие-нибудь предложения относительно того, что может пойти не так?

1 Ответ

0 голосов
/ 13 июля 2020

Успех.

Основная проблема заключалась в том, что над папкой проекта (частью каталога решения) находилась папка node_modules \ typings (types?). Эта папка не была частью системы управления версиями, поэтому ее не было в чистых местах.

Также был набор типов в «scripts \ typings» (типы?). Вероятно, это были действительно старые. . json файл, содержащий необходимые типы (щелкните правой кнопкой мыши «wwwroot» и выберите «добавить -> клиентская библиотека»):

    {
      "version": "1.0",
      "defaultProvider": "unpkg",
      "libraries": [
        {
          "library": "@types/jquery@3.5.0",
          "destination": "wwwroot/types/jquery/"
        },
        {
          "library": "@types/sizzle@2.3.2",
          "destination": "wwwroot/types/sizzle/"
        },
        {
          "library": "@types/jqueryui@1.12.2",
          "destination": "wwwroot/types/jqueryui/"
        }
      ]
    }
используйте элемент явной типизации в tsconfig. json:
    {
      "compilerOptions": {
        "noImplicitAny": false,
        "noEmitOnError": true,
        "removeComments": false,
        "sourceMap": true,
        "target": "es6",
        "skipLibCheck": false,
        "outDir": "../Source",
        "typeRoots": [ "./types" ]
      },
      "exclude": [
      ]
    }

Мораль истории ... Компилятор машинописного текста от Nuget GOOD. Определения типов из Nuget BAD. Использование Visual Studio по умолчанию для typeRoots BAD.

...