Frage Wie lauten die verschiedenen "Build action" -Einstellungen in Visual Studio-Projekteigenschaften und was tun sie?


In den meisten Fällen nehmen Sie einfach das, was Visual Studio als Standard für Sie festlegt ... Ich beziehe mich auf die BuildAction Eigenschaft für jede im Projektmappen-Explorer ausgewählte Datei. Es gibt eine Reihe von Optionen und es ist schwierig zu wissen, was jeder von ihnen tun wird.


749
2017-09-28 12:15


Ursprung


Antworten:


  • Keiner: Die Datei ist nicht in der Projektausgabegruppe enthalten und wird nicht im Buildprozess kompiliert. Ein Beispiel ist eine Textdatei, die Dokumentation enthält, z. B. eine Readme-Datei.

  • Kompilieren: Die Datei wird in die Build-Ausgabe kompiliert. Diese Einstellung wird für Codedateien verwendet.

  • Inhalt: Ermöglicht das Abrufen einer Datei (im selben Verzeichnis wie die Assembly) als Stream über Application.GetContentStream (URI). Damit diese Methode funktioniert, benötigt sie ein benutzerdefiniertes AssemblyAssociatedContentFile-Attribut, das Visual Studio gnadenlos hinzufügt, wenn Sie eine Datei als "Inhalt" markieren.

  • Eingebettete Ressource: Betten die Datei in eine exklusive Assembly-Manifest-Ressource ein.

  • Ressource  (Nur WPF): Einbetten der Datei in eine freigegebene (von allen Dateien in der Assembly mit ähnlicher Einstellung) Assembly-Manifest-Ressource namens AppName.g.resources.

  • Seite  (Nur WPF): Wird verwendet, um ein xaml Datei in baml. Das baml ist dann mit der gleichen Technik wie eingebettet Resource (d. h. verfügbar als `AppName.g.resources)

  • Anwendungsdefinition  (Nur WPF): Markieren Sie die XAML / class-Datei, die Ihre Anwendung definiert. Sie geben das Code-Behind mit dem x: Class = "Namespace.ClassName" an und legen das Startformular / die Seite mit StartupUri = "Window1.xaml" fest

  • Begrüßungsbildschirm  (Nur WPF): Ein Bild, das als markiert ist SplashScreen  wird automatisch angezeigt, wenn eine WPF-Anwendung geladen und dann ausgeblendet wird

  • Entwurfsdaten: Kompiliert XAML-Viewmodels, sodass Benutzersteuerelemente mit Beispieldaten in Visual Studio in der Vorschau angezeigt werden können (verwendet Mock-Typen)

  • DesignDataWithDesignTimeCreatableTypes: Kompiliert XAML-Ansichtsmodelle, sodass Benutzersteuerelemente mit Beispieldaten in Visual Studio in der Vorschau angezeigt werden können (verwendet tatsächliche Typen)

  • Entitätsbereitstellung: (Entitätsrahmen): verwendet, um die Entity Framework-Artefakte bereitzustellen

  • CodeAnalysisDictionary: Eine XML-Datei mit benutzerdefiniertes Wörterbuch zum Rechtschreibregeln


882
2017-09-28 12:29



Aus der Dokumentation:

Die BuildAction-Eigenschaft zeigt an   Was macht Visual Studio mit einer Datei?   wenn ein Build ausgeführt wird. BuildAction   kann einen von mehreren Werten haben:

Keine - Die Datei ist nicht im Lieferumfang enthalten   Projekt-Output-Gruppe und ist nicht   im Build-Prozess kompiliert. Ein   Beispiel ist eine Textdatei, die enthält   Dokumentation, z. B. eine Readme-Datei.

Kompilieren - Die Datei wird in kompiliert   die Build-Ausgabe. Diese Einstellung wird verwendet   für Codedateien.

Inhalt - Die Datei ist nicht kompiliert,   ist aber in der Content-Ausgabe enthalten   Gruppe. Zum Beispiel ist diese Einstellung   der Standardwert für ein .htm oder anderes   Art von Web-Datei.

Eingebettete Ressource - Diese Datei ist   eingebettet in den Hauptprojektaufbau   Ausgabe als DLL oder ausführbare Datei. Es ist   wird normalerweise für Ressourcendateien verwendet.


103
2017-09-28 12:20



Seite - Nimmt die angegebene XAML-Datei und kompiliert diese in BAML und bettet diese Ausgabe in den verwalteten Ressourcen-Stream für Ihre Assembly ein (insbesondere AssemblyName.g.resources). Zusätzlich, wenn Sie die entsprechenden Attribute für das XAML-Stammelement in der Datei, erstellt es eine blah.g.cs-Datei, die eine partielle Klasse des "codebehind" für diese Seite enthalten wird; Dies beinhaltet im Wesentlichen einen Aufruf an den BAML-Goop, die Datei in den Speicher zu hydratisieren und eine der Mitgliedsvariablen Ihrer Klasse auf die neu erzeugten Elemente zu setzen (zB wenn Sie x: Name = "foo" auf ein Element setzen) Sie können dies tun.foo.Background = Purple oder ähnliches.

ApplicationDefinition - ähnlich wie Page, außer es geht onstep furthur, und definiert den Einstiegspunkt für Ihre Anwendung, die Ihr App-Objekt instanziieren wird, Aufruf ausführen, die dann den von der StartupUri -Eigenschaft festgelegten Typ instanziieren und Ihr Hauptfenster geben wird .

Um klar zu sein, wird diese Frage insgesamt in den Ergebnissen festgelegt; Jeder kann zusätzliche BuildActions definieren, indem er eine MSBuild-Aufgabe erstellt. Wenn Sie im Verzeichnis% systemroot% \ Microsoft.net \ framework \ v {version} suchen und sich die Datei Microsoft.Common.targets ansehen, sollten Sie viele weitere entschlüsseln können (z. B. mit VS Pro und höher, Es gibt eine "Shadow" -Aktion, mit der Sie private Accessoren generieren können, die beim Testen privater Klassen helfen.


33
2017-09-28 16:12



VS2010 hat eine Eigenschaft für 'Build Action' und auch für 'Copy to Output Directory'. Eine Aktion von "None" wird also immer noch in das Build-Verzeichnis kopiert, wenn die Eigenschaft copy auf "Copy if Newer" oder "Copy Always" gesetzt ist.

Daher sollte eine Build-Aktion von 'Content' reserviert werden, um Inhalte anzuzeigen, auf die Sie über 'Application.GetContentStream' zugreifen können.

Ich habe die Einstellung 'Build Action' von 'None' und die Einstellung 'Copy to Output Direcotry' von 'Copy if Newer' für einige extern verknüpfte .config-Includes verwendet.

G.


24
2018-04-09 21:37



In VS2008 ist der Dokumenteintrag, der am nützlichsten zu sein scheint:

Windows Presentation Foundation Erstellen einer WPF-Anwendung (WPF)

ms-help: //MS.VSCC.v90/MS.MSDNQTR.v90.en/wpf_conceptual/html/a58696fd-bdad-4b55-9759-136dfdf8b91c.htm

Anwendungsdefinition  Gibt die XAML-Markupdatei an, die die Anwendungsdefinition enthält (eine XAML-Markupdatei, deren Stammelement Anwendung ist). ApplicationDefinition ist obligatorisch, wenn Install wahr ist und OutputType winexe ist. Eine WPF-Anwendung und folglich ein MSBuild-Projekt kann nur eine ApplicationDefinition haben.

Seite  Identifiziert eine XAML-Markupdatei, deren Inhalt in ein Binärformat konvertiert und in eine Assembly kompiliert wird. Seitenelemente werden normalerweise in Verbindung mit einer Code-Behind-Klasse implementiert.

Die häufigsten Seitenelemente sind XAML-Dateien, deren Elemente der obersten Ebene eine der folgenden sind:

Window (System.Windows..::.Window).

Page (System.Windows.Controls..::.Page).

PageFunction (System.Windows.Navigation..::.PageFunction<(Of <(T>)>)).

ResourceDictionary (System.Windows..::.ResourceDictionary).

FlowDocument (System.Windows.Documents..::.FlowDocument).

UserControl (System.Windows.Controls..::.UserControl).

Ressource  Identifiziert eine Ressourcendatei, die in eine Anwendungsassembly kompiliert wird. Wie bereits erwähnt, verarbeitet UICulture Ressourcenelemente.

Inhalt  Identifiziert eine Inhaltsdatei, die mit einer Anwendung verteilt wird. Metadaten, die die Inhaltsdatei beschreiben, werden in die Anwendung kompiliert (mithilfe von AssemblyAssociatedContentFileAttribute).


5
2018-03-31 17:53



Wie wäre es mit diese Seite von Microsoft Connect (Erläuterung der Typen DesignData und DesignDataWithDesignTimeCreatableTypes). Zitat:

Im Folgenden werden die zwei Build-Aktionen für Beispieldatendateien beschrieben.

Beispieldaten .xaml-Dateien müssen einer der folgenden Build-Aktionen zugewiesen werden:

Entwurfsdaten


4
2017-10-10 07:01



  • Fälschungen: Teil des Microsoft Fakes (Unit Test Isolation) -Frameworks. Nicht für alle Visual Studio-Versionen verfügbar. Fälschungen werden verwendet, um Komponententests in Ihrem Projekt zu unterstützen. So können Sie den Code, den Sie testen, isolieren, indem Sie andere Teile der Anwendung durch Stichleitungen oder Unterlegscheiben ersetzen. Mehr hier: https://msdn.microsoft.com/en-us/library/hh549175.aspx

3
2018-01-26 15:53