2013-08-05 21 views
10

Utilizziamo i controlli di terze parti nel nostro progetto. Quasi ogni volta che faccio doppio clic su un file che ha anche una vista di progettazione, Visual Studio prova a richiamare il progettista con uno sforzo eroico, e dopo un po 'di insensibilità fornisce (dà alla luce) un file license.licx nella nostra soluzione. Ciò disturba inutilmente il controllo del codice sorgente: l'aggiunta del file modifica anche il csproj, e anche il file di codice originale più il designer.cs viene estratto (anche se non hanno alcuna modifica in essi).Come impedire a Visual Studio di creare license.licx

  1. Voglio solo vedere il codice (tasto destro, Visualizza codice), non voglio vedere la vista del progettista.
  2. Ogni volta che ho bisogno di annullare le modifiche non necessarie e che richiede tempo (la nostra soluzione è gargantuous), mentre Visual Studio non risponde nuovamente, poiché ricarica l'intero shebang da quando il csproj è cambiato.
  3. Quando faccio doppio clic, mi rendo immediatamente conto di quello che ho fatto, ma è già troppo tardi in quel momento, il movimento a orologeria inizia a macinare.

Se qualcuno sa come disabilitare l'aggiunta di quel licx, per favore fatemelo sapere. A proposito: le librerie di terze parti rilevanti sono DevExpress WinForms e IdeaBlade DevForce Classic (che ha qualche integrazione con DevExpress). Uso VS 2012. E il nostro prodotto è un prodotto per l'utente finale e non una libreria di terze parti.

Precisazione: stiamo parlando di un ambiente di sviluppo. Vedi How does the Licenses.licx based .Net component licensing model work? - non è consigliabile mantenerlo nel controllo del codice sorgente. Non voglio discutere di questo. Concentriamoci su come impedire a Visual Studio di provare a crearlo tutto il tempo.

+1

Signori, cari downvoters: anche se pensate che le mie motivazioni siano sbagliate e non dovrei rimuovere la license.licx, discutiamone, per favore considerate che una conclusione di questo argomento può essere di beneficio per gli altri che sono in la stessa scarpa di me. Grazie per la tua comprensione! –

+0

Ho rimosso la faccia rabbia dal momento che alcune persone potrebbero pensare che non è divertente. –

+0

Il rovescio della medaglia; dato che è parte degli input della build, perché non vorresti che fosse gestito come parte del tuo controllo sorgente? Sono sicuro che non avresti problemi a includere altre risorse nel controllo del codice sorgente? –

risposta

10

È possibile creare un evento di generazione post che rimuova il file .licx. Abbiamo affrontato questo fastidio nel nostro team e, a parte l'esclusione o l'eliminazione manuale, l'evento post-build è la soluzione migliore. Ogni volta che apri un Windows Form, il file verrà aggiunto di nuovo se tale modulo fa riferimento o utilizza uno qualsiasi dei dll di terze parti.

È possibile specificare gli eventi di pre e post build tramite console o facendo clic con il pulsante destro del mouse sul progetto e selezionando Proprietà -> Crea eventi. Spero che questo ti aiuti.

+0

ho davvero apprezzato la tua risposta. Molto probabilmente non c'è alcun passaggio in Visual Studio per girare la creazione di licx, quindi la tua risposta sembra essere una buona soluzione. In realtà, abbiamo un test unitario che fallisce se questo licenziatario creasse, impedendo il commit accidentale di esso. Ti capita di avere uno script di post di esempio? Cosa usi per manipolare la soluzione nello script post-build? PowerShell + EnvDte o qualcos'altro? [StudioShell] (https://studioshell.codeplex.com/)? –

+0

Puoi andare all'evento Post Build e incollare qualcosa come questo ... del "$ (SolutionDir) Project \ folder \ license.licx" e che dovrebbe occuparsene. – captray

+2

L'eliminazione di licenses.licx causerebbe l'errore "Impossibile trovare il file ... \ licenses.licx". Invece potremmo aggiungere questo evento di pre-build per creare (o sovrascrivere) un license.licx vuoto: copy/y NUL $ (ProjectDir) Properties \ licenses.licx> NUL –

-2

Tale licenza.licx è importante. Lo vuoi davvero nei tuoi progetti che utilizzano componenti concessi in licenza da terze parti. Se non si utilizzano componenti di terze parti, il file licences.licx non verrà aggiunto.

+1

Perché dovrei avere bisogno di license.licx? Se non faccio doppio clic sul file per errore non viene nemmeno creato. Può causare problemi in un team di sviluppo? Ad esempio, John Doe fa doppio clic su qualcos'altro, quindi ne genera uno con contenuti diversi? Immagino che ci sia della crittografia sotto il cofano. –

+0

(John Doe lavora con lo stesso software di me e non voglio il licx nel controllo del codice sorgente, forse quando lo produciamo ne avremo bisogno.Il nostro prodotto è un prodotto per l'utente finale, non un terzo biblioteca. Spero che non violiamo nessuna licenza con i nostri fornitori di terze parti.) –

+0

Quindi la domanda breve è: perché è così importante per me che devo averlo? Voglio delle spiegazioni. –

2

Se qualcuno è alla ricerca di una soluzione per questo problema poiché utilizza licenze precompilate tramite lo strumento Lc.exe e desidera impedire che license.licx sia in conflitto sul server di generazione, modificare il file csproj e modificare la riga simile a questa:

<EmbeddedResource Include="Properties\licenses.licx" /> 

in questo:

<ItemGroup Condition=" '$(Configuration)' != 'Release' " > <EmbeddedResource Include="Properties\licenses.licx" /> </ItemGroup>

+1

Sembra promettente. Non sono più in questa situazione però. –

2

Per il vostro punto # 1, si potrebbe evitare un doppio clic di aprire il progettista ma invece aprire l'editor di codice per impostazione predefinita.

È possibile fare questo:

  • clic destro su un file .cs che ha una forma
  • selezionare "Apri con ..."
  • selezionare "CSharp Editor"(o VB)
  • click "Imposta come predefinito"
  • e OK

Se si desidera modificare in un secondo momento, seguire stessa procedura, ma scegliere" CSharp Form Editor "

+1

Idea molto pratica! –

Problemi correlati