2009-03-11 9 views
6

Nehmen wir an, ich habe ein C# -Winforms-Projekt, MainGUI.VS2008.NET: Abrufen der Abhängigkeiten eines referenzierten Projekts zum Kopieren in den Bin-Ordner des Hauptprojekts

Es verweist auf ein anderes Projekt in derselben Lösung, ControlsLib.

ControlsLib verweist auf eine Kontrollgruppe eines Drittanbieters wie Infragistics oder Telerik Controls und macht eine Reihe von Benutzersteuerelementen verfügbar, die in MainGUI verwendet werden.

Copy Local wird für alle Verweise in ControlsLib auf true gesetzt und alle Drittanbieter-DLLs werden in ControlsLib \ bin \ release angezeigt.

Allerdings kann ich nicht die Dritte DLLs automatisch MainGUI \ bin \ Release zu kopieren, die den Ordner, aus dem der Installer der Software (in diesem Fall mit NSIS) erzeugt wird

Deshalb sind die Fremdüberwachung DLLs nicht in die Installation einbezogen werden, was zu einer FileNotFoundException zur Laufzeit führt, wenn Steuerelemente von ControlsLib verwendet werden, die von DLLs von Drittanbietern abhängen.

Gibt es eine "richtige" Möglichkeit, dies zu tun, die mir nicht bekannt ist? Zuvor habe ich dies nur in einem nan-Build-Skript durch Kopieren von Dateien behandelt, aber ich beginne ein neues Projekt und wollte es nur überprüfen.

Dank

Antwort

2

Ich habe dies nur gemacht gelöst durch die folgende Postbuildereignis Befehlszeile der CSPROJ Datei für MainGUI Hinzufügen (Projekteigenschaften -> Veranstaltungen bauen)

copy $(SolutionDir)ControlsLib\bin\$(ConfigurationName)\Infragistics2*.dll $(TargetDir) 
veröffentlichen

ich das zu tun war so einfach, eigentlich nicht erkannt hatte ...

0

Sie müssten einen Link auf die erforderlichen Dateien aus dem UI-Projekt (MainGUI) und stellen Sie sie in den Ausgabeordner von dort kopieren hinzuzufügen. Die eingebauten Packaging-Tools (IIRC) kaskadieren diese korrekt, aber für externe Tools erwarte ich, dass Sie dies manuell tun müssen.

Auf meinem Build-Server verwende ich ein Skript, das Verweise untersucht und alle nachfolgenden Referenzen hinzufügt, bevor es erstellt wird (durch Bearbeitung der csproj-Dateien als XML) ... der Code ist nicht großartig, aber er tut es die Arbeit.

0

Ich hatte ein ähnliches Problem mit Gentle.NET (O/R Mapper). Eine der DLLs verweigert das Kopieren. Ich habe stundenlang untersucht und konnte keinen Grund finden. Alle anderen Dateien werden kopiert, aber DAS ist aus irgendeinem Grund ausgeschlossen. Gentle verwendet drei DLLs, Gentle.Common.DLL, Gentle.Framework.DLL und Gentle.SQLProvider.DLL. Der letzte wird nie kopiert.

Am Ende habe ich einfach ein Skript ...

0

Wenn die Hauptprojekteigenschaften (die ausführbare Datei eines) auf dem Registerkarte ändern, Option Anwendungsdateien, dann werden Sie in der Lage sein zu sagen, VS um alle Dateien einzuschließen, die nicht kopiert werden.

Verwandte Themen