Domanda

Ho un'applicazione ASP.NET MVC 2.

  • Il progetto Web contiene un riferimento a SomeProject
  • SomeProject contiene riferimenti a externalassembly1 e externalassembly2.
  • SomeProject chiama esplicitamente externalassembly1, ma NON externalassembly2.
  • externalassembly1 chiama in externalassembly2

Quando eseguo una build locale, tutto va bene.Tutte le DLL sono incluse nella cartella bin\debug.Il problema è che quando utilizzo il comando Pubblica Web in Visual Studio 2010, distribuisce tutto tranne ExternalAssembly2.

Sembra che ignori gli assembly che non vengono utilizzati direttamente (ricorda, externalassembly2 viene utilizzato solo da externalassembly1).

Esiste un modo per dire a Visual Studio 2010 di includere ExternalAssembly2?

Posso scrivere un metodo fittizio che chiama in ExternalAssembly2.Funziona, ma in realtà non voglio avere un codice fittizio al solo scopo di far sì che VS2010 pubblichi la DLL.

È stato utile?

Soluzione

Nessuna di queste risposte sono sufficienti nella mia mente. Questo sembra essere un vero e proprio bug. Voglio aggiornare questa risposta se mai a trovare una soluzione non-hack, o Microsoft corregge il bug.

Aggiornamento:

non sembra promettente. https://connect.microsoft .com / VisualStudio / feedback / dettagli / 731.303 / publish-web-funzione-non-compreso-all-dll

Altri suggerimenti

Sto avendo lo stesso problema (diverse assemblee però). Se mi riferisco alle assemblee nel mio progetto web, allora si avranno inclusi nell'output pubblicare, ma dovrebbero essere inclusi in ogni caso, perché sono dipendenze indirette:

Web Progetto ---> Montaggio A ---> Assemblea B

In costruzione, assemblaggi A e B sono in output nella cartella \ bin. Su pubblicare, unica assemblea A è in output nella cartella di pubblicazione.

Ho provato a cambiare le impostazioni di pubblicazione per includere tutti file nel progetto web, ma poi ho file in mia uscita pubblicare che non dovrebbero essere distribuiti.

Questo mi sembra un bug per me.

Ho avuto lo stesso problema con VS2010 e un servizio di Application WCF.

Si scopre che se il vostro DLL (direttamente o indirettamente) di riferimento sono distribuiti per GAC, le VS editoriali funzione esclude loro. Una volta ho rimosso i gruppi da GAC, funzionalità Pubblicazione iniziato a lavorare come previsto.

Credo che VS è supponendo che se gli assembly possono essere ubicati in GAC sulla macchina si costruisce, che saranno situati in GAC sul computer di destinazione come bene. Almeno nel mio caso questo assunto è falso.

I miei test mostrano che i gruppi esterni vengono pubblicati quando ho un riferimento sul loro nel progetto web. Non ho scrivere alcun codice fittizio per farlo funzionare. Questo sembra accettabile per me.

Sono d'accordo con Nicola che questo sembra essere un bug in Visual Studio. Almeno mi sfugge quale sia la ragione per il comportamento potrebbe essere.

Ho creato questo problema come un bug in Microsoft Connect. Se qualcuno vivendo potrebbe votare in su https://connect.microsoft.com/VisualStudio/feedback/details/637071/publish-web-feature-not-including-all-dlls quindi speriamo di ottenere qualcosa al riguardo.

Se si va nella lista di proprietà di riferimento ExternalAssembly2 e cambiare la "copia locale" a "True" Penso che potrebbe risolvere il problema.

Non so se si sta guardando questo ancora, ma ho trovato la soluzione (ho avuto lo stesso identico problema) tramite questo articolo MSDN . Sotto "l'azione di costruzione" per scegliere il file "Contenuto" che dovrebbe includere nella lista dei file pubblicare porta sopra.

Ho creato un nuovo bug Collegare qui https://connect.microsoft.com/VisualStudio/feedback/details/731303/publish-web-feature-not-including-all-dlls

Ho anche attaccato una soluzione e passaggi per riprodurre questo problema dettagliato. Speriamo questa volta non si chiude come non può riprodursi.

Votate per questo problema di connessione Se si verifica il mancante dll problema.

copia locale ha fatto il trucco. Ho avuto un problema che il Newtonsoft.Json montaggio Chiedi incluso nel pacchetto deploymeny. Copia locale è stato fissato su false.

sto vivendo lo stesso tipo di problema con un progetto web. Ho un progetto Web che fa riferimento montaggio A, che i riferimenti di montaggio B. ha funzionato bene per un certo tempo, ma oggi era rotto. Ho fatto una ricostruzione della soluzione e questa volta distribuito tutto correttamente.

Ho avuto lo stesso problema oggi.Ho pubblicato il mio progetto web e mi sono reso conto che non tutte le DLL di riferimento erano presenti.In particolare, i riferimenti DLL indiretti.

Risulta che la directory in cui stavo pubblicando aveva esaurito lo spazio su disco (condivisione di rete).Avevo appena lo spazio sufficiente per pubblicare tutti i file tranne alcune DLL di riferimento indiretto.La parte triste è che VS08 non ha generato alcun errore.Ha appena pubblicato i file come al solito.Ho liberato un po' di spazio sull'HDD e tutto ha funzionato correttamente.

Non ho riscontrato il problema dello spazio sull'HDD finché non ho provato a spostare manualmente le DLL.

nel mio caso è molto difficile. Il riferimento a ExternalAssembly2 non è necessario per la realizzazione del progetto, ma di vitale importanza per in fase di esecuzione dato che usiamo riflessione per configurare contenitore Unità. Così, a cancellare il riferimento - a costruire il progetto con successo, ma ottengo l'errore in fase di esecuzione. Se conservo il riferimento posso costruire ed eseguire l'applicazione, ma non riesco a pubblicare con ExternalAssembly2 - ottenere eccezione di runtime pure. Questo è accaduto a causa di assemblee VS2010 ottimizzazione interno.

Quindi, quello che può fare qui? 1. Mettere un po 'pezzo unrequired di codice per utilizzare la classe di ogni ExternalAssembly2. 2. fuga dalle assemblee di riflessione e l'uso statici collegamento.

Spero che questo aiuti a smbd.

Ho avuto lo stesso problema e questo è un bug VS2010 se c'è un collegamento di riferimento come: Web Project -> progetto personalizzato -> Assembly1 -.> (Indirettamente) assembly2

Per ora mi trovo, se mi riferisco al Assembly1 nel progetto web, quindi assembly2 è incluso nella cartella bin. Così ho dovuto aggiungere un collegamento di riferimento aggiuntive, uguali: Progetto Web -> Assembly1 -> (indirettamente) assembly2. Poi VS può riconoscere assembly2 e comprendono il suo file dll in publish action.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top