5

I dostosowane mojego projektu przy użyciu roztworu znalazłem w tej kwestii:Click-raz opublikować addtional pliki zatrzymany z VS 2012

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> 

to działa dobrze z VS 2010, aż przeniesieni do VS 2012, dodatkowe pliki nie zostały uwzględnione w manifeście aplikacji !! , więc gdy użytkownik zainstalował aplikację, w głównym folderze aplikacji brakowało wymienionych plików.

Co zmieniło się w VS 2012? a może zmiany są w MSBuild?

EDIT:

wspominałem oryginalne pytanie skąd mam pojęcia, w zasadzie używam Dependency Injection załadować kilka zespołów, co oznacza, że ​​nie ma niezbitych odniesienia między moim projekcie i zespołów, a więc "click-once" nie bierze pod uwagę tych zespołów, które zmuszają mnie do dodania ich do projektu lub użycia wspomnianego rozwiązania, wybrałem wymienione rozwiązanie, ponieważ jest niewidoczne i łatwe.

ale został złamany po migracji do VS 2012.

+0

Dlaczego wszystkie pytania o MSBuild nie zajmuje tak dużo uwagi ?? –

+0

Cieszę się, że znalazłem ten post - miałem zamiar wdrożyć tę metodę - http://blogs.msdn.com/b/mwade/archive/2008/06/29/how-to-publish-files-which-are-not -in-the-project.aspx – tofutim

+0

@tofutim Jak to działa, to rozwiązanie nie działało dla mnie z MsBuild. –

Odpowiedz

1

znalazłem swoje pytanie kłopotliwe, ponieważ nigdy nie widziałem nikogo to zrobić z ClickOnce wcześniej, więc rozmawiałem z facetem w ClickOnce Microsoft o tym. Powiedział, że to, co robisz, nie jest obsługiwane, więc nie jest to coś, co mogliby przetestować. Istnieje wiele zmian w msbuild, które mogły zepsuć to, co robisz.

Czy próbujesz uzyskać pliki skojarzone z drugorzędnym plikiem referencyjnym zawartym we wdrożeniu? Innymi słowy, masz projekt główny, który odwołuje się do innego zestawu, który jest tworzony przez budowanie drugiego projektu, a drugi zestaw ma pliki treści i chcesz je uwzględnić w projekcie?

Jeśli to właśnie próbujesz zrobić, powinieneś rozważyć połączenie tych plików z głównym projektem. Aby to zrobić, możesz dodać istniejący element jako link i wskazać go w treści drugiego projektu. Następnie zawartość zostanie uwzględniona podczas tworzenia pierwszego projektu.

+0

Dziękuję Robin, myślałem, że nikt nie zauważy tego pytania :), zredagowałem moje pytanie, aby dodać więcej szczegółów, jednak nie próbowałem łączyć zespołów jak sugerowałeś, ale czuję, że to jest podobne do dodawania złożenia bezpośrednio do projektu (nie odnosząc się do nich). –

+0

To nie to samo, ponieważ po podłączeniu do złożeń, pojawi się nowa wersja podczas ich budowania. Jeśli skopiujesz je do projektu i dodasz do nich odnośniki, nie zostaną one zaktualizowane, chyba że je zaktualizujesz. – RobinDotNet

+2

Wygląda na to, że ClickOnce i VS powinny być symetryczne w rozpoznawaniu plików treści z drugiego zestawu. – tofutim

1

Move zadanie CreateItem etapem BeforeBuild i usunąć zadanie touch:

<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> 
Powiązane problemy