web-dev-qa-db-ja.com

Visual Studio 2017がjavascriptをビルドするのを防ぐ方法は?

今日VS2017にアップグレードし、Webアプリプロジェクトで何かを変更するたびに、ビルドがすべてのjavascriptを再ビルドすることを確認しました(クライアントにwebpackを使用しています)。クールですが、かなり時間がかかりますので、javascriptの構築を停止するように設定できます(また、変更されたときに自分で構築します)。

28
arielorvits

簡単な答え

Csprojファイルで、次の行を既存のPropertyGroupブロックに追加します。

_<PropertyGroup>
     <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
</PropertyGroup>
_

TypeScriptファイルがコンテンツとして含まれていることを確認してください

_<ItemGroup>
    <Content Include="**\*.ts" Exclude="$(GlobalExclude)" />
</ItemGroup>
_

_tsconfig.json_ファイルをプロジェクトルートに追加し、次の設定が設定されていることを確認します。

_"compileOnSave": false,
_

最後に、Visual Studioを再起動します


詳細

Nugetは、プロジェクトのobjディレクトリに_[ProjectName].csproj.nuget.g.targets_という生成されたターゲットファイルを作成します。このターゲットファイルは_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>
_
53

Typepackファイルをコンパイルおよびバンドルするためにwebpackのts-loaderを使用しています。そのため、Visual Studioが各ビルドで実行した自動コンパイルは不要になりました。 Visual Studio 2017では、tsconfig.jsonから次の行をコメントアウトして、自動コンパイルを停止しました。

"outDir": "./wwwroot/build/",
3
DavGarcia

私は同じ問題を抱えていました-Webpackは、Visual Studioがプロジェクトを再構築するたびにTypeScriptファイルを再構築していましたが、

<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>

私のPROJファイルで、そして

"compileOnSave": false,
  "buildOnSave": false

私のtsconfig.jsonファイル。

NPM Task Runner VS拡張機能がインストールされていたため( https://marketplace.visualstudio.com/items?itemName=MadsKristensen.NPMTaskRunner )、そしてTask Runner Explorerにビルドがあったためでした「ビルド前」イベントにバインドされたタスク。この拡張機能は必要なかったので、アンインストールしました。

注:VSビルドで再構築するためにWebpackを必要としませんでした。なぜなら、この拡張機能を使用して、ファイルを監視し、変更を加えながら再構築したからです。 https://marketplace.visualstudio.com/items?itemName= MadsKristensen.WebPackTaskRunner

2
PRS

TypeScriptCompileBlockedtrueに設定するだけでは不十分でした。うまくいったのはプロジェクトのプロパティでした。TSコンパイルを構成できるTypeScriptビルドタブがあり、[保存時にコンパイル]オプションが含まれています。

enter image description here

次の結果が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 />
1

TypeScriptCompileBlockedとともに次の設定をtrueに設定します。

アプリケーションの.csprojファイルで以下の条件をfalseに設定します。

0
ketan27j