Yanıtlar:
Build action özelliğindeki MSDN makalesi farklılıkları açıklar.
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.
İç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.
Farklardan biri nasıl yayınlandıklarıdır; "Hiçbiri" öğeleri bir yayına dahil edilmez, "İçerik" öğeleri eklenir; örneğin, Yayınla sekmesindeki "Uygulama Dosyaları" iletişim kutusunda.
CopyToOutputDirectory
küme ile Yok olarak bildirilen bir öğeniz varsa, bir true
dotnet publish
% 100 emin değilim ( Build Action özelliğinin MSDN açıklamasını okudum ), ancak bu yanıtı MSDN'den StackOverflow'a kopyalamak soruyu tamamen benim için cevaplamıyor.
Hiçbiri ve İçerik arasındaki farkın yalnızca Web projeleri üzerinde etkisi vardır. Bir komut satırı projesi, WinForm projesi veya UnitTest projesi (benim durumumda) vb. İçin . Hiçbiri ve İçeriğin farklı davranışı yoktur.
MSDN: "proje çıktı grubu" veya "İçerik çıktı grubu" yalnızca bir Web projesinde kullanılan terimler, değil mi?
None
vs vs Content
sadece oluşturma adımı için değil yayınlama adımı için etkisi vardır . Derleme adımı için her ikisi de ayarlanabilir ve bu dosyanın derleme adımı tarafından kopyalanıp kopyalanmadığını kontrol eder. Ayrıca varsayılan olarak T4 şablonlarının öğe olarak değil, öğe olarak eklenmesi tuhaf görünüyor . CopyToOutputDirectory
Content
None
Benim durumumda, MSBuild dosyam ItemGroup
aşağıdaki gibi görünen bir görüntü kaynakları vardı :
<ItemGroup>
<Content Include="Resources\image001.png" />
<Content Include="Resources\image002.png" />
<Content Include="Resources\image003.png" />
<Content Include="Resources\image004.png" />
<None Include="Resources\image005.png" />
<None Include="Resources\image006.png" />
<None Include="Resources\image007.png" />
</ItemGroup>
Projem iyi bir şekilde inşa edilirken, bu benim neden ürünümün Content
ve None
öğe türü öğelerinin bir karışımının olduğunu merak etmeme neden oldu ItemGroup
. Bu MSDN makalesi (Visual Studio 2010 için) aradığım rehberliği verdi:
Kaynak editörü bir görüntü ekler, bunun ayarladığı Not Eylem kurmak için Hiçbiri , .resx dosyası referanslar nedeniyle görüntü dosyasını. Derleme sırasında, görüntü .resx dosyasından oluşturulan .resources dosyasına çekilir. Ardından resme, .resx dosyası için otomatik olarak oluşturulan güçlü yazılan sınıf aracılığıyla kolayca erişilebilir. Bu nedenle, bu ayarı Katıştırılmış Kaynak olarak değiştirmemelisiniz , çünkü bunu yapmak görüntüyü montajda iki kez içerecektir.
Çözüm: Bu kılavuzda bir metin düzenleyicisi kullanarak Content
öğe türü öğelerini olarak değiştirdim None
.
Ayrıca, MSBuild öğelerine genel bir bakış için bu MSDN makalesine bakın .
Hiçbir derlenebilir öğeler içeren bir proje var (yasemin birim testleri için html ve javascript depolar).
Bir gün benim çözümüm (adı geçen projeyi içeren) "Projede" Yapı "hedefi yok" diyerek derlemeyi bıraktı.
Derleyiciyi getirmek için bir içe aktarma ekledim, bu da makinemde iyi çalıştı, ancak yapı sunucusunda msbuild kullanarak başarısız oldu.
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Sonra bir satırı değiştirdim
<None Include="SpecRunner.html" />
için
<Content Include="SpecRunner.html" />
ve yapı sunucusunda da çalıştı.
Benim durumumda .Pubxml Hiçbiri arasında bu dosyalardan biridir listesi . Çözüm oluşturma veya web projesi için statik bir dosya olarak tasarlanmamıştır. Ancak siteyi Azure'da yayınlamak için yapılandırmalar burada mevcuttur.
Microsoft makalesine göre bunlar .csproj dosya etiketleri arasında gördüğümüz başlıca türlerdir :
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.
İçerik dosyaları bir derlemeye dahil değildir, ancak bir yayına dahil edilir.
Sizin tarafınızdan bu şekilde yapılandırılmadığı sürece hiçbir dosya bir derlemeye veya yayınlamaya dahil edilmez. Örneğin, "Her Zaman" veya "Daha Yeni" bir "Çıktı Dizine Kopyala" ayarı, bunların hem derlemeye hem de yayınlamaya eklenmesine neden olur.
Content
s ile değiştirildiNone
. Razor'a dönüştürürken dosyaları .ascx'den .cshtml'ye yeniden adlandırdığımda oldu. Bunları manuel olarak değiştirmek, sahip olduğum bazı dağıtım sorunlarını düzeltti. Bunu bulduğuma sevindim.