2017-06-07 2 views
0

Ich habe ein WXToolset-UI-Projekt, das ich gerne bestimmte Assemblies "hosten" würde, die das UI-Projekt selbst nicht benötigt (ich versuche mein Leben zu vereinfachen, indem ich nur Wix sehe) im bin-Verzeichnis der Konfigurationsbenutzeroberfläche für alle Assemblies.nuget-Paket wird auf Build entfernt

Ich kann sagen, AutoFac zum UI-Projekt hinzufügen. Aber wenn ich das Projekt erstelle, wird die Autofac-Abhängigkeit entfernt und die DLL wird nicht in das bin-Verzeichnis kopiert. Das ist nicht wirklich überraschend, da Autofac nicht im UI-Projekt selbst verwendet wird, also denke ich, es ist eine Art Optimierung.

Ich möchte in diesem Fall die Optimierung überschreiben und VS erzwingen, die Autofac-Assemblys zum Verzeichnis bin hinzuzufügen.

Gibt es eine VS-Einstellung, um dies zu tun?

Antwort

1

Gibt es eine VS-Einstellung, um dies zu tun?

Wenn ich Dich richtig verstehe, wollen Sie VS zwingen, den Autofac Baugruppen bin-Verzeichnis hinzuzufügen, können Sie versuchen, eine Kopie Aufgabe in dem Postbuildereignis fügen Sie die Autofac Baugruppen in das Verzeichnis ist zu kopieren nach Build (Rechtsklick Projekt-> Eigenschaften-> Build Event-> Post-Build-Ereignis Befehlszeile).

xcopy.exe $(AutofacPath)Autofac.dll $(ProjectDir)$(OutDir) 

Referenz: https://msdn.microsoft.com/en-us/library/ke5z92ks.aspx?f=255&MSPPError=-2147217396

Update für Mark Kommentar:

Aber eine Post-Build-Kopie erfordert, dass nuget "installiert", um das Autofac Paket, das ist, was es nicht tut.

Ja, Sie könnten von einem anderen Projekt kopieren, wo Autofac ist. Außerdem kann das Build-Ereignis mehr Dinge tun. Sie können eine andere Befehlszeile verwenden, um die Autofac in dem Post-Build-Ereignisse vor xcopy Kommandozeile zu installieren:

D:\nuget.exe install AutoFac 

Mit diesem Befehl wird nuget das Paket herunterladen und in den Ordner Bin gesetzt.

enter image description here

Jetzt wird es einfach sein wird, wir müssen nur unter Befehlszeile in dem Post-Build-Ereignis hinzuzufügen:

D:\nuget.exe install AutoFac 
xcopy.exe "$(ProjectDir)$(OutDir)Autofac.4.6.0\lib\net45\Autofac.dll" "$(ProjectDir)$(OutDir)" 

Hinweis: Sie müssen den Pfad angeben, wo nuget. exe befindet sich in der Befehlszeile wie D:\.

+0

Angemessener Vorschlag, @ Leo-MSFT. Aber eine Post-Build-Kopie erfordert, dass Nuget das Autofac-Paket "installiert", was es nicht tut. Ich könnte eine Post-Build-Kopie von einem anderen Projekt machen, in dem Autofac tatsächlich verwendet wird, aber das fühlt sich ziemlich klatschig an. –

+0

@MarkOlbert, danke für deine Antwort. Laut Ihrem Kommentar habe ich meine Antwort aktualisiert, hoffe, Sie können mehr nützliche Informationen erhalten. Wenn die obige Frage Ihre Frage beantwortet, können Sie sie als Antwort markieren, damit sie anderen Community-Mitgliedern, die die gleichen Probleme haben, helfen kann. Wenn nicht, bitte lassen Sie mich Ihre Frage kostenlos wissen, ich werde es weiter verfolgen. –

+0

Es beantwortet meine Frage nicht ganz, Leo, denn ich möchte verhindern, dass VS die Paket-Referenz nuget löscht. Aber es ist ein Workaround, also habe ich es upgestimmt. –

Verwandte Themen