5 Stimmen

Visual Studio Setup Projekt mit allen Dateien aus einem Ordner

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.

7voto

Geoffrey Punkte 71

Um den gesamten Ordner hinzuzufügen, öffnen Sie einfach ein Windows-Explorer-Fenster und ziehen Sie dann alle Dateien, die Sie hinzufügen möchten, in die Dateisystemansicht.

7voto

Peter Punkte 160

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.

4voto

pauloya Punkte 2525

Es scheint, als gäbe es keine einfache Lösung für diese Frage. Letztendlich haben wir das Setup-Tool geändert und den Advanced Installer zur Erstellung des Setups verwendet, der über eine nette Funktion zur Synchronisierung von Dateien innerhalb eines Ordners für die Bereitstellung verfügt.

4voto

AikenDev Punkte 39

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!

2voto

Sean Punkte 1851

Sie können mit der rechten Maustaste auf den Ordner im Explorer klicken und auf Kopieren klicken und dann mit der rechten Maustaste auf den Ordner in der Dateisystemansicht im Setup-Projekt klicken und auf Einfügen klicken. Ziehen und Ablegen hat bei mir nicht funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X