2015-09-18 18 views
10

Ho sollevato un connect issue per tale comportamento.VS 2015 copie per l'output di riferimenti GAC di un riferimento di progetto indipendentemente dall'impostazione locale di copia

VS 2015 copie per l'output GAC riferimenti di un riferimento di progetto indipendentemente dall'impostazione locale della copia. VS 2010 non lo fa con la stessa soluzione & progetti, rispettando la copia locale di proprietà. L'unica soluzione che ho trovato finora è aggiungere un riferimento diretto a Microsoft.Web.Services3.dll nel Progetto A e impostarlo su copy local = false.

Procedura per riprodurre:

Project A 
|__ Project B (Project Reference, copy local = true) 
    |__Microsoft.Web.Services3.dll (GAC, copy local = false) 

attuale:

Microsoft.Web.Services3.dll viene copiato nella directory di output del Progetto A.

atteso:

Microsoft.Web.Services3.dll non viene copiato nella directory di output del Progetto A.

Qualche idea del motivo? Lo MSDN documentation indica chiaramente che le dipendenze GAC non devono essere copiate sull'output e VS 2010 rispetta questo.

+0

FYI, VS2013 rispetta anche questo (almeno con i miei casi). Probabilmente aspetterò un aggiornamento 1 a VS 2015 prima di migrare ad esso. –

+0

Sì, meglio aspettare - prima di interrompere il processo di compilazione :) – vezenkov

+1

È necessario scoprire in che modo MSBuild è riuscito a trovare quella DLL in primo luogo. Non dovrebbe essere presente nella directory di build di B, sembra che fosse. Modifica la verbosità di MSBuild su Dettagliato e pubblica le linee pertinenti dalla traccia che ottieni. –

risposta

1

Quando mi sono trasferito da VS2013 a VS2015, ho riscontrato un problema simile con diversi assembly GAC di terze parti. La soluzione per me era di andare in ogni file .csproj e aggiungere il seguente:

<PropertyGroup> 
    <DoNotCopyLocalIfInGac>true</DoNotCopyLocalIfInGac> 
</PropertyGroup> 
+0

Sembra che questa domanda sia stata da diversi mesi. Immagino che dovrei controllare che prima di rispondere alle domande a cui è più probabile la risposta altrove. –