Probleme cu typescript și TFS

voturi
10

Există, probabil, o problemă cu proiectul Visual Studio TFS realizat împreună cu dactilografiate.

Pe construi TSC nu poate suprascrie fișierul codurile .js readonly o aruncă eroare de permisiune refuzată.

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. 

Este posibil , fără a verifica în mod explicit fișierele de a utiliza un build cu TSC?

Întrebat 08/10/2012 la 11:30
sursa de către utilizator
În alte limbi...                            


7 răspunsuri

voturi
7

Nu verificați în fișierul .js. Noi folosim această abordare pe proiectul nostru typescript și funcționează bine. Nu este nevoie să aibă codurile .js generate în controlul sursei; cred că de fișiere Js ca ieșire de proiect, ca un .exe sau .dll.

Publicat 14/10/2012 la 02:59
sursa de către utilizator

voturi
4

Acum, dacă serverul construi este configurat pentru rularea typescript, TSC va rula și de a genera fișierele JavaScript.

Aici este o altă soluție alternativă, în cazul în care nu doriți să eliminați fișierul JS. Pentru că, dacă eliminați JS pentru moment, precum și orice alt control dezvoltator în cele din nou fișierul în TFS, aceeași eroare va veni să apară. (Mai mult peste acestea sunt fișiere ascunse, așa că, dacă nu check-in cu atenție, ele pot fi verificate, în TFS)

În acest caz, puteți rula un eveniment pre-Build, care va elimina toate atributele doar în citire a fișierelor JS pentru acel proiect.

1. Faceți clic dreapta pe proiect și deschideți proiectul Proprietatea ferestrei

2. Selectați Build Event Tab

introduceți descrierea imaginii aici

Acest lucru va asigura, toate eliberarea de fișier JS Read-Only atributele și nu va exista nici o eroare de scriere a fișierului a eșuat.

Sper că acest lucru vă ajută.

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

Publicat 28/11/2015 la 06:05
sursa de către utilizator

voturi
1

Iată o soluție: Pentru a păstra fișierele JS, ca parte a proiectului și în controlul sursei.

Utilizați un spațiu de lucru local, deoarece acest lucru nu se aplică numai pentru citire pavilion pe fișiere, astfel încât salvarea fișierelor .js nu necesită un check-out pentru a fi scris.

Am găsit acest lucru pentru că nu expunea această problemă, dar alții din echipa mea au fost, așa că după niște săpături am aflat ce era diferit. Am fost folosind un spațiu de lucru local în loc de un spațiu de lucru server.

Ceilalți membri ai echipei au transformat într-un spațiu de lucru locale și acestea sunt netede navighează din nou.

Publicat 18/07/2013 la 11:30
sursa de către utilizator

voturi
1

Acesta este un bug cunoscut (caracteristică sau lipsă):

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

Publicat 08/10/2012 la 14:52
sursa de către utilizator

voturi
0

Problemă:
Dacă adăugați generate * .js la TFS, apoi TFS le- a scrie protejează, dacă le check - in, sau nu le verifica afară. Deci , dacă schimbați fișierul * TS, acesta nu poate genera fișierul * .js, deoarece fișierul este protejat la scriere.
==> Eroare
Dar dacă nu le face check - in, fișierul * .js vor lipsi , dacă aveți o implementați.
==> compilează, dar Runtime eroare De
asemenea, dacă aveți nevoie de ea ca o resursă încorporat, nu puteți exclude fișierul ...

Problemă suplimentară 1:
Dacă executați „Rebuild Solution“, Visual Studio vrea să ștergeți * .js generate de typescript, înainte de a executa construi.
Dar ștergerea nu este posibilă, deoarece fișierele * .js sunt protejate la scriere ...
==> Eroare

