Postupy: určení událostí sestavení (C#)
Pomocí událostí sestavení můžete zadat příkazy, které se spustí před spuštěním sestavení nebo po dokončení sestavení. Události sestavení se spustí pouze v případě, že sestavení úspěšně dosáhne těchto bodů v procesu sestavení.
Když je projekt sestaven, události před sestavením jsou přidány do souboru s názvem PreBuildEvent.bat a události po sestavení jsou přidány do souboru s názvem PostBuildEvent.bat. Pokud chcete zajistit kontrolu chyb, přidejte do kroků sestavení vlastní příkazy pro kontrolu chyb.
Zadat událost sestavení
V Průzkumník řešení vyberte projekt, pro který chcete zadat událost sestavení.
v nabídce Project klikněte na vlastnosti.
Vyberte kartu události sestavení .
V poli příkazový řádek události před sestavením zadejte syntaxi události sestavení.
Poznámka
Události před sestavením se nespustí, pokud je projekt aktuální a není spuštěno žádné sestavení.
V poli příkazový řádek události po sestavení zadejte syntaxi události sestavení.
Poznámka
Přidejte
callpříkaz před všechny příkazy po sestavení, které spouštějí .bat soubory. Příkladem jecall C:\MyFile.batnebocall C:\MyFile.bat call C:\MyFile2.bat.V poli Spustit událost po sestavení určete, za jakých podmínek se má spustit událost po sestavení.
Poznámka
Chcete-li přidat syntaxi s délkou, nebo vybrat makra sestavení z dialogového okna Příkazový řádek události před sestavením/po sestavení, klikněte na tlačítko se třemi tečkami (...) a zobrazte textové pole.
Syntaxe události sestavení může obsahovat jakýkoli příkaz, který je platný na příkazovém řádku nebo v souboru .bat . Název dávkového souboru by měl předcházet
call, aby bylo zajištěno, že budou provedeny všechny následné příkazy.Poznámka
Pokud událost před sestavením nebo po sestavení není úspěšně dokončena, můžete ukončit sestavení tím, že se akce události ukončí s kódem jiným než nula (0), což označuje úspěšnou akci.
Příklad
Následující postup ukazuje, jak nastavit minimální verzi operačního systému v manifestu aplikace pomocí příkazu .exe , který je volán z události po sestavení (soubor .exe. manifest v adresáři projektu). Minimální verze operačního systému je číslo se čtyřmi částmi, například 4.10.0.0. Pro nastavení minimální verze operačního systému příkaz změní <dependentOS> část manifestu:
<dependentOS>
<osVersionInfo>
<os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
</osVersionInfo>
</dependentOS>
Vytvoření příkazu .exe pro změnu manifestu aplikace
Vytvořte nový projekt konzolové aplikace pro příkaz. Pojmenujte projekt ChangeOSVersionCS.
V souboru program. cs přidejte následující řádek do dalších direktiv v
usinghorní části souboru:using System.Xml;V
ChangeOSVersionCSoboru názvů nahraďteProgramimplementaci třídy následujícím kódem:class Program { /// <summary> /// This function sets the minimum operating system version for a ClickOnce application. /// </summary> /// <param name="args"> /// Command Line Arguments: /// 0 - Path to application manifest (.exe.manifest) /// 1 - Version of OS ///</param> static void Main(string[] args) { string applicationManifestPath = args[0]; Console.WriteLine("Application Manifest Path: " + applicationManifestPath); // Get version name. Version osVersion = null; if (args.Length >=2 ){ osVersion = new Version(args[1]); }else{ throw new ArgumentException("OS Version not specified."); } Console.WriteLine("Desired OS Version: " + osVersion.ToString()); XmlDocument document; XmlNamespaceManager namespaceManager; namespaceManager = new XmlNamespaceManager(new NameTable()); namespaceManager.AddNamespace("asmv1", "urn:schemas-microsoft-com:asm.v1"); namespaceManager.AddNamespace("asmv2", "urn:schemas-microsoft-com:asm.v2"); document = new XmlDocument(); document.Load(applicationManifestPath); string baseXPath; baseXPath = "/asmv1:assembly/asmv2:dependency/asmv2:dependentOS/asmv2:osVersionInfo/asmv2:os"; // Change minimum required operating system version. XmlNode node; node = document.SelectSingleNode(baseXPath, namespaceManager); node.Attributes["majorVersion"].Value = osVersion.Major.ToString(); node.Attributes["minorVersion"].Value = osVersion.Minor.ToString(); node.Attributes["buildNumber"].Value = osVersion.Build.ToString(); node.Attributes["servicePackMajor"].Value = osVersion.Revision.ToString(); document.Save(applicationManifestPath); } }Příkaz přijímá dva argumenty: cestu manifestu aplikace (tj. složka, ve které proces sestavení vytváří manifest, obvykle ProjectName. Publish) a novou verzi operačního systému.
Sestavte projekt.
Zkopírujte soubor .exe do adresáře, jako je například C:\TEMP\ChangeOSVersionVB.exe.
Dále vyvolejte tento příkaz v události po sestavení pro úpravu manifestu aplikace.
Vyvolat událost po sestavení pro úpravu manifestu aplikace
vytvořte nový projekt aplikace model Windows Forms a pojmenujte ho CSWinApp.
po výběru projektu v Průzkumník řešení v nabídce Project klikněte na položku vlastnosti.
v návrháři Project najděte stránku publikování a nastavte umístění publikování na C:\TEMP.
Publikujte projekt kliknutím na Publikovat nyní.
Soubor manifestu je sestaven a uložen do souboru C:\TEMP\CSWinApp_1_0_0_0\CSWinApp.exe. manifest. chcete-li zobrazit manifest, klikněte pravým tlačítkem myši na soubor, klikněte na možnost otevřít v aplikaci, vyberte možnost vybrat program v seznamu a poté klikněte na možnost Poznámkový blok.
Vyhledejte v souboru
<osVersionInfo>element. Například verze může být:<os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />zpět v návrháři Project klikněte na kartu události sestavení a pak klikněte na upravit po sestavení.
Do pole příkazový řádek události po sestavení zadejte následující příkaz:
C:\TEMP\ChangeOSVersionCS.exe "$(TargetPath).manifest" 5.1.2600.0Při sestavování projektu tento příkaz změní minimální verzi operačního systému v manifestu aplikace na 5.1.2600.0.
Vzhledem k tomu, že
$(TargetPath)makro vyjadřuje úplnou cestu pro vytvářený spustitelný soubor,$(TargetPath).manifesturčí manifest aplikace vytvořený v adresáři bin . Publikování zkopíruje tento manifest do umístění pro publikování, které jste nastavili dříve.Publikujte projekt znovu.
Verze manifestu by teď měla číst:
<os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />