6

Il riquadro di anteprima della finestra di dialogo Pubblicazione sul Web in Visual Studio 2012 funziona molto bene quando si è l'unico sviluppatore che lavora nella base di codici (vedere esempio di seguito): enter image description hereVisual Studio 2012 Distribuzione Web anteprima mostra tutti i file come modificati

Tuttavia, sembra cadere quando più sviluppatori lo usano. Sembra utilizzare i timestamp dei file come metodo di comparazione, quindi anche se hai ottenuto l'ultima versione da TFS, il tuo timestamp è diverso da quello pubblicato dall'altro sul server, quindi include molte modifiche fantasma nella lista (una volta trapanato, i due riquadri del diff sono uguali).

Qualcuno ha escogitato una soluzione alternativa per questo scenario?

risposta

2

Finora, no. Ho notato lo stesso problema con Team Foundation Server e la pubblicazione tramite file system. Il problema deriva dai file XML che TFS sta utilizzando per tenere traccia di ciò che è stato pubblicato l'ultima volta per un determinato profilo. Questi file esistono nella cartella Project \ Properties \ Publish Profiles. I file vengono automaticamente aggiunti al progetto e sono quasi impossibili da tenere fuori da TFS. Quando un membro del team si accorge che ciò che pubblica non corrisponde necessariamente a ciò che è sul loro computer, elimina e ricrea un nuovo profilo di pubblicazione. Completamente non una soluzione scalabile, ma se google visual studio di pubblicazione non funziona, incontrerai un sacco di persone con lo stesso problema.

+0

Interessante. Da quando ho postato questo, ho esplorato l'opzione di pubblicazione del file system, e sembra essere più intelligente in questo senso. Ignora completamente il timestamp del server; al contrario, confronta il timestamp nel file .pubxml.user w/timestamp corrente del file, pubblicando se il file è più recente. Sembra YMMV su questo problema. –

+0

Ho aggiunto questa idea alla voce utente di Visual Studio: [Migliorare il supporto per più utenti utilizzando Web Deploy Publish Preview] (https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/6504823-improve-support- per-multiple-utenti-con-web-deplo). Vai a votare! –

3

Risposta tardiva che potrebbe essere utile per coloro che utilizzano versioni di Visual Studio più recenti (2013 o successive). Specificare che checksum del file deve essere usato al posto di timestamp:

1) la pubblicazione aperta file di profilo xml: \<web project>\Properties\PublishProfiles\<publishprofile>.pubxml

2) Aggiungere <MSDeployUseChecksum>true</MSDeployUseChecksum> all'interno del gruppo di proprietà. Risultato finale dovrebbe essere simile al seguente:

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
This file is used by the publish/package process of your Web project. You can customize the behavior of this process 
by editing this MSBuild file. In order to learn more about this please visit http://go.microsoft.com/fwlink/?LinkID=208121. 
--> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <WebPublishMethod>MSDeploy</WebPublishMethod> 

    <MSDeployUseChecksum>true</MSDeployUseChecksum> 

    <!-- other configuration here --> 
    </PropertyGroup> 
    <ItemGroup> 
    <MSDeployParameterValue Include="$(DeployParameterPrefix)MdwAutomaticTestingModels-Web.config Connection String"> 
     <UpdateDestWebConfig>False</UpdateDestWebConfig> 
    </MSDeployParameterValue> 
    </ItemGroup> 
</Project> 

Maggiori dettagli possono essere trovati here.

+0

Grazie a @Alexei, la tua soluzione funziona davvero. Dovrebbe essere contrassegnato come una risposta in modo che gli altri possano trarne beneficio. Ho votato. –

Problemi correlati