1
votes

Inclure web.release.config dans la sortie Web Deploy

Par défaut, lors de la publication d'un projet Web à l'aide de MSBuild / Visual Studio, les transformations de configuration sont appliquées.

Je voudrais inclure les transformations de configuration dans la sortie.

Entrée

web.config  
web.Debug.config   
web.Release.config  

Sortie par défaut

web.config

Sortie souhaitée

web.config  
web.Debug.config   
web.Release.config  


2 commentaires

Je pense que vous pouvez vous référer à ce document pour ajouter une cible personnalisée dans le Folderprofile.pubxml pour ajouter les fichiers supplémentaires.


@ PerryQian-MSFT le correctif a fonctionné merci. Tout en explorant cela, j'ai également examiné la gestion de cela via des paramètres dans MSBuild WebDeploy, mais ceux-ci ne semblaient pas prendre d'effet - j'ai posté cet exemple ci-dessous pour référence - cependant, cela n'a pris aucun effet.


3 Réponses :


1
votes

Mettez à jour les fichiers Action de construction vers Contenu à l'aide de Visual Studio (par exemple, clic droit, propriétés)

 entrez la description de l'image ici

Les tâches de publication transformeront toujours les fichiers, nous devons donc dire à MSBuild que nous ne voulons pas transformer ces fichiers lors de la publication.

Ceci peut être réalisé en passant les paramètres suivants dans MSBuild:

/ p: ProfileTransformWebConfigEnabled = false / p: MarkWebConfigAssistFilesAsExclude = false

Si vous travaillez dans Visual Studio, vous testez ce comportement en ajoutant ces propriétés à un profil de publication du dossier PublishProfile.xml

<!-- Disable Web.config Transforms -->
<ProfileTransformWebConfigEnabled>false</ProfileTransformWebConfigEnabled>
<MarkWebConfigAssistFilesAsExclude>false</MarkWebConfigAssistFilesAsExclude>


1 commentaires

Cela ne semble pas fonctionner dans les versions plus récentes de MSBuild / Visual Studio.



2
votes

Inclure web.release.config dans la sortie Web Deploy

Par défaut , lors de la publication d'un site Web, VS ne compile pas web.debug.config et web.release.config mais uniquement le web.config.

Pour réaliser ce que vous voulez, vous pouvez ajouter une cible personnalisée dans publishprofile.pubxml pour inclure ces fichiers supplémentaires. p >

Veuillez essayer ceci:

<Target Name="CustomCollectFiles">
          <ItemGroup>
            <AdditionFiles Include="xxxxxxxxxxx\Web.Debug.config;xxxxxxxxx\Web.Release.config">
            </AdditionFiles>
            <FilesForPackagingFromProject Include="%(AdditionFiles.Identity)">
               <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
            </FilesForPackagingFromProject>
          </ItemGroup>
     </Target>
     <PropertyGroup>
          <CopyAllFilesToSingleFolderForPackageDependsOn>
               CustomCollectFiles;
               $(CopyAllFilesToSingleFolderForPackageDependsOn);
          </CopyAllFilesToSingleFolderForPackageDependsOn>

          <CopyAllFilesToSingleFolderForMsdeployDependsOn>
               CustomCollectFiles;
               $(CopyAllFilesToSingleFolderForMsdeployDependsOn);
          </CopyAllFilesToSingleFolderForMsdeployDependsOn>
     </PropertyGroup>

Ensuite, vous trouverez ces fichiers dans le dossier Publish lorsque vous aurez terminé l'étape de publication.

J'espère que cela pourra vous aider.


0 commentaires

0
votes

J'utilisais Azure Dev Ops Server et je voulais exécuter la transformation Release lors de la construction, mais aussi avoir la possibilité d'exécuter des transformations supplémentaires par cible de pipeline. Dans mon cas, pour changer la chaîne de connexion SessionDb

J'ai ajouté / p: MarkWebConfigAssistFilesAsExclude = false aux paramètres de construction

J'ai défini mon web.Prod.config à Always

J'obtenais toujours une exception NullReference lors de la transformation. J'ai dû supprimer

<compilation xdt:Transform="RemoveAttributes(debug)" />

de la transformation prod config car cette propriété a été supprimée avec la transformation release config.


0 commentaires