2009-05-07 12 views
3

Zusammenfassung: Wie kompiliert in Release-Modus ... Ich kann es nicht zu "nehmen", was ich tun möchte.Visual Studio 2005 wird nicht in Release-Konfigurationsmodus kompilieren

Ich habe ein Webservice-Projekt in VS2005 C#, die ich versuche zu optimieren. Eines der Dinge, auf die ich aufmerksam gemacht wurde, ist die Empfehlung, im Freigabemodus zu kompilieren. Ich bin mir nicht sicher, was ich hier erwarte, aber hier ist, was ich sehe:

Ich rechts auf dem Projekt und wählen Sie Eigenschaften und dann die Registerkarte Erstellen Ich klicke auf die Dropdown-Box Konfiguration, auf RELEASE gesetzt und beachten Sie, dass Ausgabepfad ist \ bin Ich klicke auf REBUILD auf dem Projekt und die DLL geht in den Ordner \ bin \ debug (nicht \ bin)! Hier ist ein Ausschnitt aus dem Ausgabefenster klebte an diesem Kompilierung (man beachte, es zeigt die Konfiguration als „Debug Jede CPU“ und später/definieren: DEBUG; TRACE):

 
------ Rebuild All started: Project: TRIMBrokerService, Configuration: Debug Any CPU ------ 
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE 
/reference:"C:\Program Files\Microsoft WSE\v3.0\Microsoft.Web.Services3.dll" /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Configuration.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll 
/reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.Mobile.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.Services.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:..\TRIMBrokerUtilities\TRIMBrokerUtil\bin\Debug\TRIMBrokerUtil.dll 
/debug+ /debug:full /optimize- /out:obj\Debug\TRIMBrokerService.dll /target:library FaultCode.cs FileService.asmx.cs Properties\AssemblyInfo.cs Properties\Settings.Designer.cs Settings.cs "Web References\ASMXwsTrim\Reference.cs" 

Compile complete -- 0 errors, 0 warnings 
TRIMBrokerService -> C:\Documents and Settings\johna\My Documents\Visual Studio 2005\Projects\WSE\TRIMBrokerPassingByteArray\TRIMBroker\TRIMBrokerService\bin\debug\TRIMBrokerService.dll 
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ========== 

ich bemerkt habe, dass ich in Wechselwirkung treten kann Wenn ich das Konfigurationsdialogfeld ändere und das Dropdown-Listenfeld "Konfiguration" in "Aktiv" (Debug) oder "Debug" ändere, ändert sich der Ausgabepfad wie erwartet in "\ bin \ debug", aber im Versionsmodus scheint es nicht zu kompilieren. Gibt es einen Trick? Ich fürchte, ich muss in der MSBuild-Dokumentation nachlesen, nur um meinen kleinen Web-Service bereitzustellen, da ich denke, dass es viel mehr ist, als ich an diesem Punkt brauche.

Antwort

5

Klicken Sie mit der rechten Maustaste auf Ihre Lösung und wählen Sie Configuration Manager.. Stellen Sie sicher, dass "Active solution configuration" auf Release eingestellt ist. Stellen Sie dann sicher, dass die Projekte im Raster unten so eingestellt sind, dass sie die Release Konfiguration verwenden.

Vielleicht wurde versehentlich etwas geändert ..

+0

Danke Ryan. Ich habe getan wie du gesagt hast und es hat das Problem behoben. –

1

Wenn Sie die Assembly immer auf bin \ Debug haben, dann hat jemand das Projekt falsch geändert. Alles, was ASP.NET verwendet, muss die Assemblys in bin haben.

+0

Danke..ich dachte, etwas stimmte nicht. Ryans Ansatz auf der Lösungsebene schien alles zu reparieren. –

+0

Wann wird der Ordner bin \ debug von der Kompilierungsaktion Build oder Rebuild verwendet? Ich glaube, ich habe gesehen, dass die .DLLs in der Vergangenheit dorthin gegangen sind und nicht viel Aufmerksamkeit darauf gelegt haben. Ich folgerte, dass (fälschlicherweise ich sehe), dass das Bin den Release-Modus-Build (s) enthalten würde und das bin \ debug würde die Debug-Build (s) enthalten. Da das nicht korrekt ist und alles immer auf bin \ gehen muss, was ist der beste Weg, um genau zu wissen, wie eine gegebene .DLL kompiliert wurde? –

+2

Für ASP.NET-basierte Projekte gibt es nur bin. Die meisten anderen haben wahrscheinlich einen Ordner bin \ . Für den ASP.Bei .NET-Projekten kann IIS nur einen einzigen Ordner für die Suche nach Assemblys enthalten. IIS wird nicht wissen, ob es sich um einen Release- oder einen Debug-Build handelt. –

2

Neben Ryan's response, die Konfiguration auf dem Register Erstellen der Projekteinstellungen keinen Einfluss auf dem aktuellen Build-Modus, das nur ermöglicht es Ihnen, die Einstellungen für diese zu ändern projizieren Sie jeden konfigurierten Build-Modus an einem einfachen Ort.

Sie können auch das Dropdown-Menü "Lösungskonfigurationen" in der Standard-Symbolleiste "Standard" verwenden, in dem die Lösungskonfigurationen neben der Schaltfläche "Debug" und dem Dropdown-Menü "Lösungsplattformen" aufgeführt sind.

+1

Dies ist sehr frustrierend und kontraintuitiv, aber wahr. Ein Give-away, das ich gefunden habe, ist zu sehen, welche Art von Build auf der Registerkarte Kompilieren der Projekteigenschaften auf "Aktiv" gesetzt ist. Es wird wie "Aktiv (Debug)" oder "Aktiv (Release)" aussehen. – Wingman4l7

2

Ich lief das gleiche bizarre Problem mit VS 2008. Ein Projekt im Debug-Modus kompiliert, aber gut, aber im Freigabemodus viele Fehlermeldungen ausgespuckt. Nach Tagen von Versuch und Irrtum. Ich fand schließlich das Problem: Einige der Dateien, die Pfade hatten, überschritten 260 Buchstaben. Der Grund, warum es für den Debug-Modus funktioniert hat, weil das Wort "debug" 2 Buchstaben weniger als das Wort "release" hat. Es passierte zufällig die Zeile mit 260 Buchstaben im "release" -Modus. Wenn Sie wie ich einen langen Namen für Ihre verschachtelten Projektverzeichnisse haben, achten Sie darauf. Das Problem ist verschwunden, nachdem ich den Hauptverzeichnisnamen gekürzt habe.

+0

haha ​​.. schöner Fang! – TweeZz