2011-01-13 13 views
5

Ho una soluzione di Visual Studio 2010 impostata per la compilazione in Debug x86. Pertanto, Visual Studio imposta il percorso di output su \ bin \ x86 \ Debug, che sembra abbastanza logico.Directory di output durante la creazione di un progetto WCF in Visual Studio

La soluzione contiene circa 50 progetti; il progetto di start-up è un progetto WCF.

Quando eseguo una generazione, mi aspetto che tutte le DLL di output vengano spostate su \ bin \ x86 \ Debug, in quanto è ciò che viene impostato nelle impostazioni del progetto. Ma stranamente, vedo le DLL create in bin \ x86 \ Debug e in \ bin. Perché Visual Studio inserisce una DLL in \ bin se il percorso di output non è impostato su quella directory? Sembra che tutte le DLL vadano a \ bin \ x86 \ Debug e tutte le DLL ad eccezione del progetto di avvio andare in \ bin. Qualche idea sul perché lo farebbe? (Abbiamo altre soluzioni che non usano WCF e non hanno questo problema.)

L'altro fastidio è se eseguo il servizio da Visual Studio e poi provo ad accedere al mio servizio in un browser web, andando a http://localhost:1240/MyService.svc, non funziona, perché la dll del progetto di avvio manca a/bin. Devo quindi copiare manualmente questa dll da \ bin \ x86 \ Debug a \ bin, in modo che vengano trovate tutte le DLL e il servizio venga eseguito normalmente. (Potremmo naturalmente aggiungere un passaggio post-generazione personalizzato che fa la copia, ma penseresti che ci sarebbe un modo migliore!)

Per quelli di voi che lavorano su progetti WCF, si lascia il percorso di output a \ bin \ x86 \ Debug? (Forse c'è un modo per configurare il servizio, ad esempio nel file web.config o .svc, in modo che sappia che i binari sono in \ bin \ x86 \ Debug invece di \ bin?) O si modifica il percorso di output in \ bin in modo da poter eseguire il servizio direttamente da Visual Studio?

risposta

7

Se si apre la pagina delle proprietà del progetto di hosting WCF e la scheda goto Build, nella sezione Output di questo tag è presente una casella di testo che contiene la posizione dei file binari di output.

Per un progetto WCF i file binari devono essere inseriti nella directory bin indipendentemente dal tipo di build (suc come Debug, Release). Assicurarsi che questo valore sia stato configurato correttamente.

Il valore deve essere configurato per ogni tipo di build \ configurazione.

+0

Sì, quella casella di testo è il "percorso di output" di cui parlo nel mio post. Quindi stai dicendo che l'hai impostato su bin, fine della storia. Sembra strano però che se si modifica questo percorso di output, la maggior parte dei file va comunque in bin, no? – Justin

+1

Per il percorso di output predefinito del progetto WCF, punta alla cartella bin \\ [BuildConfiguration]. Poiché il servizio WCF vuole che le dll siano presenti nella directory bin e non in alcuna sottodirectory, la configurazione di progetto predefinita per il progetto WCF se creata da Visual Studio è la cartella bin. – Chandermani

+0

Questo mi ha fatto fare un po 'di roba MVC3, dove i binari andavano in bin \ x86 \ debug in base alle impostazioni di Configuration Manager della soluzione. Speriamo che questo possa aiutare la prossima persona che si agita intorno ... Basta cambiare l'output del sito in bin \ – Snowy

-1

Se occorrono, per qualsiasi motivo, output diversi da configurazioni di build diverse in cartelle diverse, è possibile specificarli come prima e utilizzare una riga di comando evento post build che copia dalla cartella di output specificata a bin. Come:

- untested code - 
    COPY/Y "$(OutDir)\*.*" "$(SolutionDir)$(ProjectName)\bin\" 
    - untested code - 
+1

Forse dovresti testarlo prima di postare? – ForceMagic

Problemi correlati