web-dev-qa-db-fra.com

Comment empêcher Visual Studio 2017 de construire du Javascript?

J'ai mis à jour aujourd'hui vers VS2017, et j'ai vu que chaque fois que je change quelque chose dans mon projet d'application web - la build reconstruit tout mon javascript (j'utilise webpack pour le client). C'est cool, mais cela prend beaucoup de temps, donc je serai heureux de le configurer pour arrêter la construction du javascript (et je le construirai moi-même au moment où il a changé).

28
arielorvits

Réponse simple

Dans votre fichier csproj, ajoutez la ligne suivante au bloc PropertyGroup existant:

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

Assurez-vous d'inclure vos fichiers TypeScript en tant que contenu

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

Ajouter un tsconfig.json fichier à la racine de votre projet et assurez-vous que le paramètre suivant est défini:

"compileOnSave": false,

Enfin, redémarrez Visual Studio


Détails

Nuget crée un fichier de cibles généré appelé [ProjectName].csproj.nuget.g.targets dans le répertoire obj de votre projet. Ce fichier cible importe Microsoft.NET.Sdk.Web.ProjectSystem.targets qui à son tour importe Microsoft.TypeScript.targets.

Dans le Microsoft.TypeScript.targets fichier, la ligne suivante a un commentaire qui nous fait savoir que si cette propriété est définie sur true, la tâche de compilation TypeScript ne fera rien:

<!-- Makes the TypeScript compilation task a no-op -->
<TypeScriptCompileBlocked Condition="'$(TypeScriptCompileBlocked)' == ''">false</TypeScriptCompileBlocked>
53
Christopher Haws

J'utilise ts-loader de webpack pour compiler et regrouper mes fichiers TypeScript. Je n'avais donc plus besoin de la compilation automatique effectuée par Visual Studio sur chaque build. Dans Visual Studio 2017, je viens de commenter la ligne suivante de tsconfig.json pour arrêter la compilation automatique:

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

J'ai eu le même problème - Webpack reconstruisait mes fichiers TypeScript chaque fois que Visual Studio reconstruisait le projet, malgré

<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>

dans mon fichier proj, et

"compileOnSave": false,
  "buildOnSave": false

dans mon fichier tsconfig.json.

Il s'avère que c'était parce que j'avais l'extension NPM Task Runner VS installée ( https://marketplace.visualstudio.com/items?itemName=MadsKristensen.NPMTaskRunner ), et dans Task Runner Explorer cela avait une build tâche liée à l'événement 'Before Build'. Je n'avais pas besoin de cette extension, je l'ai donc désinstallée.

Remarque: Je n'avais pas besoin de Webpack pour reconstruire sur VS build car je l'avais vu mes fichiers et reconstruit de toute façon que j'ai apporté des modifications, via cette extension: https://marketplace.visualstudio.com/items?itemName= MadsKristensen.WebPackTaskRunner

2
PRS

Définir TypeScriptCompileBlocked sur true ne me suffisait pas. Ce qui fonctionnait allait aux propriétés du projet - il y a un onglet TypeScript Build où vous pouvez configurer la compilation TS, y compris l'option Compile On Save:

enter image description here

Il en résulte l'ajout suivant au fichier 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

Effectuez le paramètre suivant avec TypeScriptCompileBlocked sur true.

Définissez la condition ci-dessous sur false dans le fichier .csproj de l'application.

0
ketan27j