it-swarm.com.de

Visual Studio Solutions-Ordner als echte Ordner

Ich habe eine Visual Studio-Lösung. Derzeit ist es eine leere Lösung (= keine Projekte) und ich habe ein paar Lösungsordner hinzugefügt.

Lösungsordner scheinen nur "virtuelle Ordner" zu sein, da sie nicht wirklich im Dateisystem erstellt wurden und sich Dateien in Lösungsordnern nur im selben Ordner wie die SLN-Datei befinden.

Gibt es eine Einstellung, die ich übersehen habe und die Visual Studio anweist, Projektmappenordner als "echte" Ordner zu behandeln, dh sie im Dateisystem zu erstellen und Dateien in dieses zu verschieben, wenn ich sie in der Projektmappe in einen dieser Ordner verschiebe?

Edit: Danke. Dann mache ich einen Vorschlag für VS2010 :)

102
Michael Stum

Keine spezielle Einstellung. Ich denke nicht, dass es unterstützt wird.

Sie können echte Ordner in einem "Projekt" innerhalb der Lösung erstellen, jedoch nicht in der Lösung selbst.

38
svlists

Es gibt eine Problemumgehung , die sich tatsächlich wie erwartet verhält .

  1. Fügen Sie der Lösung eine neue oder vorhandene Website hinzu. (Ich erstelle normalerweise eine neue.)
  2. Stellen Sie einfach sicher, dass es in Ihrem Lösungsordner erstellt wurde. (Manchmal erstelle ich sogar einen "Link" zu einem externen Ordner, z. B. "Docs" oder "Marketing" auf einer Netzwerkfreigabe. In diesem Fall wird er natürlich von Git ignoriert.)
  3. Stellen Sie sicher, dass Sie in den "Projekt" -Einstellungen oder im Konfigurations-Manager diese "Website" vom Erstellen und Bereitstellen ausschließen !

Fertig Der Projektmappen-Explorer wird jetzt alle Änderungen im Dateisystem und umgekehrt (einschließlich der Unterordner) widerspiegeln.

Ich (vermisse) benutze es für Spezifikationen, Dokumente, PM und einige DevOps-Skripte, die im Team geteilt werden. Es ist einfach zu wählen, was in die Quellcodeverwaltung einbezogen werden soll oder nicht, und (falls festgelegt) up richtig) es kollidiert nicht mit build.

Ich weiß, dass die Funktion nicht für diesen Anwendungsfall vorgesehen ist, aber bis auf das möglicherweise irreführende "Projekt" -Symbol habe ich noch keinen Mangel an diesem Hack gefunden. Und es gibt immer noch Anwendungsfälle, in denen die von VS bereitgestellten klassischen (virtuellen) Lösungsordner in das Bild passen. Was denkst du?

38
Michael

Klicken Sie in Visual Studio 2017 im Projektmappen-Explorer auf das Symbol "Lösungen und Ordner". Diese Schaltfläche wechselt von der virtuellen "Lösungsansicht" in eine "Quellansicht", die dem Layout der Ordner und Dateien im Dateisystem entspricht. Wenn Sie einen neuen Ordner hinzufügen, wird der Ordner physisch am erwarteten Speicherort erstellt. solutions and folders .

21
OdeToCode

Sara Ford hat dazu ein Makro beigesteuert. Wenn Sie in Visual Studio 2010 den Makro-Explorer öffnen, wird ein Makro mit dem Namen "GenerateSlnFolderOnDirStructure" angezeigt. Dies automatisiert die Erstellung der Lösungsordner und fügt die Dateien hinzu.

8
SwampyFox

Die gewählte Antwort legt nahe, dass es möglich wäre, tatsächliche Projekte anstelle von Lösungsordnern zu verwenden, erklärt jedoch nicht wirklich, wie. Ich denke, was ich hier beschreibe, ist möglicherweise der am wenigsten umständliche Weg, dies zu erreichen ... :-P

Das Problem mit regulären Projektdateien ist, dass sie schließlich von MSBUILD kompiliert werden. Und wenn Sie ein Projekt haben möchten, das nur nicht kompilierbare Dateien enthält, wird das ein Problem sein .

Vor einiger Zeit hat Visual Studio einen neuen Projekttyp eingeführt: Shared Project (Erweiterung .shproj). Dieser Projekttyp wird standardmäßig nicht kompiliert, jedoch nur, wenn (und nur, wenn) auf ihn von einem anderen Projekt verwiesen wird.

