2016-08-02 36 views
1

Ich habe zwei C# Lösungen mit Publish:C# Clickonce Anwendung mehrere SLN Lösungen

  • eine für den Kern einer Anwendung mit einer exe und eine DLL-Datei
  • das andere mit Erweiterungen Methoden/Zusatz Dienstprogramme und Funktionen, die eine DLL-Datei erstellen, die von der EXE in der ersten Anwendung konsumiert werden kann. Diese zweite Lösung .dll hängt von der DLL in der ersten Lösung ab.

Ich möchte die beiden (oder im Allgemeinen mehrere solcher Lösungen) über die gleiche Clickonce-Anwendung veröffentlichen.

Kann dies erreicht werden, indem für beide Lösungen ein gemeinsames Veröffentlichungsausgabeverzeichnis festgelegt wird? Alles in allem ist die erste Lösung diejenige, die immer zuerst gebaut wird, während die zweite folgt, also sollte es keine Inkohärenzen geben.

+0

Müssen sie notwendigerweise in verschiedenen Lösungen sein? Können das nicht getrennte Projekte innerhalb einer Lösung sein? Ich erinnere mich daran, Clickonce auf einer großen SCSF-basierten Lösung zu machen, bei der jedes Projekt seine eigene DLL erzeugte. Arbeitete gut, obwohl die Details zu dieser Zeit (vor> 5 Jahren) –

+0

@LucMorin entkommen sie leider zwei, da die zweite Lösung wird irgendwann an eine dritte Partei für die weitere Entwicklung ausgeliefert werden. Wenn man die Skalierbarkeit in Betracht zieht, wird es in der ersten Lösung zu einem gewissen Zeitpunkt noch viele weitere DLLs geben und ich werde nicht unbedingt kontrollieren können, was in der zweiten Lösung passiert. Ich kann den Code in meiner ersten Lösung unterschreiben, aber eine dritte Partei ist verantwortlich für das Hinzufügen/Erweitern/Erweitern dieser Funktionalität. – teodron

+1

Dann glaube ich @ Slugsters Antwort, um das Endergebnis zu sein, es sei denn, Sie gehen auf eine Menge von benutzerdefinierten msbuild Hackery, um die Ausgabedateien zu verschieben und das Manifest zu erstellen. Ich denke, nichts ist unmöglich ;-) –

Antwort

1

Kann dies erreicht werden, indem für beide Lösungen ein gemeinsames Veröffentlichungsausgabeverzeichnis festgelegt wird?

Nein, kann es nicht. Wenn Sie den Veröffentlichungspfad festlegen, wird diese Assembly und ihre Abhängigkeiten als einzelne ClickOnce-Anwendung veröffentlicht. Wenn Sie zwei verschiedene Lösungen veröffentlichen, veröffentlichen Sie zwei verschiedene ClickOnce-Anwendungen mit jeweils eigenen Manifestdateien.

Es gibt grundsätzlich keinen Grund für Sie, dies als zwei separate Lösungen zu halten - einfach die Projekte zu einer einzigen Lösung zusammenführen.

+0

Was ist, wenn die zweite Lösung einfach die Ausgabe-DLL in das gleiche Veröffentlichungsverzeichnis kopiert und ich irgendwie das Manifest aktualisiere und entsprechend signiere, um die Einbeziehung der Erweiterung .dll zu ermöglichen? Ich brauche mehrere Lösungen, denn irgendwann wird einer von ihnen zur Entwicklung an einen Dritten geschickt, während die Kernlösung (und der Code) nicht funktioniert. – teodron

+0

@teodron Code ist Code - Sie können ein Projekt an einen Dritten senden, unabhängig davon, in welcher * Lösung * es sich befindet. Sie können ClickOnce-Pakete manuell veröffentlichen und bereitstellen, aber es ist nicht trivial (ich habe es getan), Sie also sollte einen wirklich guten Grund dafür haben. Es ist viel einfacher, die Erweiterungsbaugruppe entweder als Projekt oder als vordefinierte Referenz in der Hauptbaugruppe einzubeziehen und anschließend Visual Studio das schwere Heben zu ermöglichen. – slugster