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
3 Réponses :
Mettez à jour les fichiers Action de construction vers Contenu à l'aide de Visual Studio (par exemple, clic droit, propriétés)
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>
Cela ne semble pas fonctionner dans les versions plus récentes de MSBuild / Visual Studio.
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
etweb.release.config
mais uniquement leweb.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.
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 à
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.
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.