Ein Teil des Tricks besteht hier darin, gemeinsam genutzte Projekte anstelle von Lösungsordnern zu verwenden. Es ist natürlich möglich, ein freigegebenes Projekt hinzuzufügen, auf das noch nie von einem anderen Projekt verwiesen wird, sodass das oben beschriebene Problem vermieden werden kann.

Dann mit <None Include="**/*" />-Klausel in der .shproj-Datei, wir können dafür sorgen, dass automatisch alle neuen Dateien und/oder Unterordner wiedergegeben werden.

Also machen Sie im Grunde Folgendes:

  • Erstellen Sie einen neuen Ordner in Ihrer Lösung.
  • Fügen Sie eine neue .shproj-Datei im Stammverzeichnis dieses neuen Ordners hinzu.
  • Verweisen Sie auf das neue .shproj in Ihrer Lösung.

In meinem Fall habe ich beispielsweise eine DockerDev.shproj erstellt, damit ich einige Docker-bezogene Skripts gruppieren kann, die nur auf unseren Entwicklungsmaschinen ausgeführt werden:

<?xml version="1.0" encoding="utf-8"?>
<!-- DockerDev/DockerDev.shproj -->
<Project ToolsVersion="4.0" xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <None Include="**/*" />
  </ItemGroup>
</Project>

Diese .shproj-Datei verfolgt alle Dateien in allen Unterordnern dieses neuen DockerDev Ordners in meiner Lösung.

Soweit ich sehen konnte, funktioniert diese Lösung ziemlich genau so, wie es das OP verlangt hat: Sie wird als nicht kompilierbarer Verweis auf einen Ordner funktionieren und automatisch alle Änderungen widerspiegeln, die daran vorgenommen wurden.

6
rsenna

Ordner zum Lösungsordner von Cecilia Wirén - CeciliaSHARP

Das problemlose Hinzufügen mehrerer Dateien zum Projektmappenordner entfällt. Verwenden Sie einfach das Kontextmenü für die Lösung und direkt unterhalb der Option zum Erstellen eines neuen Lösungsordners finden Sie nun 'Ordner als Lösungsordner hinzufügen'. Dadurch wird ein Lösungsordner mit demselben Namen erstellt, den Sie ausgewählt haben, und die Elemente in diesem Ordner werden dem Lösungsordner hinzugefügt. Dadurch werden die Dateien auf der Festplatte nicht verschoben.

3
ryan

Hinweis: Ja, dies ist möglich, Sie können einen Ordner im Stammverzeichnis erstellen, aber sein kleines bisschen schwierig ....

Durch zusätzliche Anstrengungen können Sie es schaffen. Wie? Folgen wir dem step--

  • 1-Ordner erstellen, z. B .: "neuer Ordner" im Stammverzeichnis (in dem sich Ihre .sln-Datei befindet).
  • 2.Kopieren Sie Ihre Projekte und fügen Sie sie in den Ordner ein.
  • 3.Gehen Sie zu Ihrer SLN-Datei und suchen Sie verschobene Projekte und fügen Sie den neuen Ordner\in der Adresse des verschobenen Projekts hinzu.
  • 4. Speichern Sie die SLN-Datei.
  • 5.Öffnen Sie Ihr Projekt und legen Sie das Repository in git oder so fest ...
  • 6.Nehmen Sie das Repository an einem neuen Ort.

    Du bist fertig...

wenn Sie immer noch nicht in der Lage sind, Ihren Ordner zu sehen -----

  • 1.Fügen Sie einen Lösungsordner xyz hinzu.
  • 2.Öffnen Sie die SLN-Datei und ändern Sie den Ordnernamen in Ihren Ordnernamen.

Herzlichen Glückwunsch, Sie sind fertig.

Wenn Sie auf ein Problem stoßen, schreiben Sie mir einfach um Hilfe.

3
Ankit

Nein, es wird nicht unterstützt. Wie Sie vermutet haben, handelt es sich bei Lösungsordnern lediglich um virtuelle Untereinträge in der SLN-Datei, die nichts mit dem Dateisystem zu tun haben.

3
Alan

Visual Studio unterstützt dies nicht. Ich habe eine Erweiterung erstellt, die etwas Ähnliches für VS2013 macht. Es ordnet Lösungsordner physischen Ordnern auf Ihrer Festplatte zu, obwohl die Zuordnung eine Möglichkeit ist (von der Festplatte zur Lösung). Dies bedeutet, dass der Inhalt eines Lösungsordners den Inhalt des Festplattenordners widerspiegelt und nicht umgekehrt.

