2016-03-10 8 views
13

È possibile sostituire a livello di codice i riferimenti DLL con i riferimenti di progetto per le dipendenze del progetto nella soluzione Visual Studio C#/VB.NET?Sostituisci i riferimenti DLL con i ref di progetto per le dipendenze del progetto nella soluzione di Visual Studio C#

BACKGROUND:

Sto lavorando con un certo codice legacy in cui dipendenze per ciascun progetto sono per lo più riferimento come DLL compilate invece di includere riferimento al progetto dal progetto corrispondente in soluzione o peggio ancora - si fa riferimento direttamente dal GAC!

Al momento devo rimuovere manualmente ogni riferimento DLL e sostituirlo con il riferimento del progetto dall'interfaccia utente VS per ciascuna soluzione su dozzine di progetti.

Modifica del XML progetto/soluzione .csproj/files .sln non è semplice a causa di GUID:

<!--typical DLL reference--> 

<ItemGroup> 
    <Reference Include="MyDLL, Version=2.0.1.0, Culture=neutral, PublicKeyToken=1b6d1e0267e1acba, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>...\MyDLL.dll</HintPath> 
    </Reference> 
</ItemGroup> 

<!--typical Project reference--> 

<ItemGroup> 
    <ProjectReference Include="..\MyDLL\MyDLL.csproj"> 
     <Project>{3cc27830-3d6b-4071-85e5-5a4006f11142}</Project> 
     <Name>MyDLL</Name> 
    </ProjectReference> 
</ItemGroup> 
+1

È possibile modificare un paio di riferimenti e confrontare il modo in cui sono stati elencati nel file .csproj prima e dopo la modifica. Se esiste un modello che consente di generalizzare, è possibile sostituirli utilizzando espressioni regolari in un'app console personalizzata o in un editor di testo. – Edin

+0

@Informazioni sugli hash del progetto? – denfromufa

+1

Immagino tu intenda i GUID di progetto: puoi risolverli da singoli file di progetto trovando l'elemento ProjectGuid.È possibile codificare, tuttavia dipende da quanti progetti è necessario sostituire e se il tempo per farlo sarà molto inferiore alla programmazione di una soluzione automatizzata ... o se è necessario farlo più e più volte per qualche motivo. E non dimentichiamoci, la codifica della soluzione automatizzata è più divertente :) – Edin

risposta

5

Utilizzare questo plug-in .. Potrebbe aiutare il vostro problema

https://visualstudiogallery.msdn.microsoft.com/056617a4-da39-4d7b-8ecf-933009d9b721

ha descrizione sottostante

switch riferimenti da file ai progetti (e vice vers a) riferimenti quando si aggiungono progetti. I riferimenti vengono ripristinati quando il progetto è rimosso.

utilizzo:

State sviluppando Un progetto che ha un file di riferimento al montaggio "B.dll". A un certo punto è necessario apportare modifiche a "b.dll". Quindi tu aggiungi il progetto "B" alla soluzione. Il ReferenceSwitcher rileverà quel progetto B produce un assembly chiamato "B.dll" e chiederà se si desidera passare tutti i riferimenti da "B.dll" per proiettare B.

Poi ad un certo punto più avanti, non è più è necessario il progetto B nella soluzione , in modo da rimuovere il progetto B. Lo switcher di riferimento sarà rilevato che i riferimenti a B utilizzati per puntare a "b.dll" e chiedere se si desidera aggiornare .

Maggiori informazioni qui: http://markkemper1.blogspot.com/2011/09/project-to-file-reference-switcher-for.html

Edit: ci sono un sacco di plug-in disponibile per risolvere il vostro scopo Dateci un'occhiata

https://visualstudiogallery.msdn.microsoft.com/197d94f6-6276-471d-853d-a5a322ccb08c

o cercare tutti

https://visualstudiogallery.msdn.microsoft.com/site/search?f%5B0%5D.Type=SearchText&f%5B0%5D.Value=reference&pageIndex=2

+0

questo è fantastico! fammi controllare se qualcuno di loro lavora nel mio caso. L'unico problema è che questi 2 plugin potrebbero non essere compatibili con VS 2015. – denfromufa

+1

spero che lo facciano .. provate a usare prima https://visualstudiogallery.msdn.microsoft.com/197d94f6-6276-471d-853d-a5a322ccb08c .. penso ..è fatto apposta per aiutarti :) – Moumit

+0

nessuno di questi addin funziona con VS 2015 !!! – denfromufa

Problemi correlati