Problemă suplimentară 2:
Din moment ce nu este curat „Build“, pre-construi evenimente nu sunt executate pe curat ...
Deci , dacă eliminați protecția la scriere pe pre-constructie, va funcționa dacă nu „construi“, dar va eșua dacă alegeți „Rebuild“, indiferent dacă o faci în soluție sau în proiect.

Problemă suplimentară 3:
Nu puteți defini o comandă eveniment de pre-curat în editorul de proiect-setări.

Deci, iată ce puteți face:
Run attrib -r /s(Îndepărtează scrie protecție) pe typescripted dvs. * .js ca o acțiune de pre-build.
de exemplu

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

Aceasta funcționează, deoarece * este extins:

  • Dacă fișierul nu există, nu există nici o eroare, pentru că nu se poate executa.
  • Dacă fișierul nu există, nu există nici o eroare, comanda este executată.

Dacă aș rula pe un nume de fișier, acesta ar eșua în cazul în care fișierul nu există.

Acum, trebuie să editați fișierul proiectului (* .csproj) de mână, pentru a adăuga o acțiune de pre-curat.
Acțiunea de pre-curată este aceeași ca acțiunea de pre-construcție.

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

Și acolo te duci. Acum puteți verifica fișierele * .js in, se pot edita fișierul * TS (va trebui să deproteja * .js, sau de a rula construi ulterior)

Dacă doriți să-l rula pe o bază per fișier, comanda este:

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

sau în format XML formă:

<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;)" />

Și în loc de a scoate read-only atribut en-gros în acțiunea de pre-construi, puteți verifica, de asemenea, fișierele individuale cu instrumentul TFS linie de comandă:
"$(DevEnvDir)CommonExtensions/Microsoft/TeamFoundation/Team Explorer/tf.exe" checkout /lock:none "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"

Apropo, puteți găsi o listă de macro - uri VisualStudio / MSBuild aici:
https://docs.microsoft.com/en-us/cpp/ide/common-macros-for-build-commands-and-properties?view= vs 2017

Și pentru a afla valoarea reală a macro:

  • faceți clic dreapta pe proiectul în Solution Explorer, selectați Proprietăți
  • selectați Build Evenimente fila
  • faceți clic pe Editare pre-build sau Edit post-build buton, fie este bine
  • în fereastra care apare, faceți clic pe Macrocomenzi butonul
  • derulați în jos lista până când găsiți ProjectDir, în următorul panou este valoarea sa reală

De asemenea, în loc de a folosi evenimentul de pre-construi în proiect, puteți adăuga Checkout comanda BeforeBuild-țintă. În acest fel, nimeni nu se poate elimina accidentially dacă au pus ceva în pre-construi în proiecte-setări.

  <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>
Publicat 06/02/2019 la 13:09
sursa de către utilizator

voturi
0

Ca răspuns la persoanele care sugerează excluderea fișierelor Js din cadrul proiectului, trebuie să spun că acest lucru nu poate decât software-ul mic și o singură soluție. Într-o aplicație software de mare și anume un ERP, există, de obicei, mai multe soluții pentru fiecare modul, iar când au fiecare fișiere Js pentru ei înșiși, js livrare și alte fișiere sursă de acest tip se face de obicei prin a le face „Resurse integrate“ și unele personalizate furnizor de cale virtuală sau ceva.

Deci, ce funcționează? Această soluție ar putea ajuta, vă sugerez să - l încercați.

Dar, oricum, așa cum sa menționat AM. aceasta este o problemă cunoscută. Și cred că cea mai bună soluție pentru compilator typescript ar fi de a sări peste fișiere de scris js pentru acele fișiere Ts care sunt read-only (check-in) ei înșiși.

Publicat 06/07/2015 la 06:14
sursa de către utilizator

voturi
0

Am experimentat acest lucru ieri.

După cum sa menționat Iano, nu adăugați codurile .js generate TFS; sau adăugați tf checkoutși tf checkinla țintă BeforeBuild.

Publicat 20/11/2012 la 13:43
sursa de către utilizator

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