Damit kann die Erweiterung immer noch nützlich sein. Es unterstützt das Zuordnen von Lösungsordnern zu physischen Ordnern, das Filtern von Dateien und Verzeichnissen basierend auf Regex und das Speichern von Zuordnungen in Ihrer SLN-Datei. Die Eigenschaften sind nicht aufdringlich, sodass Entwickler ohne die Erweiterung die SLN weiterhin öffnen können und nicht betroffen sind.

In der Visual Studio-Galerie gehostet: https://visualstudiogallery.msdn.Microsoft.com/69e19ea6-4442-4cb6-b300-044dd21f02bd

Bearbeiten: Auf bitbucket hochgeladen. Jetzt Open Source. MIT Lizenz. https://bitbucket.org/LSS_NorthWind/physical-solution-folders

2
northWind

Erstellen Sie "Lösungsordner". Dadurch wird ein logischer Ordner erstellt, jedoch kein physischer. Klicken Sie mit der rechten Maustaste auf den Lösungsordner und öffnen Sie einen neuen Projektdialog. Bevor Sie jedoch auf OK klicken, müssen Sie einen Projektspeicherort in den gewünschten physischen Ordner ändern, und VS erstellt ihn und legt das Projekt darin ab.

2
rc21

Ich wollte diese Funktion selbst ein paar Mal, aber am Ende des Tages wollen Sie wirklich NICHT die Fähigkeit, dies zu tun. Stellen Sie sich Ihre Lösung (Datei) als Stamm einer Webanwendung vor und stellen Sie sich Lösungsordner als virtuelle Verzeichnisse vor (wörtlich und funktional). Der Inhalt eines virtuellen Webverzeichnisses kann sich physisch auf einem anderen Server befinden. In Visual Studio wurde das Konzept der Lösungsordner durcheinandergebracht, indem Sie neue Dateien in dem Ordner erstellen konnten. Sie sollten immer "Vorhandenes hinzufügen" beim Hinzufügen von Inhalten. Wenn Sie eine vorhandene Datei hinzufügen, wird ein Link zum Quellspeicherort der Datei erstellt.

Der Grund, warum Sie nicht möchten, dass sich Lösungsordner wie "physische" Ordner verhalten, ist, dass Ihr Lösungslayout möglicherweise nicht unbedingt die gleiche Konvention verwendet wie Ihr Versionsverwaltungslayout. Mithilfe von Lösungsordnern können Sie die Hierarchie Ihrer Projekte so anpassen, dass Sie Projekte und Elemente nach Belieben gruppieren und dann entscheiden können, ob Sie sie nicht mögen, und sie erneut ändern, ohne den Albtraum des Verschiebens von Quellcodeverwaltungselementen zu erleben um und irritiert den Rest Ihres Teams.

2
Paul Easter

Der Ordner, der unter der Lösung erstellt wird, ist wie gesagt virtuell. Möglicherweise wird dies als Problemumgehung bezeichnet, aber Sie können den Ordner physisch auf der Festplatte erstellen, bevor oder wenn Sie ein neues Objekt/Projekt hinzufügen und Robert ein Geschwister Ihres Vaters sein sollte.

bei näherer Betrachtung sollte ich vielleicht erklären, dass "Bob ist dein Onkel" deine Strafe bedeutet.

1
dove

Sie können echte Ordner hinzufügen, indem Sie "Neuen Filter hinzufügen" für eine Visual Studio-Projektdatei auswählen. Sie können auch "Neuen Filter hinzufügen" unter einem vorhandenen Ordner ausführen. Nachdem der Ordner erstellt wurde, benennen Sie ihn um und fügen Sie die Quell- oder Headerdatei oder eine andere Datei hinzu, die zu Ihrem Projekt passt. Dies ist eine mir bekannte Möglichkeit, mit der wir echte Ordner über die Visual Studio-IDE erstellen können.

1
Abhijit K Rao

Ich habe eine Art Workaround dafür (es ist nicht großartig, aber es funktioniert).

  1. Erstellen Sie einen Ordner in Ihrer Lösung (d. H. "Contoso")
  2. Klicken Sie mit der rechten Maustaste auf die Lösung und klicken Sie dann auf "Ordner im Projektmappen-Explorer öffnen".
  3. Erstellen Sie den physischen Ordner (d. H. "Contoso") im Lösungsverzeichnis
  4. Kopieren/Erstellen von Dateien im physischen Ordner.
  5. Ziehen Sie die Dateien in den virtuellen Ordner im Projektmappen-Explorer.

Es ist nicht großartig, weil Sie die Dateiverweise manuell pflegen müssen, aber es funktioniert für mich.

0
series0ne