Problèmes avec tapuscrit et TFS

voix
10

Il y a probablement un problème avec TFS projet Visual Studio mené en collaboration avec Tapuscrit.

Surchauffe tsc ne peut pas écraser le fichier .js en lecture seule une erreur de refus de lancers francs autorisation.

Error   1   Permission denied   
Error   2   The command C:\Program Files (x86)\Microsoft SDKs\TypeScript\0.8.0.0\tsc 
c:\users\schlicht\documents\visual studio 2012\Projects\TypeScriptHTMLApp1\TypeScriptHTMLApp1\app.ts exited with code 1. 

Est - il possible sans vérifier explicitement les fichiers à utiliser une version avec tsc?

Créé 08/10/2012 à 11:30
source utilisateur
Dans d'autres langues...                            


7 réponses

voix
7

Ne cochez pas dans le fichier .js. Nous utilisons cette approche sur notre projet dactylographié et il fonctionne bien. Il n'y a pas besoin d'avoir les .js générés dans le contrôle de la source; penser des fichiers .js en sortie de projet, comme un .exe ou .dll.

Créé 14/10/2012 à 02:59
source utilisateur

voix
4

Maintenant, si votre serveur de build est configuré pour la course dactylographiée, TSC fonctionnera et générer les fichiers JavaScript.

Voici une autre solution de rechange, au cas où vous ne voulez pas supprimer le fichier JS. Parce que, si vous supprimez la JS pour moment, et tout autre contrôle de développeur dans ces fichiers à nouveau dans TFS, la même erreur viendra se produire. (Plus sur les fichiers cachés, donc si vous ne cochez pas dans attentivement, ils peuvent être contrôlés dans dans TFS)

Dans ce cas, vous pouvez exécuter un événement pré-construction, qui supprimera tous les attributs en lecture seule des fichiers JS pour ce projet.

1. Clic droit sur le projet et ouvrez la fenêtre de propriétés du projet

2. Sélectionnez l' événement Build Tab

entrez la description d'image ici

Cela permettra d'assurer, toute la version de fichier JS lecture seule attributs et il n'y aura pas d'erreur pour écrire dans le fichier a échoué.

J'espère que cela t'aides.

Source: http://dailydotnettips.com/2014/05/03/typescript-emit-error-write-to-file-failed-how-to-resolve

Créé 28/11/2015 à 06:05
source utilisateur

voix
1

Voici une solution de contournement: Pour garder vos fichiers JS dans le cadre du projet et dans le contrôle de la source.

Utilisez un espace de travail local, que cela ne vaut pas la lecture seule drapeau sur les fichiers, afin d'enregistrer les fichiers .JS ne nécessitent pas un départ pour qu'il soit écrit.

J'ai trouvé ce parce que je ne montrais ce problème, mais d'autres dans mon équipe étaient, donc après quelques recherches, j'ai découvert ce qui était différent. Je travaillais avec un espace de travail local au lieu d'un espace de travail du serveur.

Les autres membres de l'équipe ont converti en un espace de travail local et ils sont encore une fois la voile en douceur.

Créé 18/07/2013 à 11:30
source utilisateur

voix
1

Ceci est un bug connu (fonction ou manquante):

http://typescript.codeplex.com/workitem/108

Créé 08/10/2012 à 14:52
source utilisateur

voix
0

Problème:
Si vous ajoutez les fichiers générés * .js à TFS, puis TFS les protège en écriture, si vous les archivez ou ne pas les vérifier. Donc , si vous modifiez le fichier * .ts, il ne peut pas générer le fichier * .js, car le fichier est protégé en écriture.
==> Erreur
Mais si vous ne les présente pas, le fichier * .js sera absent si vous exécutez déployer.
==> Compile, mais Erreur d' exécution En
outre, si vous avez besoin comme une ressource incorporée, vous ne pouvez pas exclure le fichier ...

Problème supplémentaire 1:
Si vous exécutez « Régénérer la solution », Visual Studio veut supprimer le * .js générés par tapuscrit, avant d'exécuter la construction.
Mais la suppression est impossible, car sont protégés en écriture des fichiers du * ...
==> Erreur

Problème supplémentaire 2:
les événements de pré-construction sont propres Depuis est pas « Build », et non exécutés sur le nettoyage ...
Donc , si vous supprimez la protection en écriture sur la pré-construction, il ne fonctionnera que si vous ne « construire », mais échouera si vous choisissez « Rebuild », indépendamment du fait que vous le faites dans la solution ou dans le projet.

