Visual Studio proje özelliklerindeki çeşitli "Eylem oluştur" ayarları nelerdir ve ne işe yararlar?


Yanıtlar:


1015
  • Yok : Dosya proje çıktı grubuna dahil değildir ve derleme işleminde derlenmez. Örnek olarak Benioku dosyası gibi belgeler içeren bir metin dosyası verilebilir.

  • Derleme : Dosya derleme çıktısında derlenir. Bu ayar kod dosyaları için kullanılır.

  • İçerik : Application.GetContentStream (URI) aracılığıyla bir dosyayı (derlemeyle aynı dizinde) akış olarak almanızı sağlar. Bu yöntemin çalışması için, bir dosyayı "İçerik" olarak işaretlediğinizde Visual Studio'nun zarif bir şekilde eklediği AssemblyAssociatedContentFile özel özniteliğine ihtiyacı vardır

  • Gömülü kaynak : Dosyayı özel bir derleme bildirim kaynağına gömer.

  • Kaynak (yalnızca WPF) : Dosyayı AppName.g.resources adlı paylaşılan (derlemedeki tüm ayarlarla benzer ayarlarla) derleme bildirim kaynağına gömer.

  • Sayfa (yalnızca WPF) : Bir xamldosyayı içine derlemek için kullanılır baml. Ardından baml, aynı teknikle gömülür Resource(yani `AppName.g.resources olarak kullanılabilir)

  • ApplicationDefinition (yalnızca WPF) : Uygulamanızı tanımlayan XAML / sınıf dosyasını işaretleyin. Arkadaki kodu x: Class = "Namespace.ClassName" ile belirtirsiniz ve başlangıç ​​formunu / sayfasını StartupUri = "Window1.xaml" ile ayarlarsınız.

  • SplashScreen (yalnızca WPF) : Bir WPF uygulaması yüklendiğinde ve sonra kaybolduğunda, olarak işaretlenen bir görüntü otomatik olarak SplashScreen gösterilir

  • DesignData : Kullanıcı denetimlerinin Visual Studio'da örnek verilerle önizlenebilmesi için XAML görünüm modellerini derler (sahte türler kullanır)

  • DesignDataWithDesignTimeCreatableTypes : Kullanıcı denetimlerinin Visual Studio'da örnek verilerle önizlenebilmesi için XAML görünüm modellerini derler (gerçek türleri kullanır)

  • EntityDeploy : (Entity Framework) : Entity Framework yapılarını dağıtmak için kullanılır

  • CodeAnalysisDictionary : Yazım kuralları için özel sözcük sözlüğü içeren bir XML dosyası


9
" DesignData ", " Blendability " için kullanılır, böylece doğru ayarlar uygulandığında Tasarım Zamanında gösterilen WPF işaretleme tabanlı Veri eklemenize olanak tanır.
PGallagher

6
Ayrıca, tek tıklamayla dağıtım kullanılırken İçeriğin ekleneceğini unutmayın, ancak "daha yeniyse kopyala" seçilse bile Hiçbiri olmaz.
Dax Fohl

4
Sahte, CodeAnalysisDictionary ve XamlAppRef ne olacak?
Crono

1
@jxramos Bu bilgiler proje dosyasına kaydedilir.
Tobias

18
Ne olmuş AdditionalFiles? VS 2015'te görüyorum ama bunun için bir referans bulamadım.
Holistic Developer

111

Belgelerden:

BuildAction özelliği, bir derleme yürütüldüğünde Visual Studio'nun bir dosyayla ne yaptığını gösterir. BuildAction birkaç değerden birine sahip olabilir:

Yok - Dosya proje çıktı grubuna dahil değildir ve derleme işleminde derlenmez. Örnek olarak Benioku dosyası gibi belgeler içeren bir metin dosyası verilebilir.

Derle - Dosya derleme çıktısında derlenir. Bu ayar kod dosyaları için kullanılır.

İçerik - Dosya derlenmez, ancak İçerik çıktı grubuna dahil edilir. Örneğin, bu ayar .htm veya başka türde bir Web dosyası için varsayılan değerdir.

Katıştırılmış Kaynak - Bu dosya, ana proje oluşturma çıktısına DLL veya yürütülebilir olarak katıştırılır. Genellikle kaynak dosyaları için kullanılır.


1
İlginç! VS2008 yükledim, neden belgelerimde görünmediklerini merak ediyorum?
Paul Batum

PRI kaynağı ne olacak?
Yawar

1
@PaulBatum bu alıntı yapılan tanım için referans ekleyebilir misiniz?
Rajan Prasad

@Raymond 232: Alıntı yapılan nedir?
Peter Mortensen

1
@PaulBatum: Evet gerçekten referans iyi olurdu. Cevap "Belgelerden" ile başlar, bu nedenle bu belgelere bir bağlantı takdir edilecektir.
Marc

35

Sayfa - Belirtilen XAML dosyasını alır ve BAML'de derler ve bu çıktıyı, derlemenizdeki kök XAML öğesinde uygun özniteliklere sahipseniz, derlemeniz için yönetilen kaynak akışına (özellikle AssemblyName.g.resources) gömer. dosyasında, bu sayfa için "codebehind" in kısmi bir sınıfını içeren bir blah.g.cs dosyası oluşturur; bu temelde, dosyayı belleğe yeniden hidratlamak ve sınıfınızın üye değişkenlerinden herhangi birini şimdi oluşturulan öğelere ayarlamak için BAML goop'a bir çağrı içerir (örneğin, bir öğeye x: Name = "foo" yazarsanız) , bunu yapabilirsiniz.foo.Background = Mor; veya benzeri.

ApplicationDefinition - Sayfaya benzer, ancak furthur devam etmez ve uygulamanızın uygulama nesnesini başlatan, üzerinde çalıştırılacak, daha sonra StartupUri özelliği tarafından ayarlanan türü başlatan ve ana pencerenizi verecek olan giriş noktasını tanımlar. .

Ayrıca, açık olmak gerekirse, bu soru genel olarak sonuç kümesinde sonsuzdur; herkes sadece bir MSBuild Görevi oluşturarak ek BuildActions tanımlayabilir. % Systemroot% \ Microsoft.net \ framework \ v {version} \ dizinine bakarsanız ve Microsoft.Common.targets dosyasına bakarsanız, daha fazlasını deşifre edebilmeniz gerekir (örneğin, VS Pro ve üstü ile, özel sınıfların birim sınanmasına yardımcı olmak için özel erişimciler oluşturmanıza olanak tanıyan bir "Gölge" eylemi vardır.


Umarım cevabınızın bazı bölümlerini daha eksiksiz bir referans cevabı almak için Gishu'nun cevabına kopyaladığımı umursamıyorsunuz.
Ian Boyd

32

VS2010'da 'Yapı Eylemi' ve ayrıca 'Çıktı Dizine Kopyala' özelliği vardır. Bu nedenle, copy özelliği 'Daha Yeniyse Kopyala' veya 'Her Zaman Kopyala' olarak ayarlanmışsa, 'Yok' eylemi derleme dizinine kopyalanmaya devam eder.

Bu nedenle, 'Application.GetContentStream' aracılığıyla erişeceğiniz içeriği belirtmek için bir 'İçerik' oluşturma eylemi ayrılmalıdır.

Harici olarak bağlanan bazı .config için 'Hiçbiri'nin' Eylemi Oluştur 'ayarını ve' Daha Yeni Varsa Kopyala '' Çıkış Direcotry'ye Kopyala 'ayarını kullandım.

G.


Bunun için teşekkürler. Ancak bunu nasıl / nerede yaptığım konusunda biraz kafam karıştı. İdeal olarak sadece "Yükle" klasörümü "dahil etmek istiyorum ve tüm alt dosyalar yayınlanmaya dahil edilecek.
SamJolly

Bu, bir öğeyi seçtiğinizde veya sağ tıklatıp özellikleri seçtiğinizde özellikler sekmesinde göreceğiniz nesne gezginindeki tek bir öğenin özellikleri için geçerlidir. İstediğiniz şey için, projeyi sağ tıkladığınızda mevcut öğeyi eklemeniz gerektiğini düşünüyorum. BTW, mevcut öğeyi ekle iletişim kutusunun kaydet düğmesi, bağlantı olarak eklemenizi sağlayan bir açılır menüye sahiptir. Yine de öğeleri klasöre eklemeniz gerekebilir.
Gerard ONeill

5

VS2008'de en faydalı görünen belge girişi:

Windows Presentation Foundation Bir WPF Uygulaması Oluşturma (WPF)

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

ApplicationDefinition Uygulama tanımını (kök öğesi Uygulama olan bir XAML biçimlendirme dosyası) içeren XAML biçimlendirme dosyasını tanımlar. Install, True ve OutputType winexe olduğunda ApplicationDefinition zorunludur. Bir WPF uygulaması ve dolayısıyla bir MSBuild projesi yalnızca bir ApplicationDefinition'a sahip olabilir.

Sayfa İçeriği ikili biçime dönüştürülen ve derlemeye derlenen bir XAML biçimlendirme dosyasını tanımlar. Sayfa öğeleri genellikle bir arka plan kod sınıfıyla birlikte uygulanır.

En yaygın Sayfa öğeleri, üst düzey öğeleri aşağıdakilerden biri olan XAML dosyalarıdır:

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).

Kaynak Uygulama derlemesinde derlenen bir kaynak dosyasını tanımlar. Daha önce de belirtildiği gibi, UICulture Kaynak öğelerini işler.

İçerik Bir uygulama ile dağıtılan bir içerik dosyasını tanımlar. İçerik dosyasını açıklayan meta veriler uygulamaya derlenir (AssemblyAssociatedContentFileAttribute kullanılarak).


4

Peki bu sayfayı Microsoft Bağlan gelen türlerini (DesignData ve DesignDataWithDesignTimeCreatableTypes açıklayan). Alıntı yapmak:

Aşağıda, Örnek Veri dosyaları için iki Oluşturma Eylemi açıklanmaktadır.

Örnek veri .xaml dosyalarına aşağıdaki Derleme İşlemlerinden biri atanmalıdır:

DesignData : Örnek veri türleri sahte türler olarak oluşturulur. Örnek veri türleri oluşturulamıyorsa veya örnek veri değerlerini tanımlamak istediğiniz salt okunur özelliklere sahipse bu Derleme Eylemini kullanın.

DesignDataWithDesignTimeCreatableTypes : Örnek veri türleri, örnek veri dosyasında tanımlanan türler kullanılarak oluşturulacaktır. Örnek veri türleri varsayılan boş kurucuları kullanılarak oluşturulabilir olduğunda bu Yapı Eylemini kullanın.

Değil bu yüzden inanılmaz derecede ayrıntılı, ancak en azından bir ipucu verir. Bu MSDN izlenecek yol da bazı fikirler veriyor. Bu Build Action'larının Silverlight olmayan projeler için de geçerli olup olmadığını bilmiyorum.


4
  • Sahte: Microsoft Sahte (Birim Test Yalıtımı) Çerçevesinin bir parçası. Tüm Visual Studio sürümlerinde mevcut değildir. Sahte, projenizdeki birim testlerini desteklemek için kullanılır ve uygulamanın diğer bölümlerini saplama veya dolgularla değiştirerek test ettiğiniz kodu izole etmenize yardımcı olur. Daha fazla bilgi için: https://msdn.microsoft.com/en-us/library/hh549175.aspx
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.