XML v release po ukončení aplikace vrátí do původního stavu   otázka

Visual Studio, Offtopic, XML

Dobrý den,

rád bych se opět dotázal pro radu ohledně xml.

Svou aplikaci už jsem dotáhl skoro do konce.

Poté co jsem provedl build -> build z horního menu, jsem očekával, že vše pujde a ono také do jisté míry taky jde. Jediný problém, že:

1) Program načte xml soubor z této složky (byl přidaný add - new item - xml file) pomocí xmldocument

2) něco z něj přečte (takže se načtení povedlo?) něco do něj zapíše a použije něco.save("DataUziv.xml")- kontoluji to přes prohlížeč a ve chvíli, kdy je program spuštěný, to tam opravdu přibude

3) a teď ta chyba - poté co aplikaci ukončením se xml soubor vrátí do původního stavu

Předpokládal jsem, že je to tím zda mám v projektu xml označen jako "copy always" nebo "copy if newer" nebo "do not copy", ale zjistil jsem, že to tím není (zkoušel jsem všechny tyto varianty).

Uvažuji opět od základu zcela špatně, zapomněl jsem někde něco důležitého nebo mám někde hledat jen nějakou drobnou chybičku, ale pricip je OK?

Díky za Vaše reakce

nahlásit spamnahlásit spam 0 odpovědětodpovědět

ještě jsem zapomněl, že to, kde spouštím exe soubor a kde bydlí i to xml je projects/jméno projektu/jméno projektu/bin/release a používám MS VB 2010 express...

Ještě jednou díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Copy If Newer by tento problém mělo řešit, jedině že byste měl nějak pokažené datumy poslední změny souborů. Každopádně pokud tam už soubor máte, můžete klidně dát Do Not Copy. Tahle nastavení fungují, používám je v desítkách aplikací. Pokud se soubor ztrácí, musí to být něčím jiným.

Nemáte třeba tu složku synchronizovanou přes nějaký Live Mesh nebo podobnou službu, že by neustále měnící se soubory špatně synchronizovala nebo tak něco.

Anebo nezapomněl jste v aplikaci nějaký kus testovacího kódu, který ten soubor přepíše?

A ještě dávejte pozor, že v Debug módu a v Release módu to kompiluje do jiných adresářů, takže tam se ty XMLka mohou lišit.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

děkuji za odpověď.

Co se týče kódu - normálně xml načtu jako xmldocument, něco tam změním (přidám elementy, změním innertexty) a uložím. Nic víc s tím nedělám. Když ho ukládám a načítám, nemám tam celou cestu, ale pouze "DataUziv.xml" Při běhu programu se to změní, po vypnutí to zůstane změněné a při novém zapnutí se to vrátí do původního stavu, jaký jsem měl VS.

Copy if newer opravdu nepomohlo. Neměl jsem to spíš řešit nějak jinak, pomocí celé cesty, nebo pomocí publish nebo někde něco naklikat? Dal jsem jenom build -> build.

Ve složce debug i release, to mám pokaždé ve stejné složce jako exáč. Radost z "dokončeného" projektu je pryč :))

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A dělá to jen když program postíte přes Visual Studio?

Zkuste ho spustit ručně, schválně jestli se XMLko přemaže.

Dělá se to přes Copy If Newer, žádné publish ani nic jiného nepotřebujete. Copy If Newer zajistí, že pokud je soubor v projektu novější, nakopíruje se při buildu do cílového adresáře.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

ale já bohužel mluvím o tom, když ho pouštím ručně...

On nakopírovaný v tom adresáři je, ale po dalším spuštění se vrátí do původního stavu, zkusím tedy ještě jednou...

Nebylo by řešení, aby se program po spuštění "podíval," jestli ten dokument nenajda třeba v documents and setting/blabla, a pokud ne, tak ho tam šoupne a pak od příště by ho tam měl a ukládal by to do něj. Nebo ho nechat tam, kde je, ale po prvnim spuštění ho přejmenovat a od příště ho nechat hledat ten nový soubor?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A nepřepisujete si ho z té aplikace?

Nebo ten XML soubor zkuste nastavit jako jen pro čtení a uvidíte, která aplikace spadne (pokud vůbec nějaká).

Tak mě napadá, nepouštíte tu aplikaci rovnou z Program Files nebo z disku C na Windows Vista nebo vyšší? Tam funguje věc zvaná virtualizace, což znamená, že změny souboru se zapisují jinam.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback