Я обновил сегодня до VS2017, и я видел, что каждый раз, когда я что-то меняю в своем проекте для веб-приложений, сборка снова создает все мои javascript (я использую webpack для клиента). Это классно, но это занимает много времени, поэтому я буду счастлив настроить его, чтобы остановить создание javascript (и сам создам его, когда он изменится).
Как предотвратить визуальную студию 2017 от сборки javascript?
Ответ 1
Простой ответ
В вашем файле csproj добавьте следующую строку в существующий блок PropertyGroup:
<PropertyGroup>
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
</PropertyGroup>
Убедитесь, что вы включаете ваши файлы машинописного текста в качестве содержимого
<ItemGroup>
<Content Include="**\*.ts" Exclude="$(GlobalExclude)" />
</ItemGroup>
Добавьте файл tsconfig.json
в tsconfig.json
каталог вашего проекта и убедитесь, что установлены следующие параметры:
"compileOnSave": false,
Наконец, перезапустите Visual Studio
подробности
Nuget создает сгенерированный целевой файл с именем [ProjectName].csproj.nuget.g.targets
в каталоге obj
вашего проекта. Этот целевой файл импортирует Microsoft.NET.Sdk.Web.ProjectSystem.targets
который, в свою очередь, импортирует Microsoft.TypeScript.targets
.
В файле Microsoft.TypeScript.targets
следующая строка содержит комментарий, который позволяет нам знать, что если для этого свойства установлено значение true, то задача компиляции TypeScript ничего не будет делать:
<!-- Makes the TypeScript compilation task a no-op -->
<TypeScriptCompileBlocked Condition="'$(TypeScriptCompileBlocked)' == ''">false</TypeScriptCompileBlocked>
Ответ 2
Я использую webpack ts-loader для компиляции и компоновки файлов TypeScript. Поэтому мне больше не нужна автоматическая компиляция, выполняемая Visual Studio для каждой сборки. В Visual Studio 2017 я просто прокомментировал следующую строку из tsconfig.json, чтобы остановить автоматическую компиляцию:
"outDir": "./wwwroot/build/",
Ответ 3
У меня была та же проблема - Webpack перестраивал мои файлы Typescript каждый раз, когда Visual Studio перестраивал проект, несмотря на то, что
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
в моем файле proj, и
"compileOnSave": false,
"buildOnSave": false
в моем файле tsconfig.json.
Оказывается, это потому, что у меня было установлено расширение NPM Task Runner VS (https://marketplace.visualstudio.com/items?itemName=MadsKristensen.NPMTaskRunner), а в обозревателе задач это связывало задачу сборки с "Перед сборкой". ' событие. Мне не нужно это расширение, поэтому я просто удалил его.
Примечание. Мне не нужно было перестраивать Webpack для сборки VS, потому что он следил за моими файлами и перестраивался в любом случае по мере внесения изменений через это расширение: https://marketplace.visualstudio.com/items?itemName=MadsKristensen.WebPackTaskRunner
Ответ 4
Установка TypeScriptCompileBlocked
в true
было недостаточно для меня. Что работало, так это переход к свойствам проекта - есть вкладка TypeScript Build, где вы можете настроить компиляцию TS, включая опцию Compile On Save:
Это приводит к следующему добавлению в файл csproj
:
<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptJSXEmit>None</TypeScriptJSXEmit>
<TypeScriptModuleKind>ES6</TypeScriptModuleKind>
<TypeScriptCompileOnSaveEnabled>False</TypeScriptCompileOnSaveEnabled>
<TypeScriptNoImplicitAny>False</TypeScriptNoImplicitAny>
<TypeScriptRemoveComments>False</TypeScriptRemoveComments>
<TypeScriptOutFile />
<TypeScriptOutDir />
<TypeScriptGeneratesDeclarations>False</TypeScriptGeneratesDeclarations>
<TypeScriptNoEmitOnError>True</TypeScriptNoEmitOnError>
<TypeScriptSourceMap>True</TypeScriptSourceMap>
<TypeScriptMapRoot />
<TypeScriptSourceRoot />
Ответ 5
Выполнена следующая настройка вместе с TypeScriptCompileBlocked в true.
Установите для условия ниже ложное в .csproj файле приложения.