Problème supplémentaire 3:
Vous ne pouvez pas définir une commande pré-événement propre dans l'éditeur de projet-paramètres.

Alors, voici ce que vous pouvez faire:
Run attrib -r /s(supprime la protection en écriture) sur votre typescripted * .js que l' action de pré-construction.
par exemple

attrib -r /s "$(ProjectDir)Resources/Scripts/0/*.js"

Cela fonctionne, parce que * est élargi:

  • Si le fichier n'existe pas, il n'y a pas d'erreur, car aucune commande est exécutée.
  • Si le fichier existe, il n'y a pas d'erreur, la commande est exécutée.

Si vous souhaitez l'exécuter sur un nom de fichier, il échouera si le fichier n'existe pas.

Maintenant, vous devez modifier le fichier de projet (* .csproj) à la main, d'ajouter une action pré-nettoyage.
L'action pré-propre est le même que l'action de pré-construction.

  <Target Name="BeforeClean">
    <!-- DO YOUR STUFF HERE -->
    <Exec Command="attrib -r /s &quot;$(ProjectDir)Resources/Scripts/0/*.js&quot;" />
  </Target>

Et vous allez là-bas. Maintenant, vous pouvez vérifier les fichiers * .js dans, peut modifier le fichier * .ts (vous devrez déprotéger le fichier * .js ou exécutez la construction par la suite)

Si vous voulez exécuter sur une commande est la base par fichier,:

if EXIST "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js" (
attrib -r "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"
)

ou sous forme XML:

<Exec Command="if EXIST &quot;$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js&quot; (&#xD;&#xA;attrib -r &quot;$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js&quot;&#xD;&#xA;)" />

Et au lieu de supprimer le attribut lecture seule gros dans l'action de pré-construction, vous pouvez également vérifier les fichiers individuels avec l'outil de ligne de commande TFS:
"$(DevEnvDir)CommonExtensions/Microsoft/TeamFoundation/Team Explorer/tf.exe" checkout /lock:none "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"

Soit dit en passant, vous pouvez trouver une liste des macros VisualStudio / msbuild ici:
https://docs.microsoft.com/en-us/cpp/ide/common-macros-for-build-commands-and-properties?view= vs-2017

Et pour connaître la valeur réelle de la macro:

  • faites un clic droit sur votre projet dans la solution Explorer, sélectionnez Propriétés
  • sélectionnez l' événement Construire onglet
  • cliquez sur le Modifier pré-construction ou Modifier post-construction bouton, que ce soit est très bien
  • dans la fenêtre qui apparaît, cliquez sur le macros bouton
  • faites défiler la liste jusqu'à ce que vous trouverez ProjectDir, dans le volet suivant est sa valeur réelle

En outre, au lieu d'utiliser l'événement pré-construction dans le projet, vous pouvez ajouter la caisse comme commande BeforeBuild-cible. Que personne façon peut accidentially l'enlever s'ils ont mis quelque chose en pré-construction dans le projet-paramètres.

  <Target Name="BeforeBuild">
    <Exec Command="&quot;$(DevEnvDir)CommonExtensions/Microsoft/TeamFoundation/Team Explorer/tf.exe&quot; checkout /lock:none &quot;$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js&quot;" />
  </Target>
Créé 06/02/2019 à 13:09
source utilisateur

voix
0

En réponse aux personnes suggérant l'exclusion des fichiers .js du projet, je dois dire que cela ne peut fonctionner dans les petites et logiciel unique solution. Dans une grande application logicielle soit un ERP, il existe généralement plusieurs solutions par module, et quand ont chacun des fichiers .js pour eux-mêmes, fournissant .js et d'autres fichiers sources de ce genre est généralement fait en leur faisant « Ressources embedded » et une coutume fournisseur de chemin virtuel ou quelque chose.

Alors, ce qui fonctionne? Cette solution peut vous aider, je vous suggère de l' essayer.

Mais de toute façon, comme mentionné AM. C'est un bug connu. Et je pense que la meilleure solution pour le compilateur dactylographiée serait d'ignorer les fichiers d'écriture pour les fichiers .ts qui sont en lecture seule (check-in) eux-mêmes.

Créé 06/07/2015 à 06:14
source utilisateur

voix
0

Je vécu hier.

Comme iano a déclaré, ne pas ajouter les .js générés à TFS; ou ajouter tf checkoutet tf checkinà la cible BeforeBuild.

Créé 20/11/2012 à 13:43
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more