Wir haben ein Setup-Projekt, das derzeit Project Outputs aus verschiedenen Visual Studio-Projekten hinzufügt. Wir möchten das Verpackungssystem ändern und einen Ordner mit einer Reihe von Bereitstellungsdateien verwenden, die für die Bereitstellung im Setup vorbereitet sind.
Das bedeutet jedoch, dass wir die Dateien nacheinander hinzufügen müssen, und zwar bei jeder Version, wenn neue Dateien hinzukommen.
Ich sah in diesem Frage dass wir keine Dateien mit Regeln wie *.aspx hinzufügen können.
Ich überlege daher, ein kleines Tool zu erstellen, das die vdproj-Datei auf der Grundlage der verfügbaren Dateien ändert. Können Sie mir mit dem Format dieser Datei helfen? Es scheint, dass es einige GUIDs gibt, die mit jeder enthaltenen Datei verbunden sind.
Hat jemand eine bessere Lösung, wie man das machen kann?
Wir denken noch nicht daran, ein anderes Setup-Tool zu verwenden, sondern suchen nur nach einer einfachen Lösung für die Dateipaketierung.
Antworten
Zu viele Anzeigen?Ich habe endlich eine echte Lösung für dieses Problem gefunden. Was ich brauchte, ist das Hinzufügen aller Dateien in einem bestimmten externen Verzeichnis (das nicht Teil des Projekts ist) zum Setup-Projekt während der Build-Zeit, d.h. wenn eine Datei zu diesem externen Verzeichnis hinzugefügt wird, wird sie automatisch in das Installationsprogramm mit dem nächsten Build aufgenommen.
Ich habe ein neues Projekt in der Projektmappe erstellt (Projekt Klassenbibliothek) und alles daraus entfernt: Class1.cs, AssemblyInfo.cs, und die relevanten ItemGroups der csproj-Datei mit <Compile>
Elemente für die oben genannten Dateien und die <Reference>
Elemente für das Include.
Dann habe ich eine neue ItemGroup hinzugefügt:
<ItemGroup>
<Content Include="Path\To\The\Directory\**\*.*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
Auf diese Weise enthält das neue Projekt keine Dateien, aber es referenziert alle Dateien (rekursiv, angegeben durch die \**\
aus dem angegebenen Verzeichnis) als Inhalt der Dateien .
Bei der Erstellung werden diese Dateien also als Inhalt der Dateien daher in das Ausgabeverzeichnis des neuen Projekts kopiert.
Warum habe ich das alles getan? Nur weil Setup Project eine Option hat, die die Inhaltsdateien aus einem anderen Projekt!
Auf diese Weise können Sie also beliebige externe Dateien "Teil" der Lösung machen, ohne sie tatsächlich aufzulisten, die Liste der Dateien wird ausgewertet in Bauzeit und referenzieren Sie sie dann in einem Setup-Projekt.
Wir hatten das gleiche Problem. Sie können NICHT ziehen/ablegen. Aber Sie können im Windows Explorer zu den gewünschten Inhalten gehen, die Elemente kopieren (die auch Unterordner enthalten können), dann zum VS Installer zurückkehren und diese einfügen (z. B. den Anwendungsordner).
Anmerkung. Wenn Sie benutzerdefinierte Ordner erstellen müssen (z. B. c: \html ) können Sie auch diesen Ansatz verwenden, aber Sie müssen den benutzerdefinierten Ordner zuerst im linken Bereich erstellen (unter Angabe des absoluten Pfads als Ziel), dann wieder in den linken Bereich gehen und einfügen.
Diese Methode funktioniert, um einen Satz von Ordnern zu verpacken, aber sie synchronisiert NICHT Ordner, die unterschiedliche Inhalte haben können! Wenn sich der Inhalt zwischen den Einsätzen ändert, müssen Sie ihn erneut kopieren/einfügen, damit die Installationsdatei alles enthält!
- See previous answers
- Weitere Antworten anzeigen