Problemer med Loggfila og TFS

stemmer
10

Det er sannsynligvis et problem med TFS Visual Studio prosjekt utført sammen med typescript.

På build TSC ikke kan overskrive skrivebeskyttet JS sende en kaster Permission denied feil.

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. 

Er det mulig uten eksplisitt sjekke ut filene til å bruke en bygge med TSC?

Publisert på 08/10/2012 klokken 10:30
kilden bruker
På andre språk...                            


7 svar

stemmer
7

Ikke sjekk i JS-fil. Vi bruker denne tilnærmingen på vår Loggfila prosjektet og det fungerer godt. Det er ikke nødvendig å ha de genererte JS i kildekontroll; tenk på JS-filer som prosjekt utgang, som en .exe eller .dll.

Svarte 14/10/2012 kl. 01:59
kilden bruker

stemmer
4

Nå, hvis din build serveren er konfigurert for Loggfila sikt vil TSC kjøre og generere Javascript-filer på.

Her er et annet alternativ løsning, i tilfelle du ikke ønsker å fjerne JS-fil. Fordi, hvis du fjerner JS for tiden, og alle andre utvikler sjekk i de filen på nytt i TFS, vil den samme feilen kommer oppstå. (Mer over de som er skjulte filer, så hvis du ikke sjekke inn nøye, kan de være sjekket inn på TFS)

I dette tilfellet, kan du kjøre en Pre-Bygg hendelse, som vil fjerne all beskyttet attributter av JS-filer for det prosjektet.

1. Høyreklikkprosjektet og åpne prosjektet Eiendom Window

2. Velg Build hendelse Tab

skriv bildebeskrivelse her

Dette vil sikre alle JS filen utgivelsen Read-Only attributter, og det vil ikke være noen feil for skrive til filen mislyktes.

Håper dette hjelper.

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

Svarte 28/11/2015 kl. 06:05
kilden bruker

stemmer
1

Her finnes en løsning: Å holde JS-filer som en del av prosjektet, og i kildekontroll.

Bruk en lokal arbeidsområde, da dette ikke gjelder den skrivebeskyttet flagg på filene, så lagre JS-filer ikke krever en sjekk ut for at det skal skrives til.

Jeg fant dette fordi jeg ikke var stille dette problemet, men andre i mitt team var, så etter litt graving fant jeg ut hva som var annerledes. Jeg brukte en lokal arbeidsområde i stedet for en Server Workspace.

De andre gruppemedlemmene har konvertert til en lokal arbeidsområde og de er jevn seiling igjen.

Svarte 18/07/2013 kl. 10:30
kilden bruker

stemmer
1

Dette er en kjent feil (eller manglende funksjon):

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

Svarte 08/10/2012 kl. 13:52
kilden bruker

stemmer
0

Problem:
Hvis du legger til de genererte * JS-filer til TFS, da TFS skrive-beskytter dem, hvis du sjekke dem inn, eller ikke sjekke dem ut. Så hvis du endrer * Ts-filen, kan det ikke generere * JS-fil, fordi filen er skrivebeskyttet.
==> Feil
Men hvis du ikke sjekke dem inn, vil * JS-fil mangle hvis du kjører distribuere.
==> kompilerer, men Runtime feil
også, hvis du trenger det som en integrert ressurs, du kan ikke utelukke fil ...

Tilleggs problem 1:
Hvis du kjører "Rebuild Solution", Visual Studio ønsker å slette * JS-filer generert av maskinskrevet manuskript, før den utfører bygge.
Men sletting er ikke mulig, fordi * JS filene er skrivebeskyttet ...
==> Feil

Tilleggs problem 2:
Siden ren er ikke "Build", pre-bygge hendelser er ikke utført på ren ...
Så hvis du fjerner skrivebeskyttelsen på pre-build, vil det fungere hvis du "bygge", men det vil mislykkes hvis du velger "Rebuild", uavhengig av om du gjør det i løsningen eller i prosjektet.

Tilleggs problem 3:
Du kan ikke definere en pre-ren hendelsen kommando i prosjektinnstillinger editor.

Så, her er hva du kan gjøre:
Kjør attrib -r /s(fjerner skrivebeskyttelse) på typescripted * JS-filer som pre-build handling.
f.eks

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

Dette fungerer, fordi * utvides:

  • Hvis filen ikke finnes, er det ingen feil, fordi ingen kommando er utført.
  • Hvis filen eksisterer, er det ingen feil, er kommandoen utført.

Hvis du vil kjøre den på et filnavn, ville det mislykkes hvis filen ikke eksisterer.

Nå må du redigere prosjektfilen (* .csproj) for hånd, for å legge en pre-ren handling.
Den pre-ren handling er den samme som den pre-build handling.

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

Og der du går. Nå kan du sjekke * JS-filer i, kan redigere * ts filen (du må oppheve * JS-fil, eller kjøre bygge etterpå)

Hvis du ønsker å kjøre den på en per fil basis, er kommandoen:

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

eller i XML-format:

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

Og i stedet for å fjerne skrivebeskyttelsen engros i pre-build handling, kan du også sjekke de individuelle filene ut med TFS kommandolinjeverktøyet:
"$(DevEnvDir)CommonExtensions/Microsoft/TeamFoundation/Team Explorer/tf.exe" checkout /lock:none "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"

Forresten, kan du finne en liste over Visual Studio / MSBuild makroer her:
https://docs.microsoft.com/en-us/cpp/ide/common-macros-for-build-commands-and-properties?view= vs-2017

Og for å finne ut den faktiske verdien av makroen:

  • høyreklikk på prosjektet i Solution Explorer, velg Egenskaper
  • velg Bygg Hendelser kategorien
  • Klikk på Rediger pre-build eller Rediger post-build -knappen, enten er greit
  • i vinduet som dukker opp, klikker du Makroer knappen
  • bla nedover listen til du finner ProjectDir, i det neste vinduet er den faktiske verdien

I stedet for å bruke pre-build hendelse i prosjektet, kan du legge den kassen som BeforeBuild-target-kommandoen. På den måten kan ingen feiltakelse fjerne det hvis de setter noe inn i pre-build i prosjektinnstillinger.

  <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>
Svarte 06/02/2019 kl. 13:09
kilden bruker

stemmer
0

Som svar til folk som tyder på utelukkelse av JS-filer fra prosjektet, må jeg si at dette kan bare fungere i små og enkelt løsning programvare. I et stort program dvs. et ERP, finnes det vanligvis flere løsninger per modul, og når hver har JS-filer for seg selv, og leverer JS og andre kildefiler av denne typen er vanligvis laget ved å gjøre dem "Embedded Resources" og noe tilpasset virtuelle banen leverandør eller noe.

Så, hva som fungerer? Denne løsningen kan hjelpe deg, foreslår jeg at du prøver det.

Men anyways, som AM nevnt. Dette er en kjent feil. Og jeg tror den beste løsningen for Loggfila kompilatoren vil være å hoppe skriver JS-filer for de Ts filer som er skrivebeskyttet (innsjekket) selv.

Svarte 06/07/2015 kl. 06:14
kilden bruker

stemmer
0

Jeg opplevde dette i går.

Som Iano nevnt, ikke legg den genererte JS til TFS; eller legge tf checkoutog tf checkintil BeforeBuild målet.

Svarte 20/11/2012 kl. 12:43
kilden bruker

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