5

2012:Tıklama kez yayınlamak addtional dosyaları VS ile durduruldu Ben bu soruya bulunan bir çözüm kullanarak projemi özelleştirilmiş

Why doesn't ClickOnce in Visual Studio deploy content files from dependent assemblies?

<ItemGroup> 
<AdditionalPublishFile Include="$(OutputPath)\**\*.rpt"> 
    <Visible>False</Visible> 
</AdditionalPublishFile> 
</ItemGroup> 
<Target Name="BeforePublish"> 
    <Touch Files="@(IntermediateAssembly)" /> 
    <CreateItem Include="@(AdditionalPublishFile)" AdditionalMetadata="TargetPath=%(RecursiveDir)%(Filename)%(extension);IsDataFile=false"> 
    <Output TaskParameter="Include" ItemName="_DeploymentManifestFiles" /> 
    </CreateItem> 
</Target> 
Ben yükseltilmiş kadar, VS 2010 yolundaysa

VS 2012, ek dosyalar uygulama manifestine dahil edilmedi! , kullanıcı uygulamayı yüklediğinde, belirtilen dosyalar uygulama ana klasöründen eksikti.

VS 2012'de neler değişti? ya da belki MSBuild'de değişiklikler var mı?

DÜZENLEME:

Projemde ve meclisleri arasında hiçbir sert referans olmadığı anlamına gelir Temelde bazı derlemeler yüklemek için Bağımlılık Enjeksiyon kullanıyorum, fikrim var orijinal soruyu, söz, bu yüzden Bir kez tıklatma işlemi, beni projeye eklemek için zorlayan ya da söz konusu çözümü kullanacak olan bu meclisleri dikkate almaz, söz konusu çözümü görünmez ve kolay olduğu için seçtim.

ama önce kimse ClickOnce ile bunu görmedim, bu yüzden bu konuda Microsoft'ta ClickOnce adamla konuştuğunu, çünkü ben senin soru şaşırtıcı bulundu VS 2012.

+0

?? –

+0

Sevindim Bu yazıyı buldum - Bu yöntemi uygulamak üzereydim - http://blogs.msdn.com/b/mwade/archive/2008/06/29/how-to-publish-files-which-are-not -in-the-project.aspx – tofutim

+0

@tofutim Bunu nasıl işe aldınız, bu çözüm benim için MsBuild ile çalışmadı. –

cevap

1

göç ​​sonra kırıldı. Yaptığınız şeyin desteklenmediğini söyledi, bu yüzden test edebilecekleri bir şey değil. Yaptığınız şeyi kırmış olabilecek msbuild'de birden çok değişiklik var.

Yapmaya çalıştığınız şey, dağıtımda yer alan ikincil bir başvuruyla ilişkili dosyaları almaktır. Diğer bir deyişle, ikinci bir proje oluşturarak oluşturulmuş bir başka meclise referans veren bir ana projeniz var ve ikinci meclisin içerik dosyaları var ve bunların projenize dahil edilmesini mi istiyorsunuz?

Yapmaya çalıştığınız buysa, bu dosyaları bunun yerine ana projeye bağlamayı düşünmelisiniz. Bunu yapmak için mevcut bir öğeyi bağlantı olarak ekleyebilir ve ikinci projedeki içeriğe yönlendirebilirsiniz. Daha sonra, ilk projeyi oluştururken içerik eklenecektir.

+0

Teşekkür ederim Robin, hiç kimsenin bu soruyu fark etmeyeceğini düşündüm :), daha fazla ayrıntı eklemek için sorumu düzenledim, Ancak, önerileriniz gibi meclisleri birleştirmeyi denemedim, ama sanki buna benzer doğrudan projeye derleme yapar (bunlara atıfta bulunmaz). –

+0

Aynı şey değil, çünkü derlemeler için bağlantı kurduğunuzda, bunları oluşturduğunuzda yeni sürümü alır. Onları projeye kopyalarsanız ve bunlara referanslar eklerseniz, güncellemediğiniz sürece bunlar güncellenmez. – RobinDotNet

+2

ClickOnce gibi görünüyor ve VS ikinci gruptan içerik dosyalarını tanımak için simetrik olmalıdır. – tofutim

1

Taşı BeforeBuild adıma CreateItem görev ve Dokunmatik görevi kaldırın: MSBuild hakkında tüm sorular dikkat o kadar almaz Neden

<ItemGroup> 
    <AdditionalPublishFile Include="$(OutputPath)\**\*.rpt"> 
    <Visible>False</Visible> 
    </AdditionalPublishFile> 
</ItemGroup> 
<Target Name="BeforeBuild"> 
    <CreateItem Include="@(AdditionalPublishFile)" AdditionalMetadata="TargetPath=%(RecursiveDir)%(Filename)%(extension);IsDataFile=false"> 
    <Output TaskParameter="Include" ItemName="_DeploymentManifestFiles" /> 
    </CreateItem> 
</Target> 
İlgili konular