Probléma:
Ha hozzá a létrehozott * .js fájlok TFS, majd TFS levelet-megvédi őket, ha megnézed őket, vagy nem ellenőrzik őket. Tehát, ha megváltoztatja a * .ts fájlt, akkor nem generál a * Js fájlt, mert a fájl írásvédett.
==> Hiba
De ha nem ellenőrzi őket, a * .js fájl hiányzik, ha fut telepíteni.
==> fordít, de Runtime error
Továbbá, ha szükség van rá, mint egy beágyazott forrás, akkor nem zárja ki a fájlt ...
További probléma 1:
Ha fut „újraépítése megoldás”, a Visual Studio törölni szeretné a * .js fájlok által generált géppel, mielőtt végrehajtja építeni.
De törlés nem lehetséges, mert a * Js fájlokat írásvédett ...
==> Error
További probléma 2:
Mivel tiszta nem „Build”, az előre építeni események nem kerülnek végrehajtásra a tiszta ...
Tehát, ha eltávolítja a írásvédelem a pre-build, akkor fog működni, ha „építeni”, de ez sikertelen lesz, ha úgy dönt, „újraépítése”, függetlenül attól, hogy te azt a megoldást, vagy a projektben.
További probléma 3:
Nem lehet meghatározni egy előre tiszta esemény parancsot a projekt-beállítások szerkesztő.
Szóval, itt van, mit tehetünk:
Run attrib -r /s(eltávolítja írásvédelem) a typescripted * .js fájlok pre-build lépéseket.
például
attrib -r /s "$(ProjectDir)Resources/Scripts/0/*.js"
Ez működik, mert * bővült:
- Ha a fájl nem létezik, nincs hiba, mert nem parancs kerül végrehajtásra.
- Ha a fájl nem létezik, nincs hiba, a parancs végrehajtásra kerül.
Ha azt futtatni egy fájlnevet, akkor nem, ha a fájl nem létezik.
Most meg kell szerkeszteni a projekt fájlt (* .csproj) kézzel, hogy adjunk egy előre tiszta cselekvés.
A pre-tiszta cselekvés ugyanaz, mint a pre-build lépéseket.
<Target Name="BeforeClean">
<!-- DO YOUR STUFF HERE -->
<Exec Command="attrib -r /s "$(ProjectDir)Resources/Scripts/0/*.js"" />
</Target>
És tessék. Most megnézheted a * .js fájlok, lehet szerkeszteni a * .ts fájlt (akkor kell Védelem a * Js fájlt, vagy fuss építmények utána)
Ha azt szeretnénk, hogy futtatni a file-onként alapján a parancs:
if EXIST "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js" (
attrib -r "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"
)
vagy XML formátumú:
<Exec Command="if EXIST "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js" (
attrib -r "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"
)" />
És ahelyett, hogy eltávolítja a írásvédett attribútummal nagykereskedelmi a pre-build akció, akkor is ellenőrizze az egyes fájlokat ki a TFS parancssori eszközt:
"$(DevEnvDir)CommonExtensions/Microsoft/TeamFoundation/Team Explorer/tf.exe" checkout /lock:none "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"
By the way, akkor talál egy listát VisualStudio / MSBuild makrók itt:
https://docs.microsoft.com/en-us/cpp/ide/common-macros-for-build-commands-and-properties?view= vs 2017
És, hogy megtudja, a tényleges érték a makrót:
- jobbklikk a projekt a Solution Explorerben válasszuk a Tulajdonságok
- válassza ki a Beépített Events fülre
- kattintson a Szerkesztés pre-build vagy szerkesztése utáni építmények gomb, vagy finom
- A felugró ablakban kattintson a Makrók gombot
- görgessen a listában, amíg nem talál
ProjectDir, a következő panelre van tényleges értéke
Továbbá, ahelyett, hogy a pre-build esetén a projekt, akkor adjuk hozzá a pénztárnál, mint BeforeBuild célzott parancsot. Így senki nem tudja eltávolítani accidentially ha tesz valamit a pre-build projekt-beállításokat.
<Target Name="BeforeBuild">
<Exec Command=""$(DevEnvDir)CommonExtensions/Microsoft/TeamFoundation/Team Explorer/tf.exe" checkout /lock:none "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"" />
</Target>